在两台机器上同步随机数发生器

时间:2010-09-08 23:28:55

标签: cocoa-touch

是否可以在两台不同的机器上“同步”(缺少更好的词)随机数发生器?

背景:我有一个带网络多人游戏的iOS卡片游戏。两个同行都需要能够访问卡片组。当甲板被洗牌时,我可以用NSCoding序列化我的卡片组对象并将其发送给另一个对等体,以便甲板同步,但如果我可以依靠两个对等体上的随机数生成器,我可以发送更少的数据生成相同的随机数。

因为这是一个纸牌游戏,我需要最好的随机数,所以我更喜欢使用arc4random(),它在第一次调用时自行播种。也许是一种手动播种的方法吗?

简单地发送卡片组对象是一个好的解决方案,但我计划使用OpenFeint实现异步多人游戏,为此,我的游戏状态需要保持在16K以下,而且只是我的卡片组序列化时几乎是2K。 :)

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您刚刚发送了随机数,该怎么办?无论哪个设备“转向”它都可以创建并发送它的随机数,以便所有版本都可以确认相同的绘制。如果您小心确保卡组的所有版本都使用相同的顺序/卡并且没有丢弃随机数,理论上它应该只需要很少的数据传输。如果另一个玩家部分通过,您可以通过翻转对象或对象数组中的各个位来标记已绘制的牌,并发送该对象/阵列。

我不知道我不知道平台,但我知道在其他一些语言中,将种子作为调用的一部分将使用固定值播种(即:arc4random(seed))我不知道你的工作情况是否如此,但这可能值得研究。

希望这有帮助!