ruby-on-rails - 模型- View - Controller 是否与人工智能和行为树很好地配合?

标签 ruby-on-rails model-view-controller artificial-intelligence state-machine behavior-tree

我来自 MVC 背景(Flex 和 Rails),喜欢代码分离、可重用性、封装等思想。它使快速构建事物和在其他项目中重用组件变得容易。然而,在尝试构建复杂的、状态驱动的、异步的、动画的应用程序时,很难坚持 MVC 原则。

我正在尝试 create animated transitions between many nested views in an application ,这让我开始思考我是否在误导自己……你能将 MVC 的原则应用到人工智能(行为树、分层状态机、嵌套状态)的原则,比如游戏吗?这两个学科一起玩得好吗?

当事物是静态的(例如 HTML CMS 系统或其他)时,很容易让 View /图形对自身之外的任何事物都一无所知。但是当您开始添加复杂的状态驱动转换时,似乎所有内容都需要了解其他所有内容,而 MVC 几乎会妨碍您。你怎么看?

更新:

一个例子。好吧,现在我正在使用 Flex 开发一个网站。我得出的结论是,为了正确地为应用程序中的每个嵌套元素设置动画,我必须将它们视为 AI 代理。然后,每个“ View ”都有自己的行为树。也就是说,它根据上下文(选择的数据是什么等)执行一个 Action (显示和隐藏自己)。为了做到这一点,我需要一个 ViewController 类型的东西,我称它为 Presenter。所以我有一个 View (在 MXML 中布局的图形)、一个演示器(定义 View 可以根据应用程序的状态和嵌套状态执行的动画和操作)和一个演示模型,用于将数据呈现给 View (通过主持人)。我还有用于值对象的模型和用于处理 URL 和数据库调用等的 Controller ……所有普通的静态/html 类 MVC 东西。

有一段时间,我试图弄清楚如何构建这些“代理”,以便它们可以响应周围的环境(选择了什么等)。似乎一切都需要了解其他一切。然后我读到了游戏的路径/导航表/列表,并立即认为他们有一个集中存储的表,其中包含每个代理可以采取的所有预先计算的操作。所以这让我想知道他们实际上是如何构建代码的。

所有 3D 视频游戏的东西都是一个大 secret ,据我所见,其中很多都是通过图形 UI/编辑器完成的,比如定义行为树。所以我想知道他们是否使用某种 MVC 来构建他们的代理如何响应环境,以及他们如何保持他们的代码模块化和封装。

最佳答案

"Can you apply principles from MVC to principles from Artificial Intelligence (Behavior-Trees, Hierarchical State Machines, Nested States), like Games?"



当然。 99.9% 的 AI 纯粹在模型中。 Controller 将输入发送给它, View 是您在屏幕上向用户展示它的方式。

现在,如果您想开始让 AI 控制某些东西,您可能最终会嵌套概念,并且您的游戏“模型”包含一个实体模型、一个实体 Controller ,即 AI 向它发送命令,以及一个代表 Controller 可以使用的实体的感知的实体 View 。但这与它是否可以“玩得很好”是另一个问题。 MVC 是将表示和输入从逻辑和状态中分离出来,而这方面并不关心逻辑和状态的样子。

关于ruby-on-rails - 模型- View - Controller 是否与人工智能和行为树很好地配合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2083626/

相关文章:

javascript - 如何在加载表单时调用 DropDownList onchange 事件

algorithm - 2048 游戏的最佳盲算法是什么?

ruby-on-rails - 我应该将 SQL 查询放在 Rails 的什么位置?

ruby-on-rails - 如何在 Rails 4 中设置自定义字符串外键?

ruby-on-rails - 覆盖 gem 类超时的 30 秒超时

python - 使用 python 的桌面 GUI 中的 MVC 模式

ruby-on-rails - 如何将 GoDaddy MS-SQL 备份迁移到 Rails 应用程序

asp.net - 使用 ASP.NET 进行 Windows Azure Active Directory 单点登录

artificial-intelligence - 有什么开箱即用的专家系统引擎吗?

java - 是否有任何基于 "Description Logic"或基于 FOL 的推理引擎 Java 库可用?