在iOS战略游戏中拉动游戏机制更新?

问题描述:

我正在计划为iOS平台开发多人战略游戏。然而,作为一个具有多个“单位”的战略游戏,游戏玩法可能会存在不平衡现象,这需要通过不断的机械调整(升级/削弱某些单位)来解决。在iOS战略游戏中拉动游戏机制更新?

完成此操作最简单的方法就是更改应用程序本身的机制,并不断向Apple提交更新。然而,更新需要花时间在苹果的审核流程中传播(所以这些更改不会是瞬间的),我需要检查游戏中的所有玩家是否运行相同版本的游戏,强制用户更新到游戏的最新版本等。

我正在考虑的是类似于游戏Uniwar所做的事情。每次游戏启动时,它都会检查是否存在可用的游戏玩法调整,如果有,则会下载更新(并向用户显示更新消息,详细说明已更改的内容)。然而,作为一个相对较新的程序员,我并不知道最简单的方法是完成这个任务。我是否会在线提供包含单位统计信息的文本文件,并让游戏检查该文件是否有变化?还是有更好,更有效的方法?如果我这样做,我该怎么做?

+0

我认为这是一个很好的问题,但我冒昧地改变标题以更好地反映您实际询问的内容。希望你不介意。 – You

+0

@你好,谢谢,我不太清楚应该怎么表达它。现在好多了。 –

首先,确保您的规则是您可以轻松更改的某种资源(无论是二进制还是基于文本)。更新这些最方便的方法是定期轮询服务器,最方便的是使用HTTP协议,根据需要获取更新。我看到它的方式有两种方法。

第一种方法使用HTTP协议的优秀缓存功能,因此需要了解这些的服务器(和客户端库)。最基本的想法是在服务器上发布最新版本的游戏机制(例如http://example.org/mechanics.gz),然后让客户端发出条件GET请求,并将If-modified-since header设置为执行上次更新检查的时间。如果没有更新,HTTP协议会有效地完成剩下的工作,并发送一个304 Not modified,并发送新的机制(这种方法的缺点是整个机制文件必须在每次更新时下载)第二种方法是由更新列表(以及它们的URI,ID和发布日期)组成, ,说客户拉动的http://example.org/updates.xml在每次调查中。客户端然后检查是否有任何更新没有,并按时间顺序下载和应用这些更新。使用这种方法,可以使旧的更新可用(并且将具有永久链接),并且可以使用diff。如果历史很重要或者游戏机制文件很大,这非常有用。

+0

很好的答案,感谢您的帮助!我确信这两种方法中至少有一种适合我。 –

该文件的格式并不重要 - 使用任何适合您的作品。我认为能够调整游戏玩法的关键是将游戏规则转化为可配置的对象。如果规则是所有对象,则可以执行诸如更改它们的应用顺序,赋予每个对象的权重,规则生效的条件等。您可能有一个对象负责管理和正确运用规则,基本上是一个“规则模型”。一旦你有了这些,你所需要做的就是在规则和规则模型类中实现NSCoding,并且你可以轻松地编写和读取规则配置。