请允许我描述一下我的情况:
我想开发一款游戏,即圆底游戏和付费游戏。这意味着你支付一枚硬币,用于一轮游戏,如弹球等。
问题是,当有中断时,理想情况下游戏应暂停,并在用户需要时恢复。实施这似乎是一个挑战。假设我的游戏进入后台,我会在ApplicationDidEnterBackground中保存游戏状态。但是,在后台游戏可能会或可能不会终止。所以下一次发布可能是一个“新的开始”,或者是“从上次保存状态恢复”。
如果应用程序在后台留下足够长的时间,例如1周,那么几乎可以肯定其他应用程序争夺内存会导致游戏在某个时刻终止。当用户再次启动我的应用程序时,他们将从新一轮玩,这意味着之前未完成的游戏已经消失。
从客户的角度来看,这是不公平的。
我能想到的是,为了实现它,每当我的应用程序被带到前台时,我会检查是否有已保存的游戏。如果有,我将恢复它。这带来了安全问题:
保存的游戏,无论是最原始的plist格式还是其他格式,都会持久存在,并带来安全问题。 (如果玩家编辑游戏状态并获得1000万分作为最高分......等等)
是否有任何建议的方法来解决这些问题?
我看到一些应用程序只是放弃了保存游戏,并且将在恢复时启动新一轮。这些都不是为了玩游戏,否则我可以想象用户会非常生气。
我已经看到一些应用程序可以暂时保存游戏状态,但是当它终止时,下次启动时,它将开始新一轮。在球员实际为这一轮付钱的情况下,这似乎是不可接受的。
考虑到崩溃的可能性,我无法找到一个好的解决方案,确保付费客户可以玩全面的游戏。如果有相关经验的人可以分享他们的想法,以及他们如何做出决定,那将对我有所帮助。
答案 0 :(得分:3)
为什么不将圆形整理与付款相结合?如果该轮没有完成,则不会付款。如果用户的轮次完成时信用额度不足,您可以选择立即购买更多信用(通过应用程序内购买)来完成当前轮次。
这简化了您作为开发人员的任务,并提供了一种以非令人讨厌的方式提示用户进行额外付款的方法。
答案 1 :(得分:2)
Here是一个使用NSCoding保存游戏状态的好教程。玩家在编辑文件时不会有任何问题,因为它是在NSCoding中完成的。如果用户真的想弄清楚如何取消编码文件并更改内容,这很疯狂,你可以在将数据写入文件之前对数据进行某种encryption,这样就没有了用户可以改变它的方式。希望有所帮助!