Vengo de un fondo MVC (Flex and Rails) y me encantan las ideas de separación de códigos, reutilización, encapsulado, etc. Hace que sea fácil construir cosas rápidamente y reutilizar componentes en otros proyectos. Sin embargo, ha sido muy difícil seguir los principios de MVC al intentar crear aplicaciones animadas complejas, impulsadas por el estado y asincrónicas.¿Model Play-Controller funciona bien con inteligencia artificial y árboles de comportamiento?
Estoy tratando de create animated transitions between many nested views in an application, y me hizo pensar si me estaba engañando o no ... ¿Se puede aplicar los principios de MVC a los principios de la Inteligencia Artificial (Árboles de Comportamiento, Máquinas de Estado Jerárquicas, Estados Anidados), ¿me gustan los juegos? ¿Esas dos disciplinas juegan muy bien juntas?
Es muy fácil mantener las vistas/gráficos ignorantes de cualquier cosa fuera de ellos cuando las cosas son estáticas, como con un sistema HTML CMS o lo que sea. Pero cuando comienzas a agregar transiciones complejas impulsadas por el estado, parece que todo necesita saber sobre todo lo demás, y el MVC casi se interpone en el camino. ¿Qué piensas?
Actualización:
Un ejemplo. Bueno, ahora mismo estoy trabajando en un sitio web en Flex. Llegué a la conclusión de que para animar correctamente cada elemento anidado en la aplicación, tengo que pensar en ellos como Agentes de IA. Cada "Vista", entonces, tiene su propio Árbol de Comportamiento. Es decir, realiza una acción (se muestra y se oculta) según el contexto (cuáles son los datos seleccionados, etc.). Para hacer eso, necesito una cosa tipo ViewController, la llamo una Presentadora. Así que tengo una Vista (los gráficos presentados en MXML), un Presentador (que define las animaciones y acciones que la Vista puede tomar en función del estado y los estados anidados de la aplicación) y un Modelo de Presentación para presentar los datos a la Vista (a través del presentador). También tengo Modelos para objetos de valor y Controladores para manejar URLs y llamadas a bases de datos, etc ... todas las cosas normales de MVC estáticas/html.
Por un tiempo intenté descubrir cómo estructurar estos "agentes" para que pudieran responder a su contexto circundante (lo que se seleccionó, etc.). Parecía que todo necesitaba estar al tanto de todo lo demás. Y luego leí acerca de una Ruta/Tabla/Lista de navegación para juegos e inmediatamente pensé que tenían una tabla almacenada centralmente de todas las acciones precalculadas que cada agente puede tomar. Eso me hizo preguntarme cómo estructuran realmente su código.
Todas las cosas de los videojuegos en 3D son un gran secreto, y gran parte de lo que veo se hace con una interfaz gráfica de usuario/editor, como la definición de árboles de comportamiento. Así que me pregunto si usan algún tipo de MVC para estructurar cómo responden sus agentes al entorno y cómo mantienen su código modular y encapsulado.
¿Puedes dar un ejemplo muy simple? La pregunta vinculada también es demasiado larga. –
Su pregunta parece relacionada con la arquitectura de la pizarra. –
ooh, esa arquitectura de pizarra parece interesante! ¡Gracias! –