我来自 MVC 背景(Flex 和 Rails),喜欢代码分离、可重用性、封装等思想。它使快速构建事物和在其他项目中重用组件变得容易。然而,在尝试构建复杂的、状态驱动的、异步的、动画的应用程序时,很难坚持 MVC 原则。
我正在尝试在应用程序中的许多嵌套视图之间创建动画转换,这让我开始思考我是否在误导自己……你能将 MVC 的原理应用到人工智能的原理(行为树、分层状态机)吗? , 嵌套状态),喜欢游戏吗?这两个学科一起玩得好吗?
当事物是静态的(例如 HTML CMS 系统或其他)时,很容易让视图/图形对自身之外的任何事物都一无所知。但是当您开始添加复杂的状态驱动转换时,似乎所有内容都需要了解其他所有内容,而 MVC 几乎会妨碍您。你怎么看?
更新:
一个例子。好吧,现在我正在使用 Flex 开发一个网站。我得出的结论是,为了正确地为应用程序中的每个嵌套元素设置动画,我必须将它们视为 AI 代理。然后,每个“视图”都有自己的行为树。也就是说,它根据上下文执行一个动作(显示和隐藏自己)(选择的数据是什么等)。为了做到这一点,我需要一个 ViewController 类型的东西,我称它为 Presenter。所以我有一个视图(在 MXML 中布局的图形)、一个演示器(定义视图可以根据应用程序的状态和嵌套状态执行的动画和操作)和一个演示模型,用于将数据呈现给视图(通过主持人)。我还有用于值对象的模型和用于处理 URL 和数据库调用等的控制器……所有普通的静态/html 类 MVC 东西。
有一段时间,我试图弄清楚如何构建这些“代理”,以便它们可以响应周围的环境(选择了什么等)。似乎一切都需要了解其他一切。然后我读到了游戏的路径/导航表/列表,并立即认为他们有一个集中存储的表,其中包含每个代理可以采取的所有预先计算的操作。所以这让我想知道他们实际上是如何构建代码的。
所有 3D 视频游戏的东西都是一个大秘密,据我所见,其中很多都是通过图形 UI/编辑器完成的,比如定义行为树。所以我想知道他们是否使用某种 MVC 来构建他们的代理如何响应环境,以及他们如何保持他们的代码模块化和封装。