¿Cuáles son algunos buenos recursos en el diseño de motores de juegos 2D?

StackOverflow https://stackoverflow.com/questions/179735

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy perdiendo el tiempo con el desarrollo de juegos 2D utilizando C ++ y DirectX en mi tiempo libre. Estoy descubriendo que el enfoque de modelado de dominio de problema empresarial no ayuda tanto como me gustaría;)

Estoy más o menos buscando una " mejores prácticas " Equivalente al diseño del motor de juego básico. Cómo deben interactuar las entidades entre sí, cómo deben representarse las animaciones y los sonidos en un mundo ideal, y así sucesivamente.

¿Alguien tiene buenos recursos que pueda recomendar?

¿Fue útil?

Solución

Gamedev.net suele ser el lugar donde me dirijo para saber qué otras personas en la comunidad de desarrollo de juegos están haciendo.

Dicho esto, me temo que encontrará que la idea de " mejores prácticas " En el desarrollo del juego es más volátil que la mayoría. Los juegos tienden a ser aplicaciones tan especializadas que es casi imposible dar una talla única para todos respuestas Lo que funciona bien para Tetris será inútil con los asteroides, y un modelo que funciona perfectamente para Halo probablemente fracasará miserablemente para Mario.

También encontrará rápidamente que no existe tal cosa como un " estándar de la industria " Para formatos de textura, malla, nivel, sonido o animación. Cada uno solo saca su propio rollo o usa lo que sea conveniente para la plataforma. Ocasionalmente ves cosas como COLLADA , lo cual es bueno, pero sigue siendo solo un formato intermedio diseñado para facilitar la escritura de los exportadores .

Si eres nuevo en el desarrollo de juegos, mi consejo sería este: no te mates por la estructura de tu código en tu primer intento. Prueba un juego simple, como asteroides, y simplemente piratea hasta que funcione, sin importar cómo " feo " el código es. Use formatos sencillos con los que esté familiarizado, sin preocuparse de qué tan bien resistirán en proyectos más grandes. No te preocupes por los complementos, las máscaras, los editores o cualquiera de esas otras pelusas. ¡Sólo hazlo funcionar! Luego, cuando hayas terminado con ese primer juego importante, elige otro, y esta vez limpia uno o dos aspectos de tu código (¡pero no te pases por la borda!) ¡Desde allí, itera!

Te prometo que esto te hará llegar más rápido que cualquier cantidad de búsqueda en línea de la forma correcta " Alguna vez podría (esto viene de alguien que ha hecho MUCHO pinchando).

Y un último pensamiento para ti: si te sientes más cómodo trabajando en un espacio mejor definido, echa un vistazo a XNA o una biblioteca similar. Predefinirán algunos de los " mejores " Formatos para usar y herramientas para trabajar con ellos, lo que elimina algunas de las conjeturas iniciales.

Buena suerte y, sobre todo, recuerda: ¡los juegos (y su desarrollo) deben ser DIVERTIDOS! ¡No te dejes atrapar por las cosas pequeñas!

Otros consejos

Haz un juego. Después de que hayas terminado, haz otra. Mira lo que te gustó y lo que no te gustó y luego crea otro.

En serio, puedes leer todas las " mejores prácticas " Guías para el diseño de juegos que te gustaría, pero al final todo se reduce a la experiencia. La única forma de obtener experiencia es sentarte y escribir un juego. Después de hacer esto varias veces, obtendrás una buena mejor idea de cómo escribir un juego.

Casi cualquier libro que tenga Andre Lamothe como uno de los colaboradores.

GameDev también tiene muchos artículos.

No puedo estar más de acuerdo contigo: las aplicaciones empresariales no te preparan para la programación de juegos.

He creado algunos juegos a pequeña escala en python, java, html / php y perl. La estructura básica de un juego, como probablemente sepas, es:

Loop principal:
& nbsp; & nbsp; handleInput ()
& nbsp; & nbsp; updateGameLogic ()
& nbsp; & nbsp; renderImages ()

Ahora, eso está muy bien para los juegos de una sola pantalla y de un solo hilo, como cualquier cosa de los 70 u 80. Pero no considero que esta estructura sea especialmente adecuada para juegos de múltiples pantallas (como los juegos de rol) o algo más exótico. No se enrosca muy bien. El código se vuelve bastante raro, ya que necesita manejar una variedad de entradas. No se escala bien.

Sin embargo, antes de golpear demasiado esta metáfora, ten en cuenta que este es un EXCELENTE lugar para comenzar. Iría tan lejos como para recomendar el aprendizaje de Python / Pygame y comenzar a crear juegos con esa herramienta en lugar de C ++, lo que complica el proceso de diseño e implementación. Cuando prototipos en Python, verás que el juego toma forma mucho más rápido y te encuentras con problemas independientes del idioma.

Para mí, los aspectos más difíciles y que más tiempo consumen en la programación de juegos son los recursos gráficos y de sonido. Si bien soy un poco un nerd de audio y un músico aficionado, crear música creíble y apropiada y SFX es un proyecto por sí solo. No tengo talento gráfico, por lo que debo confiar en la modificación de imágenes existentes o en el uso de las disponibles de forma gratuita. Afortunadamente, hay una amplia variedad de fuentes gratuitas disponibles que se pueden usar para juegos (y poco más, ya que son casi universalmente malas).

Finalmente, no hay nada como el código abierto para ver cómo otros proyectos manejan esto. Battle of Westnoth es un juego maduro de tamaño mediano. Es posible que desee ver lo que está pasando allí. Una vez más, los juegos en Python a menudo hacen que su código fuente esté disponible, por lo que puedes ver cientos de proyectos allí. También puedes descompilar las ROMs de 2600 Atari, pero eso no te dirá mucho sobre la programación de hoy. El antiguo VCS era un dispositivo dedicado que manejaba sus aplicaciones de una manera muy dependiente del sistema. :-D

Finalmente, también me gusta Andre LaMothe. Tengo su viejo libro de 1993 que tiene un millón de páginas. Aunque sigue siendo una buena referencia sobre algunas ideas genéricas de juegos, muchas de ellas se ven evitadas por la disponibilidad de bibliotecas y marcos gratuitos disponibles que no existían en ese entonces.

Buena suerte con tu proyecto.

Ya que no se ha mencionado aún, ¿por qué no empezar por mirar un motor existente que se ha lanzado a la comunidad? Ya que estás hablando en 2D, volvería y recomendaría algo como Abuso . Sí, es antiguo y la mayoría de los bits interesantes están en Lisp, pero el juego se hizo muy popular por un tiempo, lo que significa que estaban haciendo algo bien.

A medida que sucede, creo que el hecho de que gran parte del juego original estaba en Lisp es una lección muy útil. Elija el idioma / herramienta más robusto y no se preocupe por el rendimiento. Siempre puedes optimizar las partes lentas en C más adelante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top