He leído algo sobre el diseño de juegos basado en componentes, pero todavía tengo algunos problemas para averiguar cómo exactamente harías para implementarlo. ¿Hay algún buen ejemplo de juegos basados en componentes o motores de juegos que pueda leer para tener una mejor idea de esto?
fuente
Aquí hay algunos recursos que te pueden gustar:
hay este hilo increíble. No es un motor de juego en sí, pero el diseño y la discusión son geniales.
Una pregunta sobre StackOverflow sobre un tema muy similar.
Para responder a la pregunta original, el marco Elephant en C # es precisamente lo que desea: ha sido descontinuado, pero todavía existe aquí para referencia de implementación.
fuente
Este sitio comienza en una implementación básica.
La mayor parte de lo anterior está inspirado en este artículo en T = Machine
Comencé con una implementación básica inspirada en los dos enlaces anteriores. Estoy bastante seguro de que me he desviado mucho de la teoría pura de los sistemas de componentes y, sin duda, hay errores, pero podría resultar útil si está buscando algunos ejemplos simples.
Brículo (C # / XNA)
En este momento solo está cargando algunas entidades básicas, maneja algunos eventos, etc. Las ubicaciones principales que está buscando son la carpeta Engine.EntitySystem y probablemente la PlayScreen donde se crean realmente las entidades.
Crear una tienda de componentes basada en tipo simple y ocultar eso detrás de un EntityManager común fue relativamente sencillo.
El primer desafío que encontré fue cuando los sistemas individuales pueden requerir múltiples tipos de componentes (es decir, componentes físicos y InputMoveable). Para usar el lenguaje de base de datos relacional, tuve que encontrar una manera de hacer una consulta JOIN. Para eso, hice otro tipo de colección para entidades creadas a partir de las consultas de tipos de componentes coincidentes: cada colección de entidades se conecta a un evento OnEntityCreate y comprueba si coincide. Todavía hay algunos errores allí.
El segundo desafío fue en realidad crear un 'objeto de juego': los llamé plantillas. Aquí probablemente no soy muy puro de acuerdo con las especificaciones de T = Machine, pero parece funcionar. Las plantillas agrupan las instancias de componentes y permiten una composición de entidad más fácil (es decir, la bola es dibujable y física).
Espero que sea útil: los sistemas de entidad / componente pueden ser un desafío para superar algunos de los obstáculos iniciales.
fuente
Otro, que no he usado, pero revisé un poco el código, es Artemis . Bien comentado y bastante activo. Originalmente un marco de Java, pero se ha portado a C # / XNA.
fuente