Posible duplicado:
¿Dónde puedo encontrar buenos ejemplos (bien organizados) de código de juego?
He codificado varios juegos de C ++ y ahora estoy construyendo mi propio motor y editor de juegos.
Tengo algunas dudas sobre el diseño y deseo encontrar excelentes ejemplos a seguir.
¿Cuál es el mejor diseñado en tu opinión?
Debe estar orientado a objetos. El lenguaje de programación no importa, pero prefiero en este orden: C ++, C #, Java u otro similar.
EDITADO: Para aclarar más, no estoy interesado en el código específico del juego. Quiero motores de juegos de uso general.
EDITADO: Este artículo explica qué es un motor de juego: motor de juego en wikipedia y aquí hay una lista de motores de juego conocidos: lista de motores de juego en wikipedia
fuente
Respuestas:
Creo que la mejor manera de construir un motor de juego es comenzar con lo que ya sabes bastante bien y agregar esas características que son tediosas o repetitivas.
Por ejemplo, hago mucho con Python / pygame (que es un contenedor SDL). Disfruto bastante del sistema, pero hubo tres cosas que me molestaron:
pudiera agregar fácilmente a mis juegos.
Fue relativamente fácil crear un contenedor orientado a objetos en torno a estas características. Echa un vistazo al capítulo 10 y la documentación de Game Engine disponible aquí: http://aharrisbooks.net/pythonGame/
(Esto fue escrito como parte de un libro, pero eres bienvenido al motor del juego incluso si no quieres el libro).
El Capítulo 10 explica la motivación y las técnicas para construir un motor de juego 2D básico. Podrías disfrutarlo mientras construyes el tuyo. El idioma real no es tan importante (excepto que, por supuesto, necesitará un lenguaje OOP para admitir OOP). Si ya está utilizando SDL con C ++, puede comenzar adaptando mi motor a C ++ / SDL.
fuente
El venerable diseño del motor Quake (ID tech) ha resistido la prueba del tiempo y es probablemente el diseño de motor de juego más exitoso de todos los tiempos. Todo, además del renderizador, no ha cambiado en gran medida desde fines de los 90 y todavía se usa en juegos modernos como ETQW.
El código fuente completo para cuatro iteraciones de este motor (Quake 1 a 3, más Wolf ET) está disponible bajo la GPL. Probablemente hay más de un centenar de motores de juego basados en Quake desarrollados activamente y apoyados por la comunidad que los mantienen relevantes en la era moderna. Especialmente vale la pena ver XreaL por su fantástico renderizador y ioQuake3 por su fiel mantenimiento de Quake 3 optimizado para hardware moderno. Además, para las versiones de identificación "oficiales" más recientes del motor, también está disponible la lógica del juego (no todo el motor).
Incluso si no termina utilizando este motor de juego, es digno de estudio por su arquitectura de separación cliente-servidor bien pensada y la segregación de la lógica del juego de los detalles de bajo nivel.
fuente
La biblioteca de renderizado de Ogre3D está bastante cerca del código del motor y, según todas las cuentas que he escuchado, está muy bien diseñada y es muy original.
http://www.ogre3d.org/
fuente
Cuando hablamos del motor del juego, supongo que estás pensando en algo que no sea el motor de renderizado, el motor de sonido, el motor de física, el motor de entrada, etc.
Por lo tanto, puede estar pensando en la arquitectura del juego, la IA o el diseño de patrones / sistemas, etc., que se utilizan para estructurar un software en la gestión de datos y otros componentes para crear algún tipo de escena / thater / ilusion, produciendo así un conjunto de reglas manejables para ajustar para crear un "videojuego" real.
Esta es la capa superior real de un videojuego, e incluso intenté aprender un poco al respecto, es vasta, complicada y requiere mucho conocimiento en todas las demás materias. Imagina que quieres recrear una realidad alternativa de la nada, rastrear y calcular cada evento, y regenerar datos precisos de ellos, en cualquier momento: para cada tipo de juego hay algún tipo de motor de juego de subconjunto, y yo no ' No creo que sea posible hacer un motor genérico que sea matemáticamente lo suficientemente rápido. Incluso para un juego en el que controlas un solo personaje, todavía hay muchas cosas que pueden variar y que pueden requerir que el juego cambie toda la arquitectura.
La industria del juego no está tan bien atendida por el código abierto como otros campos de las ciencias de la computación, solo porque el entretenimiento tiene diferentes tipos de licencias, que implican licencias artísticas: el producto del juego solo lo paga un cliente, y AFAIK, solo hay pocos motores que parecen lo suficientemente buenos para trabajar para usted: Hord3d, NeoAxis, blendelf, Panda3D. Pero no puedo asegurarle que serán tan fáciles de usar como herramientas como Unity, Torque, C4 y otras; ten en cuenta que un motor de juego es, con el procesador gráfico, creo que el tipo de software más difícil que encontrarás en la creación de juegos.
fuente
Para mí, usar Python con Pygame es una buena solución. Tal vez Python es un poco lento, pero para las computadoras de hoy y si solo intentas optimizar tu juego, esto no importa. Pygame tiene una muy buena documentación en el sitio original de pygame. Pero primero tome el comienzo de un tutorial para aprender algunos conceptos básicos. Para la optimización de la velocidad (conversión de imágenes, ...) necesitará otros ejemplos que son fáciles de encontrar.
fuente