1

游戏开发者在使用 cocos2d 时通常会使用 MVC 吗?还是该范式与框架不太吻合?

我来自 Rails,对 MVC 的理解与 Apple 如何使用本机的东西非常不同——但我想知道 iOS 开发人员是否通常尝试在 MVC 范式中工作,即使使用像 cocos2d 这样的框架......我'还想了解使用 MVC 会是什么样子,以及会看到什么好处?

我目前正在从事的一款游戏更加模块化设计,我一直在尝试想象如何使用它进行 MVC,但看起来它最终会得到更多的文件、更多的代码,而不是真的很值得……所以我很想从社区那里得到一些关于这个话题的反馈。

4

1 回答 1

3

回答你的第一个问题:不。更多背景信息在这个线程中。

MVC 是您希望从业务逻辑(模型)中解耦的用户输入驱动程序的良好设计。为了避免两者直接对话,你引入控制器作为两者之间的中介。

然而,在游戏中情况有所不同。游戏大部分时间都不会等待用户输入,而且模型通常是轻量级的(几个变量),但通常需要了解整个系统(与其他对象的碰撞,AI 检查其他对象在做什么)。

无论用户输入如何,游戏都会在每一帧中不断推进游戏状态(模型),并在每一帧中不断渲染视图。用户输入也更像是一个连续的事件流,特别是在动作游戏中。因此,通常模型和视图通常是紧密耦合的,尽管大多数游戏开发人员至少尝试在两层之间定义清晰的边界。这也是对性能的妥协,因为(严格的)MVC 会增加相当多的开销。

除了 MVC,游戏中更常用的设计模式是基于组件的开发。通常游戏对象在很大程度上相似,但在行为、能力、武器、生命值、免疫、速度等方面可能存在细微差别。这种行为不是硬编码,而是作为组件添加到游戏对象中,然后作用于对象本身。它有点类似于 cocos2d 的动作,但不同之处在于组件通常一直处于活动状态,可以禁用/暂停,并且不仅用于动画,还用于游戏逻辑(即通过盾牌组件减少传入的伤害)。

于 2012-09-20T22:05:25.657 回答