在游戏中使用MVC有什么约定吗? (有好处)

时间:2012-09-20 19:53:32

标签: cocos2d-iphone

游戏开发人员在使用cocos2d时通常会使用MVC吗?或者这种范式是否真的不适合框架?

我来自Rails,对于MVC的理解与苹果公司如何使用本机的东西有着截然不同的理解 - 但我想知道,即使是像cocos2d这样的框架,iOS开发人员也试图在MVC范例中工作。 ..我也想知道使用MVC可能会是什么样子,会有什么好处?

我目前正在使用的游戏更加模块化设计,我一直试图想象我如何用它做MVC,但似乎最终会有更多的文件,更多的代码,并不值得......所以我很乐意从社区获得有关此主题的一些反馈。

1 个答案:

答案 0 :(得分:3)

回答你的第一个问题:不。更多background info in this thread

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

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

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

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