我正计划为iOS平台开发多人策略游戏。然而,作为一个具有多个“单位”的策略游戏,游戏玩法可能存在不平衡,需要通过不断的机制调整来解决(升级/削弱某些单位)。
实现这一目标的最简单方法就是改变应用程序本身的机制,并不断向Apple提交更新。但是,更新需要时间来通过Apple的审核流程传播(因此更改不会立即发生),我需要检查游戏中的所有玩家是否运行相同版本的游戏,强制用户更新到最新版本的游戏等。
我正在考虑做的事情类似于游戏Uniwar所做的事情。每次游戏启动时,它似乎都会检查是否有可用的游戏调整,如果有,它会下载更新(并向用户显示更新消息,详细说明已更改的内容)。
然而,作为一个相对较新的程序员,我真的不知道实现这一目标的最简单方法是什么。我是否会在线托管包含单位统计信息的文本文件,并让游戏检查该文件是否有变化?还是有更好,更有效的方式?如果我这样做,我该怎么做?
答案 0 :(得分:1)
首先,确保您的规则是您可以轻松更改的某种资源(无论是二进制还是基于文本)。最方便的更新方法是定期轮询服务器,最方便的是使用HTTP协议,根据需要获取更新。我看待它的方式有两种方法。
第一种方法使用HTTP协议的出色缓存功能,因此需要了解这些功能的服务器(和客户端库)。基本的想法是在服务器上发布最新版游戏机制的副本(例如,发送到http://example.org/mechanics.gz
,然后让客户端发出If-modified-since header条件GET
请求设置为执行上次更新检查的时间.HTTP协议将为您有效地完成剩下的工作,如果没有更新则发出304 Not modified
,如果有更新则发送新机制。此方法有缺点是必须在每次更新时下载整个机制文件(不能使用diff
),并且旧版本将不可用,但它具有吸引人的简单性。
第二种方法包括更新列表(以及它们的URI,ID和发布日期),比如http://example.org/updates.xml
,客户端会在每次轮询时提取。然后,客户端检查是否有任何更新,并按时间顺序下载并应用这些更新。使用此方法,可以使旧的更新可用(并且将具有永久链接),并且可以使用diff
。如果历史很重要或游戏机制文件很大,这很有用。
答案 1 :(得分:0)
文件的格式并不重要 - 使用适合您的任何内容。我认为,能够调整游戏玩法的关键是将游戏规则转换为可以配置的对象。如果规则都是对象,您可以执行诸如更改它们的应用顺序,给予每个规则的权重,规则生效的条件等等。您可能有一个对象负责管理和正确应用规则,基本上是一个“规则模型”。完成后,您需要做的就是在规则和规则模型类中实现NSCoding,并且可以轻松地编写和读取规则配置。