He estado leyendo sobre Entity System Frameworks específicamente Artemis. Estoy tratando de decidir si es adecuado para mí. Trabajo estrictamente en juegos de arte de píxeles 2d basados en mosaicos, y no creo que sean tan intensivos en recursos. Siempre he usado OOP estándar con mucha herencia en el pasado.
Mi comprensión del Entity System Framework en este momento (no estoy seguro si lo entiendo completamente todavía) es:
- Las entidades no son más que identificaciones
- Los componentes no son más que datos tontos agregados a un grupo de componentes de entidades
- Los sistemas son funciones de actualización que están conectadas al mundo para manejar cada entidad que coincida con la firma del componente Sistemas
Si mi comprensión es correcta, entonces estoy teniendo problemas para conceptualizar la adición de mapas de mosaicos y árboles de comportamiento AI en este marco. Preguntaré sobre IA en el futuro.
¿Debería construirse un mosaico en este marco? ¿O debería mantenerse separado para facilitar la generación con un editor de mosaico?
Si el mosaico debe integrarse en este marco, ¿cada mosaico es una entidad diferente? ¿Y el mosaico es un sistema? ¿O es el mosaico en sí una entidad única con herencia construida a partir de él?
Si el mapa de mosaico es sperate, ¿cuál sería la mejor manera de detectar entidades de colisión contra el mapa de mosaico externo?
Entiendo que las múltiples opciones que he enumerado pueden ser correctas, pero si alguien ha hecho esto en el pasado, podrían arrojar algo de luz sobre mi confusión. ¿Quizás hay otra alternativa en la que no he pensado?
Gracias.
fuente
Respuestas:
Implementé un marco de componentes de entidad (similar a Artemis) después de haber estado en desarrollo durante un tiempo, pero no creo que hubiera hecho las cosas de manera diferente si comenzara desde una pizarra en blanco.
Tengo mi mundo totalmente separado del marco de la entidad. Simplemente no tenía sentido para mí convertir el mundo en algún tipo de entidad o colección de entidades. Mi mundo es 3D con cubos, pero creo que lo mismo se aplica a los mosaicos. Las entidades componen todo lo demás en el mundo, pero el terreno está separado. Sin embargo, cuando se eliminan los cubos, generan entidades "materiales".
La detección de colisión no es demasiado difícil de vincular. Es probable que su mundo tenga
isSolidAt(x,y)
métodos de tipo que utilizará su sistema de colisión. Honestidad, ya dije esto una vez hoy en una respuesta diferente , haz lo que tenga más sentido para ti. No está rompiendo ninguna regla al separar el mapa de mosaicos o al convertirlo en una entidad. Lo que sea que puedas entender es lo mejor. Para mí, eso era mantener el mundo separado y hacer de todo lo demás entidades.fuente
isSolidAt
método del mapa ?Agregué el mapa de mosaico como un componente separado de la entidad (con todos los mosaicos dentro) y también hay un renderizador separado para el mapa de mosaico, por lo que puedo representarlo en 3d o en 2d. Crear todos los mosaicos como entidades es posible pero costoso.
algo como eso:
El beneficio de separar el dibujo de la lógica es la idea básica del patrón MVC
fuente