¿Pulir mi proyecto actual será una mejor experiencia de aprendizaje que comenzar uno nuevo? [cerrado]

15

Empecé a programar hace muchos años. Ahora estoy tratando de hacer juegos. He leído muchas recomendaciones para comenzar a clonar algunos juegos conocidos como galaga, tetris, arkanoid, etc. También he leído que debería ir a por todo el juego (incluidos menús, sonido, puntuación, etc.).

Ayer terminé la primera versión completa de mi clon Arkanoide. Pero está lejos de terminar. Todavía puedo trabajar en él durante meses (programo como un pasatiempo en mi tiempo libre) implementando un conmutador de resolución de pantalla, reasignación de las teclas de control, potenciadores que caen de ladrillos rotos y un enorme etc.

Pero no quiero estar aprendiendo para siempre cómo clonar UN juego. Tengo la urgencia de llegar al siguiente clon para aplicar algunas ideas de diseño que encontré al desarrollar este clon Arkanoid (al mismo tiempo que leo el libro GoF y mucho código fuente del concurso de juegos Ludum Dare 21).

Entonces la pregunta es: ¿Debería seguir mejorando el clon Arkanoid hasta que tenga todas las características que tenía el juego original? ¿O debería pasar al siguiente clon (hay casi infinitos juegos para clonar) y comenzar a reparar las cosas que hice mal con el clon anterior?

Esta puede ser una pregunta muy subjetiva, así que por favor restrinja las respuestas a la forma más efectiva de aprender a hacer mis propios juegos (no clonar ideas de alguien). ¡Gracias!


ACLARACIÓN

Para aclarar lo que he implementado, hago esta lista:

Características implementadas:

  • Capacidades de rebote (la pelota rebota en paredes, ladrillos y en la barra).
  • Suena cuando rebota en ladrillos y en la barra, y cuando el jugador gana o pierde.
  • Menú de título básico (nuevo juego y solo salida). También menú en el juego y menús de ganar / perder.
  • Solo tres niveles, pero el sistema de mapas es tan fácil que no creo que me enseñe mucho (¿me equivoco?).

Características no implementadas:

  • Potenciadores al romper los ladrillos.
  • Ladrillos complejos (con más de un "punto de golpe" e invencible).
  • Mejores gráficos (no soy realmente bueno en eso).
  • Pulido de programación (use más intensamente los patrones de diseño).

Aquí hay un enlace a su página web (mínima): http://blog.acamara.es/piperine/ Me da vergüenza mostrarlo, así que no me pegues demasiado :-)

Mi pregunta estaba relacionada con las características no implementadas. Me preguntaba cuál era el camino más rápido (óptimo) para aprender. 1) implementar las características no implementadas en este proyecto que se está haciendo grande, o 2) hacer un nuevo juego que probablemente me enseñe esas lecciones y otras nuevas.


RESPONDER

Elijo @ ashes999 answer porque, en mi caso , creo que debería pulir más y tratar de "enviar" el juego. Creo que todas las otras respuestas también son importantes a tener en cuenta, así que si viniste aquí con la misma pregunta, antes de tomar una decisión apresurada, lee toda la discusión.

¡Gracias a todos!

Alejandro Cámara
fuente
Lo siento, pero decir que es una pregunta objetiva, no lo hace objetivo. Dependería de la persona , sus habilidades, objetivos y motivación, si deben cambiar los proyectos, todo lo cual lo convierte en una pregunta subjetiva . Simplemente no hay una respuesta "correcta" única a esta pregunta.
Cyclops
Tienes razón, pensé en "subjetivo" pero escribí "objetivo" (también me pasa con izquierda y derecha ...). Lo cambie.
Alejandro Cámara
Wups, lamento escuchar eso. Sin embargo, odio decir esto, pero todavía no es una buena pregunta para este sitio. El propósito de los sitios de StackExchange es crear preguntas / respuestas que sean útiles para muchas personas, no preguntas que solo se aplican a una (o algunas) personas. Además, (idealmente) debería haber una sola respuesta correcta, pero para las personas en el futuro que encuentren esta publicación, algunos podrían encontrar una respuesta mejor, y otros, una respuesta conflictiva mejor.
Cyclops
1
Sentí que no era una buena pregunta también. Pero la razón por la que lo escribí de todos modos es porque tal vez alguien está atrapado en el mismo dilema. Incluso si no hay una respuesta "buena", la discusión podría hacer que otras personas tomen su respuesta "correcta".
Alejandro Cámara
1
Personalmente, creo que el alcance de un proyecto de aprendizaje debe incluir todas las características del juego (así que implemente los potenciadores), pero después de eso, llame al proyecto terminado y continúe; no te molestes en pulir gráficos.
jhocking

Respuestas:

32

No estoy de acuerdo con la respuesta de Patrick por completo. Si desea tener éxito como desarrollador de juegos, la habilidad número uno que necesita aprender es cómo tomar una idea y enviar un juego completo y pulido.

Lo que se dará cuenta con el tiempo (que es lo que me di cuenta después de varios años) es que la programación es solo una pequeña parte de su juego. Es fácil porque es divertido. Pero seguir solo con la programación te dejará con un rastro de pruebas de conceptos y demostraciones incompletas.

En su lugar, sugeriría encarecidamente que coloque un sitio web y un blog (Wordpress es ideal para este tipo de cosas), termine sus juegos (comenzando con Arkanoid) y libérelos en la naturaleza.

Además, es clave darse cuenta de que si haces esto, controlas cuándo se termina el juego. Si quieres 1000 niveles con 10 características principales, está bien. Si quieres 10 niveles con 3 características principales, está bien. (De hecho, recomiendo proyectos más pequeños con mayor frecuencia, porque aprende más y se enfoca mucho en pulir de esa manera).

Editar: En respuesta a las personas que no están de acuerdo, siento que necesito aclarar. Si creaste un juego solo para un propósito / experimento (que hago todo el tiempo), por supuesto, corta el alcance y envíalo. Nadie dijo que Arkanoid necesita 1000 niveles para ser un juego pulido; solo crea niveles suficientes para que sea, en tu opinión, divertido y sigue adelante.

ES posible pasar años en un juego y nunca enviar. Pero siento que es mucho más fácil caer en el otro agujero de solo hacer demostraciones técnicas y prototipos para siempre. Me llevó más de 10 años dejar de hacerlo yo mismo.

cenizas999
fuente
3
+1 "el envío es una característica (¿requerida?)", Aunque en este caso también se podría ver el clon Arkanoid como un prototipo, y los prototipos están destinados a ser desechados cuando un concepto está probado o refutado.
Oskar Duveborn
2
@Oskar es más fácil hacer 1000 prototipos que enviar un juego. En última instancia, el envío lo hará exitoso, mientras que los prototipos solo aumentan algunas habilidades de codificación.
cenizas999
2
¿Por qué descartar "solo aumentar algunas habilidades de codificación"? Él está preguntando específicamente sobre la experiencia de aprendizaje.
jhocking
@jhocking por la respuesta de Patrick. Mi respuesta es específicamente enfocarme más allá de las habilidades de codificación.
cenizas999
1
@Yannbane Si la gente lo juega y piensa "sí, es un juego completo", incluso si es un juego corto, está completo. Incompleto es generalmente juegos rotos o juegos con, como, un nivel. Una vez que lo envíe por la puerta, ya está.
cenizas999
8

Sugeriría una síntesis de las dos respuestas anteriores. Básicamente, estoy de acuerdo en que es enormemente importante aprender cómo tomar una idea y enviar un juego completo y pulido. Internet está plagado de proyectos a medio terminar que alguien comenzó y luego se aburrió. La capacidad de seguir un proyecto de principio a fin, lo que yo llamo "capacidad de finalización", es rara y preciosa, y se obtiene al obligarse a practicarlo.

Sin embargo, todavía no estás en esa etapa de tu aprendizaje; No recomendaría hacer esto con su primer juego, sino que haga algunos juegos más pequeños para aprender antes de trabajar en su primer proyecto completo.

(aparte: nunca antes había señalado esto, pero ahora que lo estoy pensando, creo que la capacidad de acabado es lo principal que veo separando a los desarrolladores experimentados de los novatos)


ADICIÓN: Creo que muchos de los desacuerdos entre las respuestas se reducen a diferentes suposiciones sobre dónde se encuentra en su proceso. Por ejemplo, cuando dijo "Terminé la primera versión completa de mi clon de Arkanoid" que podría significar muchas cosas diferentes. En mi caso, dado que antes dijo "También he leído que debería ir por todo el juego (incluidos menús, sonido, puntaje", entonces asumo que realmente implementó esas cosas y me pregunta si debería continuar aún más. caso, diría que no; llame a este proyecto terminado y pase al siguiente proyecto.

Sin embargo, eso es solo una suposición de mi parte; en realidad no dijo que había hecho eso, solo que lo había leído. Si él no ha hecho eso, entonces diría que no sigas adelante hasta que hayas hecho eso.

jhocking
fuente
1
+1 ¡Golpéame! Parece que recién estás comenzando, así que es más importante hacer la mayor cantidad de cosas posible y aprender, aprender y aprender. A medida que mejora, puede concentrarse en el esmalte. De lo contrario, terminarás pasando 2 años en tu primer juego.
NoobsArePeople2
1
Discrepar. Puedes pasar diez años codificando y nunca enviar un solo juego. O puede enviar un clon de Arkanoid simple en sus primeros seis meses. Creo que este último lo convierte en un desarrollador más fuerte en general, mientras que el primero solo ayuda a sus habilidades de desarrollo de software (y no tanto, nunca piensa en herramientas, ciclo de vida, etc., solo codificación).
cenizas999
Bueno, no dije 10 años, ¿verdad? Aún así, es una pregunta si pasar un año codificando un montón de ejercicios de práctica antes del proyecto completo de 6 meses es mejor que hacer directamente el proyecto completo de 6 meses como su primer proyecto. Esta es una pregunta importante en la enseñanza que hago; ¿Es mejor que los estudiantes pasen un semestre haciendo un montón de proyectos pequeños o un solo proyecto grande que abarque toda la clase? Personalmente me inclino por "muchos proyectos pequeños para estudiantes de pregrado, un solo gran proyecto en la escuela de posgrado".
jhocking
Mi postura es que, tan importante como es el proyecto completo, para que ese proyecto tenga éxito, primero debe haber aprendido los conceptos básicos de un montón de proyectos anteriores.
jhocking
1
¿Cuáles 2 respuestas anteriores? A partir de ahora, este está en el puesto # 2, por votos
ADB
5

Creo que tienes la idea correcta de que debes pasar al siguiente proyecto ahora. ¡Creo que esto es porque ya aprendiste de tu primera y quieres aplicar lo que has aprendido! Una vez que disminuya la velocidad para aprender los conceptos básicos, entonces ese sería el momento de clonar características más profundas de las que puede seguir aprendiendo.

Recuerda que estás trabajando en habilidades de programación, no en diseño de juegos, por lo que quieres poder programar cualquier diseño de juego cuando hayas terminado de aprender.

Patrick Hughes
fuente
3
Si bien estoy de acuerdo con @ ashes999 y con usted igualmente, creo que en el contexto declarado de OP, él está experimentando con implementaciones, aprendiendo a escribir diferentes tipos de juegos. En este caso, creo que debería estar a favor de pasar a lo siguiente.
Ingeniero
En realidad, dio a entender que quiere aprender el diseño del juego y no solo la programación del juego. En su última oración dijo "la forma más efectiva de aprender a hacer mis propios juegos (no clonar ideas de alguien)".
jhocking
2

¿Por qué no hacer que el clon sea "tuyo"? Agregue algunos nuevos giros interesantes que lo mantendrán interesado.

Hay una ventaja al iniciar "su propio" proyecto, usted siente que nunca se había hecho antes. La realidad es que alguien probablemente ya tenga algo similar. A menos que planees inventar un nuevo género de juegos, te sugiero que hagas tuyos estos "clones".

Ejemplo, mi amigo en la universidad creó un "clon" de pong. Lo hizo suyo, agregó un tipo de juego completamente nuevo en el que un encendido le permitía conducir un dulce tanque durante unos 15 segundos y destruir la mayor cantidad de ladrillos posible.

La mejor manera de aprender el desarrollo del juego (arte, código, diseño) es simplemente hacerlo. Puede que no lo hagas bien al principio, ¡pero la clave es seguir y escribir más código, dibujar más animaciones y diseñar más niveles! En mi opinión, no importa si estás "clonando" algo siempre que lo hagas tuyo, lo sigas haciendo, lo hagas interesante y ¡diviértete!

KRB
fuente
2

Para responder tu pregunta, , pulir su proyecto actual será una mejor experiencia de aprendizaje que comenzar uno nuevo.

1) Necesitas acostumbrarte a terminar las cosas. Eso en si mismo es una experiencia de aprendizaje.

2) Las tareas que eres "demasiado flojo para agregar" (por falta de un término mejor) pueden tener un montón de lecciones de desarrollo de juegos incrustadas en ellas, que simplemente estás omitiendo por completo.

3) Si estás aburrido de Arkanoid, siempre puedes dejarlo de lado y trabajar en otra cosa por el momento. No hay nada de malo en ello.

1) Demasiadas cosas sin terminar es malo. Realmente no puede usar su producto inacabado para mostrar sus habilidades de manera efectiva.

Esto se debe a que tener una variedad de cosas sin terminar es como tener un armario lleno de basura. Algunos de ellos parecen útiles, pero en realidad todo es muy inútil, y la realidad de la industria del juego es que pocos apreciarán su "basura" (juegos sin terminar).

Los juegos sin terminar son demasiado comunes. La gente los saca y dice, "duh, este juego fue sapposa ser StreetFighter ... ahora puedes moverte de un lado a otro ..." Impresionante . Nadie puede ver en tu cabeza cómo fue el juego "sapposa". Solo lo ven por lo que es, sin terminar.

Un juego inacabado es como una tarta a medio cocer. Algunas personas pueden apreciarlo, pero en realidad tiene un sabor desagradable, y 20 minutos más en el horno podrían hacer que lo que ya has hecho a medias sea delicioso para todos.

2) Las características en las que está evitando trabajar pueden tener algunas lecciones muy valiosas.

Las cosas que te resiste a terminar:

Características no implementadas:

  • Potenciadores al romper los ladrillos.
  • Ladrillos complejos (con más de un "punto de golpe" e invencible).
  • Mejores gráficos (no soy realmente bueno en eso).
  • Pulido de programación (use más intensamente los patrones de diseño).

Algunas de estas cosas se pueden omitir. Por ejemplo, "Use más intensamente los patrones de diseño". Refactorizar de esta manera es una pérdida de tiempo para un proyecto favorito, para aplicar esto solo debe comenzar un nuevo proyecto.

Algunos de estos son fáciles. Por ejemplo, ladrillos complejos. Algunos de estos son en realidad mucho trabajo . Los potenciadores no son fáciles, requieren que incluyas elementos de construcción como pistolas, balas, requerirían la adición de un código de intersección de rayos.

Creo que lo que estás viendo es "poner el andamio en su lugar fue muy fácil ... y mira que casi está hecho. Terminar sería mucho trabajo, bien podría parar ahora". Sí, erigir el marco de madera para una casa también es "fácil", y puede ser la mitad del trabajo. Paneles de yeso, electricidad, fontanería, son todos "detalles". Pero al no terminar la casa, nadie "comprará" lo buena que sería la casa , si tan solo la hubieras terminado.

3) Si estás aburrido de lo que estás trabajando, no hay nada de malo en comenzar algo más.

Esto no significa basura en lo que estás trabajando, pero no hay nada malo en pasar un mes o dos pensando en otras cosas o comenzar un nuevo juego. Puede volver a Arkanoid con una nueva perspectiva.

También un punto final. Además de desarrollar todas las características esperadas de Arkanoid, es aún más interesante darle su propio toque. Entonces, en lugar de detenerte en tu clon, debes ir un paso más allá e innovar en el juego original.

bobobobo
fuente
1

La respuesta correcta realmente depende de lo que quieras hacer a continuación. Si pasa a algo nuevo, puede arriesgarse a encontrarse resolviendo los mismos viejos problemas una vez más y sin extender realmente sus habilidades, pero puede pasar a algo nuevo. Si continúa puliendo, hay cosas útiles que aprender de la breve lista que dio, y lo mantendrán bien en el futuro, pero aún está trabajando en la misma base de código anterior.

Lo que recomendaría, y esta es una opinión puramente personal, es pasar a algo nuevo y guardar el esmalte para eso. Al mismo tiempo, intenta estirarte con algo nuevo. Entonces, si actualmente no está utilizando una API 3D, aprenda una y úsela. Si está usando uno, aprenda el otro y úselo. O suba a un nivel más avanzado en el que está utilizando. Incluya un mejor sonido, física o motor de entrada desde el primer momento. Lo que sea, lo que veo como lo importante es salir un poco de tu zona de confort actual y desarrollar más habilidades y conocimientos, mientras te diviertes haciéndolo.

Maximus Minimus
fuente