Esta es una pregunta de diseño ... Estoy seguro de que esto podría generalizarse más, pero me está costando mucho. Me pregunto sobre el diseño para las interacciones de objetos del juego: aquí está mi ejemplo (rompecabezas 2D-plataforma).
Digamos que el jugador está intentando progresar a través de un nivel. Hay muchas luces que pueden apuntar en diferentes direcciones. Aquí hay un ejemplo de cómo estos objetos ligeros podrían interactuar ...
- One light proyecta una plataforma que permite al jugador cruzar una brecha
- Una luz disminuye los coeficientes de fricción de todo lo que toca, otra la aumenta.
- Una luz anula los efectos de todas las luces, lo que haría que la plataforma desapareciera mientras la luz está encendida y anulara los modificadores de fricción.
- Etc ...
¿Cuál es la mejor manera de abordar este problema cuando se utiliza una arquitectura de componentes? Los componentes para cada objeto principal parecen obvios, así como una forma limpia de definir sus efectos en el medio ambiente. ¿Una clase para "resolver" la interacción (parece que eso podría convertirse en un desastre rápidamente)? ¿Algún uso del patrón decorador para crear objetos combinados para aquellos que están interactuando en un momento dado? ¿Una estructura de datos que se presta a esto?
Además, ¿conectar audio a estas interacciones? Parece que conectar audio al sistema sería como conectar cualquier otra propiedad, como la visibilidad o el movimiento / colisión del jugador.
Obviamente, a medida que se agreguen más componentes, sería bueno si hubiera un sistema robusto que pudiera manejar otros nuevos con poca modificación, pero no estoy familiarizado con cómo diseñarlo.
Otra información: El motor que estoy usando es un motor XNA llamado IceCream .