ios - 哪一方应进行RNG计算?

时间:2013-12-12 09:42:58

标签: ios objective-c networking random p2p

我正在为iOS编写一款让两个玩家(点对点)互相攻击的游戏。我正在使用GameKit来处理像PeerPickerController这样的东西,以及用于归档和发送游戏状态的NSCoding协议。但是,我想知道是否有一些需要RNG的游戏的设计模式 - 比如掷骰子的损坏,随机参数,事件发生等等。

具体来说,在回合制游戏中,两个玩家提交动作,然后执行动作,哪一方应该进行RNG计算并将结果传送给另一方?它是随意的(比如比较两个玩家的UUID,而更高的玩家有责任)?或者是否存在一种设计模式,以先入为主的方式将任务分配给两个玩家?

这里的主要问题是(1.)确保为同一个动作为双方生成相同的随机数,并且(2.)不提前这样做,因为如果在转弯执行期间事件被杀死,或者攻击在一些计算完成后重定向,然后可能不需要进行一些计算,其他可能会受到影响。

2 个答案:

答案 0 :(得分:1)

我会说在点对点游戏中没关系,除非可以认为是主机。因为主机 - 客户端应用程序有一般规则:永远不信任客户端。也就是说,如果您有一台服务器,那么应​​该在那里进行关键计算,或者至少在服务器上进行验证,以防止作弊或传输错误。

但是如果你有两个相同的同伴,那么进行计算的那一方可能并不重要,因为两者都必须相互信任。但我会避免尝试双方进行相同的RNG计算。

答案 1 :(得分:0)

您可以选择其中一个设备作为主机,在该计算机上进行所有计算。这是随意的,但如果计算要求很高,请尝试选择最新的设备。另一个(更简单的)选项是让执行移动的设备进行计算。

显然这有一点安全风险,但是再一次,你绝对不能安全地使用P2P游戏的骗子。