Я родом из MVC (Flex и Rails) и мне нравятся идеи разделения кода, возможности повторного использования, инкапсуляции и т. Д. Это позволяет легко создавать вещи и повторно использовать компоненты в других проектах. Однако при создании сложных асинхронных анимированных приложений, управляемых состоянием, было очень трудно придерживаться принципов MVC.
Я пытаюсь создать анимированные переходы между многими вложенными представлениями в приложении , и это заставило меня задуматься о том, не вводил ли я себя в заблуждение ... Можете ли вы применить принципы из MVC к принципам из Искусственного Интеллект (Деревья поведения, Иерархические государственные машины, Вложенные состояния), как Игры? Эти две дисциплины хорошо играют вместе?
Очень просто сохранять представления / графику в неведении о чем-то вне их самих, когда все статично, например, в системе HTML CMS или чем-то еще. Но когда вы начинаете добавлять сложные переходы, управляемые состоянием, кажется, что обо всем остальном нужно знать, и MVC почти мешает. Что ты думаешь?
Обновление:
Пример. Ну, сейчас я работаю над сайтом во Flex. Я пришел к выводу, что для правильной анимации каждого вложенного элемента в приложении я должен думать о них как об агентах ИИ. Таким образом, каждое «представление» имеет свое собственное дерево поведения. То есть он выполняет действие (показывает и скрывает себя) на основе контекста (что представляют собой выбранные данные и т. Д.). Для этого мне нужна вещь типа ViewController, я называю ее Presenter. Таким образом, у меня есть View (графика, выложенная в MXML), Presenter (определяющий анимации и действия, которые View может выполнять на основе состояния и вложенных состояний приложения), и модель Presentation для представления данных в View ( через ведущего). У меня также есть Модели для объектов-значений и Контроллеры для обработки URL-адресов, вызовов базы данных и т. Д. ... все обычные статические / html-подобные вещи MVC.
Некоторое время там я пытался выяснить, как структурировать этих «агентов» так, чтобы они могли реагировать на окружающий их контекст (что выбрано и т. Д.). Казалось, что все нужно знать обо всем остальном. А потом я прочитал о Path / Navigation Table / List для игр и сразу подумал, что у них есть централизованно хранящаяся таблица всех предварительно рассчитанных действий, которые может выполнить каждый агент. Так что меня удивило, как они на самом деле структурируют свой код.
Весь материал 3D-видеоигр - большой секрет, и многое из того, что я вижу, сделано с помощью графического интерфейса пользователя / редактора, например, для определения деревьев поведения. Поэтому мне интересно, используют ли они какой-то MVC для структурирования того, как их агенты реагируют на среду, и как они хранят свой код модульным и инкапсулированным.