¿Cuáles son los buenos juegos para "ganar tus alas"? [cerrado]

305

Creo que para convertirte en un buen desarrollador de juegos, necesitas hacer juegos.

Desde la perspectiva de un programador , ¿cuáles son algunos buenos juegos de nivel de entrada para ensuciarse las manos? ¿Qué habilidades y desafíos te enseña cada uno de estos juegos?

Drew
fuente

Respuestas:

217

Fugarse

Juego fácil ya que no tienes mucho estado de qué preocuparte (es una matriz de valores de ladrillo, si solo tienes un color de ladrillo, es una matriz de banderas), no hay ninguna IA, y puedes hacer un un poco de física para que la pelota rebote correctamente.

Solitario

Las reglas son un poco más complejas que Breakout y la interfaz es muy diferente. Te obliga a pensar en diferentes métodos para implementar un juego. es decir, lo que funciona en un juego no es necesariamente lo que usarías en otro.

Pac-Man

Este es bueno porque puedes trabajar en un poco de IA. Hacer que los fantasmas sigan al jugador (pero no demasiado bien; quiere que el jugador tenga una oportunidad) puede implementarse rápidamente, y tendrá un pequeño juego divertido que puede modificar y mostrar a amigos y familiares (la retroalimentación positiva siempre es algo bueno cuando estás empezando).

Creo que si buscas inspiración en los primeros videojuegos, puedes encontrar toneladas de ideas que son relativamente simples de implementar. Además, puede salirse con la suya con ilustraciones y sonidos súper simples porque de todos modos está copiando algo tan simple. Esto le permite centrarse primero en lo básico: poner en marcha su ciclo de juego, descubrir cómo llevar sus píxeles a la pantalla, reproducir un sonido, mantener la puntuación y obtener la entrada del jugador en el juego.

Casi no importa qué juego elijas primero, solo asegúrate de elegir algo simple con el que puedas obtener resultados rápidos, de esa manera puedes moverte al día siguiente y hacer otro. Y otro. Y otro: cuanto más ganes, más te esforzarás, y eventualmente estarás haciendo juegos complejos antes de que te des cuenta.

Dennis Munsie
fuente
49
+1 en Breakout. Muchos desarrolladores de juegos PRO me han dicho que cada vez que obtienen una nueva tecnología, la aprenden haciendo primero Breakout.
Jeff
2
+1 Breakout fue el primer juego que hice =). Además, estoy de acuerdo en tratar de recrear los primeros videojuegos (¡con tus propios giros!). Centrarse en conceptos, no en activos.
user384918
16
@PhillC, no, no vale la pena dividirlo
Simurr
13
Te olvidaste del tetris: fue el segundo juego que implementé en la escuela secundaria :)
Emiliano
2
¿Podrían todos ustedes dar enlaces a sus brotes? Me encantó ese juego y me gustaría probar todas las nuevas versiones
Fent
256

Recomiendo encarecidamente que los programadores novatos comiencen con el juego más simple que realmente quieran escribir . Como lo mencionó Matt Rix, una gran parte de escribir un juego versus una demostración es llevarlo a la conclusión: créditos, menús, pruebas de juego, puntajes altos, pausa, pruebas de juego, niveles de dificultad, transiciones de estado de juego limpias, juego pruebas, etc. Eso lleva al menos la mitad del tiempo que vas a poner y simplemente no es divertido. No lo es Entonces, a menos que ames el concepto y estés realmente motivado, te rendirás y seguirás adelante antes de que el juego sea un juego .

Si desea escribir un juego de rol, descubra el concepto de juego de rol más simple y manejable que se le ocurra y que quiera hacer. Lo mismo si quieres hacer un juego de disparos de ciencia ficción, o un juego de plataformas con temas de terror, o lo que sea. Elija algo que terminará, que aún querrá terminar después de que se haya hecho todo lo divertido, pero aún está viendo docenas de horas de trabajo antes de que realmente haya terminado.

¿El mejor juego para "ganar tus alas"? El que completaste. No me importa cuántas demostraciones a medias de PONG / Breakout / Galaga / Tetris hayas escrito, no serás un desarrollador de juegos hasta que hayas lanzado un juego completo.

Además, nadie quiere jugar otra versión de esos juegos de 40 años, y al menos parte del punto de escribir juegos es que la gente juegue , ¿verdad?

Bob Montgomery
fuente
3
Quiero triplicar votar esta respuesta!
Iain
2
+1 por el comentario sobre el lanzamiento real de un juego. Poner en marcha un juego es solo alrededor del 30% del proceso, en mi opinión. Constantemente iterando sobre la mecánica, puliendo todo para que se vea presentable, persiguiendo esos errores desagradables que solo ocurren en escenarios muy específicos y en realidad poder centrarse solo en lo que hay que hacer es el otro 70%.
Dennis Munsie
1
+1 por decir lo que quiero decir. Mi primer juego fue palmgadget.com/palmgo.html. Podría hacerse porque me encanta el juego Go y realmente lo uso para grabar mis juegos en el club. "Rascarse la propia picazón" primero.
ohho
16
Me gusta este consejo, pero puede ser peligroso. Después de todo, esta mentalidad es precisamente por qué tanta gente va a los foros de desarrollo de juegos y dice: "Nunca he hecho un juego antes, voy a comenzar un MMORPG". Diría que deberías comenzar con un juego que disfrutes de una selección limitada de buenos proyectos iniciales. Entonces, si realmente odias el Tetris, entonces no hagas eso. Pero haz Breakout en su lugar, no cualquier juego aleatorio que te atraiga.
jhocking
185

Publiqué esta escalera en TIGsource hace un tiempo. Comienza desde lo muy básico hasta lo muy complejo.

  • "Adivina el número" / Hangman (interfaz básica, selecciona datos de una base de datos)
  • Tic-Tac-Toe / Rock-Paper-Scissors (juego por turnos, IA del oponente)
  • Arkanoid / Pong (colisiones, velocidad de fotogramas estable, puntuación, niveles)
  • Tetris (estructuras de datos y cómo se relacionan con los juegos)
  • 1942 / Shoot-em-up (enemigos, balas)
  • juego de plataformas / pinball simple si su motor hace plataformas (colisiones basadas en la gravedad)
  • Bomberman / Pacman (movimiento basado en fichas, IA compleja del enemigo)
  • Juego de dos jugadores de cualquiera de los tipos anteriores (entradas de dos jugadores)
  • Roguelike / Diablo (gestión de inventario, múltiples IA enemigas, guardar y cargar estados complejos del juego)
  • Faceball / Wolfenstein 3D (movimiento y renderizado básico en 3D)
  • Juego basado en turnos de red (redes básicas)
  • Gimmicky juego de plataformas en tercera persona en 3D (física, movimiento complejo en 3D)
  • Juego de red en tiempo real (sincronismo cliente-servidor, retraso)
  • MMORPG (mundo persistente)
zaratustra
fuente
77
Podrías explicar mejor lo que se supone que debes aprender aquí. Sus breves notas no son muy descriptivas / útiles.
SpoonMeiser
57
Aunque es el último, creo que MMORPG necesita ir más abajo. Lista impresionante +1
は る と
66
Gran lista, aunque creo que todo el aspecto de la escalera se rompe después de Pacman. En ese punto ya sabes lo suficiente como para ir y hacer cualquier tipo de juego; No creo que necesites desarrollar Diablo antes de desarrollar Wolfenstein. Todo hasta Pacman que debes hacer en orden.
jhocking
55
"Mundo persistente" subestima las diferencias entre un MMORPG y las opciones anteriores.
Malabarba
1
También puedes manejar "Mundo persistente" en un MMORPG que no sea (por ejemplo, un roguelike).
cenizas999
64

La regla más importante de aprender programación de juegos: aprender programación es difícil. El diseño del juego de aprendizaje es difícil. Aprender a hacer un buen arte de juego o audio es difícil. Intentar hacer todas estas cosas al mismo tiempo es una receta para el fracaso. Aprende una cosa a la vez.

Corolario: programe un juego donde el diseño, el arte y el sonido ya estén hechos. Haz clones, no juegos originales.

En mis clases, siempre recomiendo estos juegos para comenzar, en orden:

1) Tetris. El arte es rectángulos de colores, que incluso un total de klutz puede dibujar en Microsoft Paint. No necesitas sonido. La programación es relativamente simple, pero aún requiere algunas cosas clave: comprender la diferencia entre el estado interno del juego y lo que se dibuja en la pantalla; poder dibujar en la pantalla, punto (probablemente involucrando sprites y bliting); poder aceptar la entrada del usuario en tiempo real en lugar de simplemente usar getch () o scanf () donde tiene que esperarlos.

2) Breakout / Arkanoid. El arte sigue siendo rectángulos coloreados, y todavía no necesitas sonido. Utiliza todos los conceptos básicos de Tetris, además de detección básica de colisión y física 2D, ya que la pelota tiene que moverse y rebotar suavemente.

3) Gradius / R-Type. Probablemente pueda encontrar algunos conjuntos de mosaicos gratuitos para hacer esto. Aquí, el fondo se desplaza, por lo que debe aprender un poco más sobre cómo funciona la memoria de gráficos, utilizando técnicas como voltear la página y doble búfer y dibujar cosas fuera de los límites de la pantalla visible. También tiendes a tener enemigos dinámicos y engendros de balas, por lo que deberás aprender a limpiar después de ti mismo (es decir, deshacerte de los enemigos y las balas que salen de la pantalla para que tu juego no pierda memoria como un tamiz).

4) Super Mario Bros. Similar al proyecto de desplazamiento anterior, excepto que el desplazamiento ahora está bajo el control del jugador y no es automático. También tiene que lidiar con la gravedad y todas las cosas divertidas de colisión que lo acompañan (como no caerse del piso solo porque estaba unos pocos píxeles arriba en el último cuadro y quiere moverse a unos pocos píxeles más abajo en el siguiente cuadro ) También tenga en cuenta que la gravedad es condicional: afecta al jugador y a algunos enemigos, pero generalmente no a las plataformas o monedas flotantes o lo que sea, que es un poco diferente del mundo real.

Si puedes hacer los cuatro, deberías poder hacer casi cualquier juego 2D que quieras; Todas las herramientas están ahí. Si quieres hacer un juego en 3D ... aprende 2D primero porque es mucho más fácil y no necesitas entender las matemáticas en profundidad y debes entender las cosas 2D de todos modos ... y luego cuando estás cómodo con eso, comience a trabajar con algunas herramientas 3D básicas (ya sea bibliotecas como Torque o Unity, o juegos de código abierto como Doom and Quake original).

¡Buena suerte!

Ian Schreiber
fuente
39

Ahora esta es una buena pregunta real. No sé dónde estás, así que me inclinaré hacia el cielo y asumiré que nunca has escrito una línea de código en tu vida. Corta cualquier parte de la nariz que te ofenda, para abusar de una frase.

Creo que en realidad voy a responder una pregunta un poco diferente de lo que me preguntaste, y voy a dar ejemplos para satisfacer la pregunta que hiciste in situ. La razón por la que lo hago de esa manera es un poco, pero creo que hay una diferencia significativa en el punto de vista: no son tanto los juegos específicos lo que importan, sino la mentalidad que esos juegos aportan a un diseñador.

¿Sabes cómo la gente habla de que se supone que debes aprender una variedad de lenguajes de programación, para comer su mentalidad y sus corazones y sus hígados, y así ganar su poderoso poder? Hay una verdad real en eso: después de tu primer lenguaje de programación puro o casi puro, incluso en lenguajes imperativos, terminarás escribiendo en gran medida funciones libres de efectos secundarios porque están mucho mejor definidas y todo lo que escribes incluso en idiomas que no sean de esa forma será mejor para eso. No importa en particular qué idioma es: haskell, ml / ocaml / smlnj, formulaONE, plantillas c ++, lo que sea, todavía aprenderá a hacer muchas clases de trabajo sin depender del estado de los efectos secundarios. La primera vez que aprende un lenguaje de programación robusto y cercano a la máquina, usted ' vamos a aprender sobre la abstracción de tipo de tamaño. La primera vez que aprende un lenguaje declarativo o restrictivo, aprenderá acerca de los límites como una herramienta discrecional. ¡La primera vez que aprendas un lenguaje de búsqueda de retroceso, aprenderás a rezar Ia! ¡I a! ¡C'thulhu F'tagn Nagn !, y luego volvemos a comer corazones e hígados, y se completa el círculo de la vida.

El diseño del juego no es diferente. No necesariamente necesita aprender ningún juego específico, en paralelo con un idioma específico, sino aprender un juego representativo emblemático que maneja esa mentalidad, como las familias características del lenguaje. Además, hay muchos hígados y corazones para comer. Consigue una galleta de pimienta.

La mordaza aquí (como lo veo al menos) es que desea cubrir una gran lista de temas. Es como marcar las competencias en una hoja de personaje: te estás poniendo a tu disposición más mecanismos para manejar una situación determinada. Sí, son nivelables, pero tener un punto o dos en tantas cosas como puedas en todos los ámbitos significa que cuando llega el momento de usar uno, no estás comenzando desde cero, y sabes qué tácticas están disponibles para que puedas escalar.

Entonces, mira.

Primero quieres cortarte los dientes. También son útiles cuando estás aprendiendo a apuntar a una nueva plataforma o cuando te estás recuperando de la amnesia. Estos están destinados a ser rápidos, no impresionantes.

En orden:

  1. Control de pantalla. Bluescreening es excelente para esto, porque entonces tienes una razón convincente para creer que estás en camino de ser Microsoft.
  2. Validación de entrada. Fooscreen, donde foo es azul para arriba, rojo para abajo, etc. Verifique todas sus teclas; hay más que suficientes colores, o puedes hacer un mapa de cuatro colores si necesitas guardar carmesí para cosas más importantes.
  3. Representación de texto y sprites. Como también tiene validación de entrada, un juego de memoria en mosaico no es una mala idea.
  4. Temporizadores Tiempo para un clon de Mario o un Arkanoid.
  5. Sonido y musica. Mejora el clon de mario. Aunque no mucho.

Una vez que los tenga, estará listo para apuntar a una plataforma, y ​​el aprendizaje puede comenzar.

Estos no están en un orden en particular. Puede reorganizarlos como mejor le parezca. Voy a dar un puñado de ejemplos con cada uno, pero no son normativos; si un juego diferente te brinda la misma experiencia y es lo suficientemente pequeño como para ser parte de una serie de lecciones, no dudes en intercambiarlo. Por razones prácticas, es bueno ser competente en renderizar e ingresar pantallas con relativa rapidez; los vas a usar mucho. Espere algunos juegos antes de intentar escribir clases de abstracción; usted no quiere ser atrapado en una abstracción ingenua.

  • Animación. Casi cualquier cosa que hagas puede requerir sprites animados. Obtenga un motor de animación independiente bajo su cinturón, incluso si es arte de programador. Hacer un simple juego de rompecabezas cuyas fichas palpitan es suficiente.
  • Puntuación compleja. ¿Conseguir a los cinco enemigos en un ala? Prima. ¿Aterrizar tres golpes seguidos? Prima. ¿Superar todo el nivel sin perder una bala? Enorme bonificación.
  • Pathfinding. Muchos juegos necesitan esto, pero un juego de defensa de la torre es el más simple. Puede comenzar con amplitud y profundidad primero si nunca lo ha hecho antes, pero no lo hará hasta que haya implementado A * desde cero (CÓDIGO NO COPIADO) al menos una vez.
  • Comportamiento enemigo. Los comportamientos automáticos tontos estarán cubiertos por su Mario, pero los comportamientos reactivos también son importantes. Esta es una buena excusa para construir un juego de tácticas o un roguelike. (Advertencia: trabajarás en el roguelike por el resto de tu vida).
  • Iluminación dinámica en 2d. Esta es también una buena razón para escribir un roguelike. El sombreado basado en arco es una forma importante de observar las bandas y la separación, lo que a su vez es importante para muchas estructuras de datos.
  • 2d Física. Esto aparece en muchos juegos, en muchos niveles de detalle. Pruebe un juego de plataformas (mario-ish) que puede ser super simplificado; un juego de tanques (scorched-earth-ish,) que se puede simplificar igualmente; y eventualmente, un juego como N the Ninja, que te hace lidiar con correr en ángulos, impulso, etc.
  • Detección de colisiones. Hay casos ridículamente simples, como Arkanoids de rejilla y clones de Mario, casos moderadamente complejos como N the Ninja y casos genuinamente complejos como juegos de física sandbox (la increíble máquina, arkanoides modernos como BreakQuest, etc.) En muchos casos puedes arreglártelas. algo así como AABB , pero si le gustan las matemáticas, podría ser útil implementar algo completo. Como mínimo, familiarícese con una biblioteca completa, como APE o Box2D.
  • Relaciones de riesgo / recompensa en la satisfacción del juego. Los juegos de dados simples (busca algo llamado "Skunk" de los años 50) y los juegos de mesa de riesgo (vida, tierra dulce) son excelentes ejemplos de formas simples y rápidas de aprender haciendo esto.
  • Variación expresiva en mecánica. Acérquese a un pequeño recuento de reglas, luego aprenda a obtener una gran cantidad de variaciones de ellas. Los juegos de naipes personalizados son una excelente manera de trabajar con esto; echa un vistazo a los mazos de Dvorak y a los juegos del mundo real como Mille Bornes, Rage y Uno, y luego crea algunos tuyos. No llegan a ser similares.
  • Contenido generado Los juegos de estrategia simples basados ​​en mapas, los roguelikes y algunos tipos de juegos de rompecabezas son excelentes maneras de aprender a hacer esto. Puntos de bonificación si es un tipo de juego que generalmente no se conoce por haber generado contenido.
  • Estilo. No jodas: esto es un gran problema. Crea un juego, luego revístalo para que sean cuatro juegos completamente diferentes. Muy diferente Uno es un juego de niños, incluso. (Piénsalo: Mega Man tiene mucho sentido como una aventura de hechicero en el infierno, o como Rogue de los X-Men, o ...) Ahora, consigue cuatro grupos de personas para anotar uno de tus juegos. Después de eso, pídales que marquen el próximo juego, en sentido antihorario, alrededor del ring, y así sucesivamente. Observe cómo cambia radicalmente su puntuación en función del tema y las expectativas previas.
  • Hacer que el jugador planifique secuencias. Los juegos de rompecabezas son las formas más limpias de hacerlo.
  • Administracion de recursos
  • Actualizaciones
  • Aumentar la presión del tiempo

... eh. Me aburrí

John Haugeland
fuente
11
Excelente respuesta Realmente decepcionante terminar allí. Sería increíble si pudieras volver a visitar esto y vincularlo de alguna manera para darle un final coherente.
Ricket
1
Para finalizar, ¿qué tal algunas instrucciones para cocinar el hígado ? giantitp.com/comics/oots0738.html
Cyclops
44
Esta es una lección de vida fantásticamente disfrazada como una publicación sobre programación de juegos.
sdasdadas
30

Tetris

Juego muy común, muchos clones de código abierto para destrozar si te quedas atascado. Enseña los conceptos básicos de gráficos 2D, manejo de entrada, puntuación, etc.

Luego toma esta idea original y dale un giro. Aprendí los conceptos básicos de gráficos en 3D / opengl escribiendo una versión en 3D de Tetris para mi clase de gráficos por computadora en la universidad.

Bryan Denny
fuente
2
O "Columnas" si eres un chico de Sega;)
Andrew Russell
Música temática de Cue Tetris ...
Nick Bedford
3
qntm.org/hatetris (bueno, carece del tema musical, pero solo quería vincularlo ...)
user384918
1
@bloots wow, eso es malvado
Bryan Denny
Woot! Aquí está mi sitio .
Steven Lu
25

GameDev.net tiene un buen artículo que recomienda una progresión de juegos para aprender progresivamente sobre el desarrollo del juego. Mi consejo favorito de la lista es pulir estos juegos. Completamente terminado, a un estado liberable.

La lista es la siguiente (algunos de estos se han dado en otras respuestas):

  1. Tetris
  2. Fugarse
  3. Desplazador lateral / Plataformas
Colin Gislason
fuente
Te perdiste Pac-Man, Galaga y Gauntlet del artículo que vinculaste
Adam Harte el
15

Me gusta comenzar a todos mis muchachos con Monopoly. Usualmente uso el "código kata" del Monopolio de Brett Schuchert como base del ejercicio, pero agrego mucho en él. Hay varias razones por las que realmente me gusta hacer esto.

  1. Me interesan mucho las buenas prácticas de codificación (patrones de diseño, TDD, SOLID, integración continua, etc.) y pongo muchas restricciones a mis desarrolladores cuando hacen este ejercicio.

  2. Casi todos conocen las reglas de Monopoly, y todo el juego se puede completar en un solo día. Esto le da a los nuevos desarrolladores una victoria rápida y realmente aumenta su compromiso.

  3. Los requisitos iniciales comienzan con los controles del teclado, pero luego agrego un requisito para los controles del mouse más tarde. Esto hace que los desarrolladores piensen en varias cosas, cómo refactorizar el código existente, programar partes cambiantes del sistema a interfaces en lugar de clases concretas, abstracciones mejores / adecuadas, qué unidad de prueba, qué no a unidad de prueba, POR QUÉ a unidad de prueba y qué hace buenas pruebas unitarias.

A veces conectamos una IA más sofisticada, a veces no. A veces trabajamos con otros juegos de mesa con una lógica un poco más compleja como Chutes y Ladders o algo así. A veces nos separamos por completo de los juegos de mesa y hacemos un juego de póker o blackjack.

La parte realmente importante, para mí, es que las personas obtienen una victoria rápida, y ven cuán flexible puede ser el software cuando sigue buenos estándares de programación. Estos ejercicios crean confianza muy rápidamente. A veces, a los desarrolladores más experimentados les gusta hacer esto por su cuenta, solo para descansar de proyectos más complicados o para practicar una nueva técnica que acaban de aprender (¿ley de demeter?).

Hokiecsgrad
fuente
66
¿Cómo implementas Monopoly en un día? Parece un proyecto mucho más grande que eso.
Michael Kristofik
Si tiene los recursos de arte listos para los desarrolladores, y sigue la guía que he vinculado anteriormente, es bastante fácil. No incluye múltiples estrategias de IA, o algunos de los aspectos más complicados de la animación y la música, pero es un juego totalmente jugable y se puede hacer fácilmente en un día. Realmente es factible, y realmente es muy divertido.
hokiecsgrad
El n. ° 3 también brindaría la experiencia del mundo real de los clientes que cambian los requisitos sobre usted después de que ya ha comenzado.
Jarett Millard
Lamentablemente, el enlace Monopolio está muerto :(
Casey
La máquina de retroceso todavía lo tiene. web.archive.org/web/20090919075257/http://…
hokiecsgrad
15

Elige tu aventura

Recibí este consejo de un amigo que comenzó a programar creando un juego, muy parecido a elegir tu libro de aventuras . Básicamente es un juego de aventura de texto simple con una salida como esta:

You are standing in a forest clearing in the middle of the night. You hear
some wolves howl in the distance. Should you:
a) make camp for the night
b) go further north
> _

Hacer un juego así debería enseñarte a hacer un gameloop, entrada de consola básica y scripting básico. Es bastante simple de implementar y fácil para un principiante, ya que no necesita un motor gráfico para escribir el juego. Los principiantes avanzados probablemente escribirían un motor de secuencias de comandos.

Spoike
fuente
77
+1 pero SOLO si solo estás aprendiendo programación. Si ya conoces la programación, no comenzaría con esto.
Jeff
1
@ Jeff: Sí, si eres un principiante completo, entonces este es un buen proyecto para comenzar. Si ha programado por un tiempo, vaya a los otros proyectos mencionados para que pueda jugar con gráficos y demás.
Spoike
8
De hecho, esta es una muy buena manera de aprender sobre scripting y desarrollo basado en datos. Crea el "motor" para esto y escribe el resto en scripts.
Nick Bedford
1
@Jeff nah, si son programadores experimentados, lo terminarán en 2 horas.
Pídales
13

En mi experiencia con programadores novatos, la progresión generalmente parece ser algo así:

  1. Apestar
  2. Tetris
  3. Enormes e increíbles 50 horas de juego RPG 3D (nota: la mayoría de las personas abandonan la programación a mitad de este paso)
davr
fuente
4. Fantasy MMORPG: P
Nick Bedford
12

Breakout, Pong o Asteroides.

Hay una gran diferencia entre un juego y un prototipo de juego . Si te tomas en serio terminar el juego de tus sueños, debes terminar tus juegos de "nivel de entrada" en el camino. Crear la parte del juego es solo la mitad de la batalla. Todas las cosas adicionales, como menús y puntajes altos, a menudo se pasan por alto o se ignoran, pero toman mucho más tiempo del que cualquiera esperaría.

Matt Rix
fuente
44
+1 por mencionar los detalles lleva mucho más tiempo del esperado.
mpen
11

Hay algunas buenas sugerencias en las otras respuestas, pero solo quiero agregar mi voto por: Comience con algo que parezca demasiado insignificante para tratar.

Pong es un buen ejemplo.

El objetivo es: hacer que el diseño del juego y el conjunto de reglas sean tan emocionantes que puedas concentrar toda tu atención en aprender lo nuevo que estás aprendiendo (un lenguaje, una plataforma, una API) y no tener que estar constantemente Tómese un descanso para descubrir cómo funciona el juego.

Una vez que comience, encontrará que el pong es en realidad un poco más complicado de lo que parece a primera vista. (Estoy enseñando a un chico a programar y está usando pong como su proyecto de aprendizaje. Agregamos algunas funciones, y ahora se está distrayendo de aprender a programar aprendiendo cómo hacer todas estas funciones geniales :)

Una vez que haya completado la aplicación # 1 hasta que esté lista para dar / vender a otros, ENTONCES tome algo un poco más complicado (Tetris, aventura o lo que quiera) pero, para comenzar a aprender una nueva tecnología, haga lo que se programa con muerte cerebral simple.

Otros ejemplos:

  • Adivina el número (entre 1 y 1000)
  • Mastermind (avanzado adivina el número).
  • SimplePaint
  • Serpiente / gusano / como se llame.

Pero, de nuevo, comience con algo que sea demasiado fácil, para que pueda completar algo y mirar hacia atrás y ver qué implica. La diferencia entre haber escrito UNA aplicación en un idioma / plataforma / SDK / motor y haber escrito aplicaciones CERO es ENORME . La diferencia entre 1 y 2, o 2 y 5, mucho menos, para que pueda dar pasos más grandes, pero haga que el paso 0 a 1 sea pequeño; ¡será más grande de lo que piensas!

Olie
fuente
2
+1 para "Comience con algo que parece demasiado insignificante" y "La diferencia entre haber escrito UNA aplicación ... y haber escrito CERO aplicaciones es ENORME"
Luc125
1
Actualización 2014: Otra buena aplicación para "aprender el idioma / tecnología" es Flappy Birdsimilar. Como programador profesional, es un trabajo de la tarde (bueno, un fin de semana para que sea "agradable") pero, mientras enseñamos a otro a programar, aprendimos que en realidad tiene muchas pequeñas complicaciones. Una vez más, uno es mucho más experiencia que cero y, una vez que tenga uno, tendrá una idea mucho mejor sobre cómo avanzar.
Olie
9

Echa un vistazo a este sitio web: 12 ideas de proyectos de juegos de informática

Algunos de estos juegos incluyen lo que otros han dicho como:

  1. Pacman
  2. Tetris
  3. Apestar

Pero también habla sobre otros juegos que podrías intentar hacer, como:

  1. Tic-Tac-Toe
  2. ¿Quién quiere ser millonario?
  3. Y un clon de Mario.

Además, da una idea de lo que debes intentar hacer primero, ya que da una sensación de dificultades para cada juego (y, por lo tanto, un plan de cómo debes abordar los juegos):

  1. Principiante
  2. Intermedio
  3. Avanzado
  4. Mejor
Thyrgle
fuente
2
+1, me encanta ese enlace. "RPG: si odias tu vida (y algunos aparentemente lo hacen), es probable que este intento del último año de gloria en la programación de videojuegos termine mal. El motor del juego en sí a menudo está bastante extendido (viajes mundiales, viajes por la ciudad, tiendas, peleas , etc.) y requiere una cantidad de esfuerzo impío "
Cyclops
5

Mucha gente comienza con Breakout porque presenta:

  • Entrada: mover una pala hacia adelante y hacia atrás
  • Colisión simple: bola que rebota en la pala, ladrillos y pared
  • Cambiando el "Estado del juego": Actualizando la puntuación cuando la pelota golpea ladrillos y quitando los ladrillos, decrementando el número de bolas cuando la pelota toca la parte inferior de la pantalla, perdiendo el juego cuando el número de bolas == 0, etc.
  • También es una introducción bastante suave a los gráficos, ya que es todo rectángulo y círculos.
Sean James
fuente
5

La parte más difícil de escribir un juego, o cualquier software, es descubrir qué hacer. ¡Necesitas absolutamente una especificación! Esa es la parte divertida de hacer un clon de un juego existente: la especificación ya existe. Su especificación es "El producto debe hacer todo lo que hace Otro producto", y si tiene una copia del otro juego a mano, entonces es bastante fácil verificar eso.

Una vez que haya descubierto lo que necesita hacer, descubrir cómo hacerlo realmente no es tan difícil si es un programador competente. No me refiero a un programador experto o experimentado; eso implicaría que ya sabes cómo hacer la mayoría de lo que estás tratando de hacer. Pero debe comprender cómo pensar en abstracciones y tener las habilidades de resolución de problemas y pensamiento lógico que son fundamentales para la programación. Si puedes hacer eso, entonces puedes hacer cualquier cosa.

Dicho esto, no estoy de acuerdo con lo que la mayoría de la gente dice acerca de tratar de aprender a escribir juegos escribiendo algo realmente simple. La recompensa es directamente proporcional al esfuerzo que le dedicas. Si aprendes a escribir juegos escribiendo un juego realmente simple, todo lo que sabrás al final es cómo escribir juegos realmente simples, y eso no te hará mucho bien.

Por otro lado, si comienzas con algo abrumador, nunca lo terminarás. Así que comience con algo moderadamente desafiante que lo haga lidiar con problemas serios. Construir un RPG de consola 2D o un juego de plataformas de desplazamiento lateral son muy buenas maneras de aprender conceptos reales de programación de juegos.

Mason Wheeler
fuente
5

Realmente depende de cuáles sean sus competencias actuales. Si eres relativamente nuevo en la programación, entonces ve con uno de los juegos específicos que la gente ha sugerido. De lo contrario, deberías pensar en qué tipo de juegos te permitirían aprovechar tu experiencia.

Cuando comencé mi primer juego, tenía cero experiencia en el desarrollo de juegos, pero había estado haciendo desarrollo de aplicaciones empresariales / de línea de negocio durante algunos años. Mi primer proyecto de juego fue un juego de estrategia por turnos, y arquitectónicamente hablando, no se veía tan diferente de una aplicación empresarial. Utilizó un sistema cliente / servidor, y la comunicación se realizó a través de un canal de servicio dúplex WCF. La mayoría de las operaciones de los jugadores se pusieron en cola como "órdenes" y se enviaron al servidor al final del turno. Todo el procesamiento de turnos tuvo lugar en el servidor, después de lo cual se enviaron actualizaciones del universo del juego a cada cliente.

Ese primer proyecto me permitió avanzar en el desarrollo del juego mientras me iniciaba en un territorio familiar. A medida que el proyecto evolucionó, aprendí a pensar más como un desarrollador de juegos y menos como un desarrollador de aplicaciones empresariales. El resultado final funcionó bastante bien, y fue un poco más impresionante que Battleship o Tic-Tac-Toe :).

Mike Strobel
fuente
4

Mordiscos e invasores del espacio

AI, gráficos, jugabilidad, controles relativamente simples, y no tienen que tener efectos de sonido o música a menos que desee agregarlos. Comencé con estos dos cuando aprendí a programar en QBasic para MS-DOS y creo que Son geniales los primeros juegos. Pac-Man sería mi otra opción.

Steve Tranby
fuente
Nunca he oído hablar de Nibbles antes, pero definitivamente voté a favor de Space Invaders.
jhocking
3

Los juegos de estilo Moonlander son geniales (donde tienes un cohete afectado por la gravedad, los jugadores controlan la dirección y el empuje, combustible limitado cuando usas el empuje). Adquiera experiencia implementando física muy simple y el sistema de colisión puede ser bastante primitivo. No hay que preocuparse por la IA y, lo más importante, es divertida y adictiva :)

Alano
fuente
2
De acuerdo, los juegos de estilo Thrust / Lunar Lander son grandes proyectos iniciales. Lidiar con la rotación y la velocidad / aceleración revelará los misterios del seno / coseno (para cualquiera que no haya tratado con ellos por un tiempo). Puede usar un mapa de mosaico estático o desplazable, y puede usar la detección de colisión sin necesidad de una respuesta de colisión muy compleja (toque algo -> explotar). Es también un buen año para pensar acerca de la optimización del sistema de control - conseguir un buen equilibrio de empuje, la gravedad y la velocidad de rotación para que se sienta a la derecha
bluescrn
@bluscrn en realidad es un gran comentario. Después de que las personas jugaran a probar mi versión flash, noté que las personas tenían diferentes opiniones sobre cómo debería sentirse. Algo de esto se atribuyó a juegos anteriores experimentados por el usuario. No era algo en lo que hubiera pensado particularmente antes de desarrollarlo.
Allan
2

¡Un tirador espacial de arriba hacia abajo como Galaga es bastante fácil y enseña bastante bien la detección de colisiones! También puede variar en dificultad, desde un nivel con enemigos estacionarios, hasta múltiples niveles que mejoran las armas y enemigos que se mueven en patrones especiales.

Ricket
fuente
1

Algo así como Gauntlet, porque necesitas un sistema de entidad, IA enemiga, recolecciones, mapas de mosaicos, detección de colisiones, puntuación, etc. Lo tiene todo, pero no de una manera abrumadora.

Iain
fuente
Diría que la IA enemiga y la detección de colisiones con un diseño arbitrario de fichas ES abrumador si tienes poca o ninguna experiencia, especialmente teniendo en cuenta la física que también tienes que hacer: fricción entre el jugador y el suelo, etc. Esto puede ser una buena opción. desafío después de algunos juegos, sin embargo
Sean James
De acuerdo, un poco abrumador para las personas que recién comienzan. Demasiados conceptos a la vez. Comience con algo que solo sea anotar e ingresar. Luego crea un juego que haga 1 o 2 cosas nuevas, como detección de colisión y enemigos. Sigue eligiendo juegos que se basan en conceptos que conoces pero que introducen algo que no; Si no conoce ninguno, no debe intentarlo. Mantenlo simple.
user384918
Sinceramente, creo que hay demasiadas cosas en un clon de Gauntlet para contar como un juego de "nivel de entrada".
PhillC
Sinceramente, creo que es más fácil codificar Gauntlet que Tetris, ya que determinar cómo se apilan los bloques entre sí, si una línea está completa y cómo eliminar líneas, son problemas abstractos bastante complicados. Gauntlet puede codificarse en menos de 1000 líneas en cualquier plataforma 2D moderna, y si no puede en la plataforma que está utilizando, sugeriría encontrar otra. De todos modos, lo sugerí precisamente porque requiere aprender todas las partes que componen un juego moderno.
Iain
Obtienes puntos extra por hacer la voz correctamente: "¡Elf disparó la comida!" "¡El mago está a punto de morir!" o mi favorito: "¡Has encontrado mi habitación TRAY-sure!"
rtperson
1

Un mini clon de Zelda es bueno y ejerce algunas habilidades que no se han mencionado mucho aquí. Desplazarse por un gran mapa de mosaicos y simples controles de movimiento de 8 vías es bueno saber. Puntos de bonificación si puedes hacer enemigos, pero no me preocuparía demasiado por eso.

coderanger
fuente
1

He hecho más de unos pocos clones de Tetris. Sin embargo, cada vez que lo hice lo hice un poco diferente. Hoy en día, usualmente hago algún tipo de clon de asteroides. También he realizado más de unas pocas derivaciones de Missile Command.

Comencé con el juego básico y luego pasé a agregarle más cosas, potenciadores, etc.

Casey
fuente
1

Siempre solía comenzar con un juego de Tanques / Gorilas / Gusanos. Le permite hacer ejercicio en una pantalla gráfica simple y leer la entrada del usuario, además de un bucle de juego que aplica gravedad al proyectil y prueba de detección de colisión.

Después de eso vendría un juego como un juego de plataformas o shoot-em-up muy simple donde necesitas leer la entrada del usuario en tiempo real, en lugar de las declaraciones INPUT que funcionan para Gorilas :)

AlexC
fuente
1

El solitario (o realmente cualquier juego de cartas) es un buen juego para ensuciarse las manos con un nuevo sistema de interfaz de usuario, ya que ejercita muchos de los widgets y mecanismos de retroalimentación de interacción del controlador que necesita usar. Además, la lógica es sencilla e inequívoca, por lo que puedes concentrarte en el aprendizaje y no tanto en el diseño del juego.

Para los juegos de simulación en tiempo real, siempre recomendaría Pong como un buen punto de partida simple, nuevamente porque el diseño es sencillo, así como la interfaz del controlador, para que pueda llegar al meollo del sistema: la simulación física.

MrCranky
fuente
1

Siempre he afirmado que si eres un programador de juegos deberías poder hacer alguna forma de Space Invaders . Diablos, el juego es lo suficientemente simple como para que tú también puedas hacer los gráficos.

Tener una selección de pequeños juegos en su cartera como el beneficio adicional de ser bastante útil, por ejemplo, si estoy aprendiendo un nuevo lenguaje o marco de programación, a menudo portaré uno de mis juegos simples para ver cómo funciona la nueva forma de hacer las cosas coincide con la forma en que fueron escritas originales.

JSmyth
fuente
1

Realmente depende de qué habilidades como programador regular ya tenga. ¿Tus matemáticas necesitan trabajo? ¿Tu conocimiento gráfico? ¿Tienes ambos en secreto?

Aunque en general creo que Tetris y Breakout también serían mis dos titulares. Cualquier cosa más fácil que eso no ofrece suficiente estímulo. Tetris es una buena prueba de cómo diseñar sus datos y algo, la ruptura es un ejemplo matemático ligero. Siempre le digo a la gente que apunte alto, el objetivo es quedarse atrapado y encontrar una solución.

Después de eso, el cielo es el límite. De nuevo, apunta alto. Pruebe un juego de plataformas con terreno inclinado, parralax y obtendrá una buena bolsa de tecnología 2D práctica. Agregue un pinball (prepárese para sentirse frustrado) y sus matemáticas mejorarán.

A partir de ahí, vaya a la tercera dimensión, aprenda habilidades básicas (animación, renderizado) y debería estar relativamente bien equipado para lidiar con una buena variedad de juegos.

Kaj
fuente
0

Yo diría que un tipo de juego de Tower Defense es el mejor lugar para comenzar. También puede comenzar modificando juegos / motores ya existentes (WarCraft III / HalfLife2 SDK / etc.) para comprender la lógica general necesaria, y luego usar su propia base de código.

Gootik
fuente
0

Mi primer juego fue algo así como Super Mario.

Moverse, evitar obstáculos, saltar. Y todas esas tareas se pueden hacer fácilmente sin ningún cálculo físico.

Es ideal para tomar una cosa 2D simple, ya que no dependerá mucho de una implementación / marco / motor específico.

SwissCoder
fuente