Estoy tratando de entender el diseño de entidades basado en componentes.
Mi primer paso fue crear varios componentes que pudieran agregarse a un objeto. Para cada tipo de componente, tenía un administrador, que llamaría a la función de actualización de cada componente, pasando cosas como el estado del teclado, etc., según sea necesario.
Lo siguiente que hice fue eliminar el objeto y solo tener cada componente con un Id. Entonces, un objeto se define por componentes que tienen los mismos ID.
Ahora, estoy pensando que no necesito un administrador para todos mis componentes, por ejemplo, tengo un SizeComponent
, que solo tiene una Size
propiedad). Como resultado SizeComponent
, no tiene un método de actualización, y el método de actualización del administrador no hace nada.
Mi primer pensamiento fue tener una ObjectProperty
clase que los componentes pudieran consultar, en lugar de tenerlos como propiedades de los componentes. Entonces un objeto tendría un número de ObjectProperty
y ObjectComponent
. Los componentes tendrían una lógica de actualización que consulta las propiedades del objeto. El gerente administraría la llamada al método de actualización del componente.
Esto me parece una ingeniería excesiva, pero no creo que pueda deshacerme de los componentes, porque necesito una forma para que los gerentes sepan qué objetos necesitan qué lógica de componente ejecutar (de lo contrario, simplemente eliminaría el componente completamente e inserte su lógica de actualización en el administrador).
- Está presente (que tiene
ObjectProperty
,ObjectComponent
yComponentManager
clases) más de la ingeniería? - ¿Cuál sería una buena alternativa?
RenderingComponent
y a PhysicsComponent
. ¿Estoy pensando demasiado en la decisión de dónde colocar la propiedad? ¿Debo pegarlo en cualquiera de los dos y luego hacer que la otra consulta sea un objeto para el componente que tiene la propiedad necesaria?
PhysicalStateInstance
(uno por objeto) junto con un GravityPhysicsShared
(uno por juego); Sin embargo, estoy tentado a decir que esto es aventurarse en los reinos de la euforia de los arquitectos, no se arme en un hoyo (exactamente lo que hice con mi primer sistema de componentes). BESO.
SizeComponent
exageración es excesivo, puede suponer que la mayoría de los objetos tienen un tamaño, es el renderizado, la inteligencia artificial y la física donde se usa el modelo de componentes; El tamaño siempre se comportará igual, por lo que puede compartir ese código.