Diseño de motor de juego basado en componentes [cerrado]

Resuelto a_m0d asked hace 14 años • 8 respuestas

He estado analizando el diseño de motores de juegos (centrado específicamente en motores de juegos 2D, pero también aplicable a juegos 3D) y estoy interesado en información sobre cómo hacerlo. He oído que hoy en día muchos motores están pasando a un diseño basado en componentes en lugar de la tradicional jerarquía de objetos profundos.

¿Conoce algún buen enlace con información sobre cómo se suelen implementar este tipo de diseños? He visto evolucionar su jerarquía , pero realmente no puedo encontrar muchos más con información detallada (la mayoría de ellos simplemente parecen decir "use componentes en lugar de una jerarquía", pero descubrí que se necesita un poco de esfuerzo para cambiar mi forma de pensar). entre los dos modelos).

Se agradecería cualquier buen enlace o información sobre esto, e incluso libros, aunque se preferirían enlaces y respuestas detalladas aquí.

a_m0d avatar Dec 14 '09 21:12 a_m0d
Aceptado

Actualización 07/01/2013 : Si desea ver una buena combinación de motor de juego basado en componentes con el (en mi opinión) enfoque superior de programación reactiva, eche un vistazo al motor V-Play . Integra muy bien la funcionalidad de enlace de propiedades QML de QT .

Investigamos un poco sobre CBSE en juegos en nuestra universidad y recopilé material a lo largo de los años:

CBSE en la literatura de juegos:

  • Arquitectura del motor de juego
  • Game Programming Gems 4: un sistema para gestionar entidades de juego
  • Gemas de programación de juegos 5: gestión de objetos basada en componentes
  • Game Programming Gems 5: una biblioteca de componentes genéricos
  • Game Programming Gems 6: sistema de componentes de objetos de juego
  • Desarrollo de juegos orientado a objetos
  • Architektur des Kerns einer Game-Engine und Implementierung mit Java (alemán)

Un ejemplo muy bueno y claro de un motor de juego basado en componentes en C# es el marco del juego Elephant .

Si realmente quieres saber qué componentes se leen: ¡Ingeniería de software basada en componentes! Definen un componente como:

Un componente de software es un elemento de software que se ajusta a un modelo de componente y puede implementarse y componerse de forma independiente sin modificaciones de acuerdo con un estándar de composición.

Un modelo de componentes define estándares específicos de interacción y composición. La implementación de un modelo de componentes es el conjunto dedicado de elementos de software ejecutables necesarios para respaldar la ejecución de componentes que se ajustan al modelo.

Una infraestructura de componentes de software es un conjunto de componentes de software que interactúan y están diseñados para garantizar que un sistema o subsistema de software construido utilizando esos componentes e interfaces satisfaga especificaciones de rendimiento claramente definidas.

Mi opinión después de 2 años de experiencia con CBSE en juegos es que la programación orientada a objetos es simplemente un callejón sin salida. Recuerde mi advertencia mientras observa que sus componentes se vuelven cada vez más pequeños y se parecen más a funciones empaquetadas en componentes con una gran cantidad de gastos generales inútiles. Utilice en su lugar programación funcional-reactiva . También eche un vistazo a mi nueva publicación de blog (que me llevó a esta pregunta mientras la escribía :)) sobre Por qué cambié de la arquitectura de motor de juego basada en componentes a FRP .

CBSE en artículos de juegos:

  • Desarrollo de juegos basado en componentes: ¿una solución al aumento de costos y la ampliación de los plazos?
  • Una arquitectura flexible y ampliable para juegos de ordenador (404)
  • Una arquitectura de software para juegos
  • Un marco genérico para el desarrollo de juegos (WebArchive)
  • Composición inteligente de objetos de juego mediante inyección de dependencia

CBSE en enlaces web de juegos (ordenados por relevancia):

  • Wiki de objetos basados ​​en componentes (Wiki vacía)
  • Evoluciona tu jerarquía
  • Estructura de objetos del juego: herencia versus agregación
  • Un sistema de objetos de juego basado en datos (PDF)
  • Un sistema de objetos de juego basado en datos (PPT)
  • Herramienta de creación de prototipos basada en componentes para flash
  • Teoría y práctica de la arquitectura de componentes de objetos de juegos (404)
  • Los sistemas de entidades son el futuro de los MMO
  • Foro ogre3d.org: Objetos basados ​​en componentes
  • gamedev.net: Arquitectura de sistema de entidad basada en componentes externos
  • gamedev.net: Pregunta sobre el sistema de entidades
  • Blog del sistema de entidades Brainfold (WebArchive)
Gerold Meisinger avatar Aug 16 '2010 17:08 Gerold Meisinger

Parece haber falta de información sobre el tema. Recientemente implementé este sistema y encontré un PowerPoint de GDC realmente bueno que explicaba bastante bien los detalles que a menudo se dejan atrás. Ese documento está aquí: Teoría y práctica de la arquitectura de componentes de objetos de juegos.

Además de ese PowerPoint, hay algunos buenos recursos y varios blogs . PurplePwny tiene una buena discusión y enlaces a otros recursos. Ugly Baby Studios tiene una pequeña discusión sobre la idea de cómo los componentes interactúan entre sí. ¡Buena suerte!

Noah Callaway avatar Dec 14 '2009 20:12 Noah Callaway