Model view controller MVC用于非休闲游戏,还是另一种设计模式?

Model view controller MVC用于非休闲游戏,还是另一种设计模式?,model-view-controller,Model View Controller,使用MVC来编写一个严肃的游戏是一个好的设计和明智的举动,还是有另一种设计模式在处理此类软件时更有意义。有人用MVC做过非休闲游戏吗?你的经历是什么 我正在用objective-c w/Cocoa设计一个游戏引擎,它不使用任何Cocoa UI组件,只使用非常基本的组件,即创建一个全屏窗口并获取绘图上下文。在我使用3D或2D之前所做的引擎工作中,大多数绘图软件都与描述绘图内容的软件结合在一起。原因往往是优化(或者可能是糟糕的设计) 使用MVC编写一个严肃的 游戏设计好,动作聪明, 还是有其他的设计

使用MVC来编写一个严肃的游戏是一个好的设计和明智的举动,还是有另一种设计模式在处理此类软件时更有意义。有人用MVC做过非休闲游戏吗?你的经历是什么

我正在用objective-c w/Cocoa设计一个游戏引擎,它不使用任何Cocoa UI组件,只使用非常基本的组件,即创建一个全屏窗口并获取绘图上下文。在我使用3D或2D之前所做的引擎工作中,大多数绘图软件都与描述绘图内容的软件结合在一起。原因往往是优化(或者可能是糟糕的设计)

使用MVC编写一个严肃的 游戏设计好,动作聪明, 还是有其他的设计模式 这在交易时更有意义 用这种软件

我想你说的是角色扮演游戏

将游戏引擎视为控制器和查看器的组合

游戏引擎的设计输入是模型

使用MVC编写一个严肃的 游戏设计好,动作聪明, 还是有其他的设计模式 这在交易时更有意义 用这种软件

我想你说的是角色扮演游戏

将游戏引擎视为控制器和查看器的组合


游戏引擎的设计输入是模型。

抽象是一把双刃剑,它使开发更容易,但会影响性能。然而,由于漂亮的图形,很多现代游戏都是GPU绑定的。如果您认为这是正确的,那么在CPU上执行的操作的后果就较小,因为您将等待GPU渲染帧。然而,大多数独奏项目并没有达到足够高的水平,这是真实的,所以你可能仍然需要有点小心

这并不意味着你至少不能半途而废。事实上,现在大多数游戏都是以伪MVC风格完成的,特别是使用更新/绘制循环,而不是简单的循环。基本上,所有游戏代码都在一个单独的方法中,而不是在绘图代码中。游戏代码更新游戏状态,然后绘制代码渲染游戏状态

如果您正在运行自己的物理(或其他基于帧的)引擎,这尤其好,因为它允许您将FPS从更新周期中分离出来。例如,您可以将游戏引擎编码为以每秒60帧的速度运行,如果需要,只需在两次绘图调用之间进行多次更新


总而言之,在游戏中,您应该始终将更新和绘制代码分开,这是一个简单的步骤,开销最小,提供了MVC的大部分简单性,而不需要与完整的MVC结构相关的成本。

抽象是一把双刃剑,它使开发更容易,但会损害性能。然而,由于漂亮的图形,很多现代游戏都是GPU绑定的。如果您认为这是正确的,那么在CPU上执行的操作的后果就较小,因为您将等待GPU渲染帧。然而,大多数独奏项目并没有达到足够高的水平,这是真实的,所以你可能仍然需要有点小心

这并不意味着你至少不能半途而废。事实上,现在大多数游戏都是以伪MVC风格完成的,特别是使用更新/绘制循环,而不是简单的循环。基本上,所有游戏代码都在一个单独的方法中,而不是在绘图代码中。游戏代码更新游戏状态,然后绘制代码渲染游戏状态

如果您正在运行自己的物理(或其他基于帧的)引擎,这尤其好,因为它允许您将FPS从更新周期中分离出来。例如,您可以将游戏引擎编码为以每秒60帧的速度运行,如果需要,只需在两次绘图调用之间进行多次更新


总而言之,你应该在游戏中把更新和绘制代码分开,这是一个简单的步骤,开销最小,提供了MVC简单性的一大部分,而不需要与完整MVC结构相关的成本。

非休闲并不真正描述游戏需要的图形或事件管理的复杂性…澄清一下,我指的是“非休闲”和“严肃”意思是一个复杂的游戏引擎:想想《半衰期2》、《末日3》、《龙的时代》。MVC是一种软件体系结构,而不是一种设计模式。通过实时用户交互和物理建模?Non casual并不能真正描述游戏所需的图形或事件管理的复杂性,我的意思是“不随意”和“严肃”,意思是一个复杂的游戏引擎:思考半衰期2,末日3,龙的时代。MVC是一种软件体系结构,而不是一种设计模式。通过实时用户交互和物理建模?