栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何组织游戏代码以适合MVC模式?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何组织游戏代码以适合MVC模式?

可能会帮助您将模型视为一种游戏API。如果从一开始就没有针对该游戏的用户界面,那么您的游戏将沦为什么?您提到的是,您所想到的是RPG,因此在这种情况下,您可以想象拥有角色,他/她的库存,咒语,能力,NPC甚至是地图和战斗规则之类的东西都属于模型。就像垄断的规则和部分一样,没有最终游戏如何显示或用户如何与之交互的细节。就像《雷神之锤》一样,它是一组抽象的3D对象,它们在一个关卡中移动,并计算出诸如相交和碰撞之类的东西,但没有渲染,阴影或声音效果。

通过将所有这些都放入模型中,游戏本身现在与UI无关。它可以像Rogue游戏一样挂接到ASCII文本界面,或者类似于Zork的命令行UI,或者基于Web的3D
UI。根据游戏机制的不同,其中一些用户界面可能非常糟糕,但它们都是可能的。

视图层是依赖于UI的层。它反映了您使用的UI的特定选择,并将非常致力于该技术。它可能负责读取模型的状态,并以3D,ASCII或网页的图像和HTML绘制模型状态。它还负责显示玩家与游戏互动所需的任何控制机制。

控制器层是两者之间的粘合剂。它永远不应包含任何实际的游戏逻辑,也不应负责驱动View层。相反,它应该将在“视图”层中执行的操作(单击按钮,单击屏幕区域,操纵杆操作等)转换为对模型执行的操作。例如,放下物品,攻击NPC,等等。它还负责收集数据并进行任何转换或处理,以使View图层更易于显示它。

现在,我在上面描述的方式好像是驱动游戏的事件序列非常不同,这可能仅非常适合于网络游戏。那是因为那是我最近花费的时间。在不受网络用户请求和服务器响应驱动的游戏中(例如,在用户计算机上运行的游戏),您可能需要确保模型层很好地实现了观察者模式。例如,如果由于时间流逝而在模型中进行操作,那么您可能不希望View层不断轮询模型以获取更新。相反,通过使用观察者模式,模型可以在模型对象发生更改时通知任何观察者。进而可以用来提示立即更新视图以反映更改。

然后,如果经过60秒导致玩家的基地进行了一些维修,则该基地可能会进行维修,并立即通知与之相连的所有观察者该基地已经更新。视图可以作为观察者附加,请注意,由于其状态已更改,因此需要重新显示基础。通知本身可能已经包含了足够的信息来更新View,或者它可能必须转过身来咨询模型以进行更新,但是结果将是相同的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392478.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号