gpt4 book ai didi

iphone - RPG游戏循环和类结构(适用于iPhone的cocos2D)

转载 作者:太空狗 更新时间:2023-10-30 03:40:35 26 4
gpt4 key购买 nike

我正在寻找在iPhone上使用Cocos2D制作RPG的方法。我已经做了相当多的研究,而且我非常喜欢Cocos2D用于场景的模型。我可以实例化一个场景,设置我的角色等,并且一切都非常好……我遇到的问题是构造一个游戏循环并从场景中分离代码。

例如,如何将我的代码放置在多个场景中,以保持游戏的状态?我是否将该事件的代码放到该场景的类中的某个场景中?还是我有其他一些将初始化代码与逻辑分开的类?

另外,我已经阅读了很多有关更改场景的教程,但是我没有读过有关更新场景的教程-从用户那里获取输入并基于此来更新显示。这是在场景对象中还是在单独的显示引擎类型类中发生的。

提前致谢!

最佳答案

听起来您可以很好地阅读Model-View-Controller模式。您不必刻意遵守它(例如,在某些情况下允许在Model和View之间进行一些重叠是有意义的),但是对它的深入了解将帮助您构建具有大量图形对象的任何程序以及控制它们的逻辑,以及是否需要广播状态或将其持久保存到光盘(游戏保存)等。

您还必须意识到,cocos2d提供了一个很好的系统来构造图形场景图并有效地渲染它,但是它没有提供用于编程游戏的完整基础结构。从这个意义上讲,它更多地是图形引擎而不是游戏引擎。如果您尝试将游戏的体系结构适应cocos2d的结构,则最终可能无法获得最可维护的结果。相反,您应该将cocos2d视为真正的东西:一个很好的工具,可以满足您的显示和动画需求。

当然,除了场景之外,您还应该拥有一个可以维持游戏状态的对象,否则,当您在场景之间切换时,所有状态都将流向何处?在场景/关卡中,您应该简单地尝试使用良好的面向对象设计,以使状态分布在各种类的对象上。每个角色对象都会记住自己的状态等。在这里,您可以看到MVC在哪些方面有用:将游戏保存到光盘时,您要记住每个角色的健康状况,但可能不记得 Sprite 动画所显示的确切帧索引。因此,您需要区分 Sprite 和角色(模型)本身。就是说,正如我之前提到的,对于没有太多逻辑或不需要保存的游戏对象,可以将Model和View融合在一起成为一个类(基本上是通过将CCSprite子类化)。

要按预期的方式实现MVC,还应该学习Key-Value Observing的基础知识。 (而且您最好在Apple的界面上使用this replacement。)在实时性更高的游戏中,这种技术可能太慢了,但是由于要制作RPG(入门的好选择),您可能会牺牲掉性能更易于维护的体系结构。

就MVC模式而言,游戏场景(只是另一个cocos2d子画面)扮演了Controller的角色。它本身不会绘制任何内容,但是会告诉其他所有内容根据输入和状态进行绘制。将各种逻辑和功能引入游戏场景是很诱人的,但是当您注意到它膨胀时,您应该问自己如何将功能分成其他类别。分析您要实现的功能类型。与数据和状态(模型)有关吗?还是关于动画和渲染( View )?还是将逻辑与渲染连接在一起(在这种情况下,您应该尝试使View直接观察模型)?

游戏场景/ Controller 基本上是一个调度中心,负责接收输入事件(例如,来自用户或报告其击中某些东西的 Sprite )并决定如何处理它们:它可以告诉一个或多个模型对象以某种方式进行自我更新,或者例如,它可能只是触发其他一些 Sprite 中的动画。

在实时游戏中,场景中将具有“tick”或“step”方法,该方法告诉所有对象自行更新。此方法(游戏循环)是程序的核心,并且每次绘制新框架时都会运行。 (在现代游戏引擎中,有很多多线程处理,但是我们不要考虑这一点。)但是,在您的情况下,您可能想要创建一个可以“玩游戏”的模块,使其完全脱离游戏场景。想象一下,创建一个仅使用文本输入即可通过终端下象棋的程序。如果您以这种方式创建整个游戏系统,然后通过一个简洁的界面将其连接到图形引擎,则您将拥有一个真正可维护的应用程序,其中包含许多可重复使用的代码,供将来的项目使用!

一些好的经验法则:模型(数据)对 Sprite 或显示状态一无所知。 View (子画面)不应包含游戏的任何实际逻辑(游戏规则),而仅知道如何做一些简单的事情,例如在发生复杂的事情时移动并弹跳并向场景报告。只要有可能, View 就应直接对模型中的更改使用react,而不必干预 Controller 。

关于iphone - RPG游戏循环和类结构(适用于iPhone的cocos2D),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2527611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com