是否有可能在两台不同的机器上“同步”(因为没有更好的单词)随机数生成器?
上下文:我有一个与网络多人玩的iOS纸牌游戏。两个对等方都需要能够访问纸牌。当甲板被洗牌时,我可以用NSCoding序列化我的卡片甲板对象,并将它发送到另一个对等点,这样甲板就同步了,但是如果我可以只依靠两个对等点上的随机数生成器来生成相同的随机数,那么我可以发送更少的数据。
因为这是一个纸牌游戏,所以我需要可用的最佳随机数,所以我更喜欢使用arc4random(),它在第一次调用时会自己种子。是否有一种手工播种的方法?
简单地发送纸牌甲板对象是一个不错的解决方案,但我计划使用OpenFeint实现异步多人游戏,为此,我的游戏状态需要保持在16K以下,而当序列化时,我的纸牌甲板几乎是2K。:)
谢谢!
发布于 2010-09-08 23:59:46
如果你只是发送随机数本身呢?无论哪个设备的“转弯”,它都可以有创建和发送它的随机数的任务,以便所有版本都可以确认相同的抽签。如果您仔细确保所有版本的甲板都在相同的顺序/卡片中,并且没有随机数被丢弃,理论上它应该可以处理非常少量的数据传输。如果另一个玩家以部分方式完成,您可以通过翻转对象或对象数组中的单个位来标记已绘制的卡片,并发送该对象/数组。
如果做不到这一点,我恐怕我不知道这个平台,但我知道,在其他语言中,将种子作为调用的一部分会用一个固定值(即arc4random( seed ))作为种子,我不知道您正在做的事情是否是这样,但它可能值得研究。
希望这能有所帮助!
https://stackoverflow.com/questions/3672681
复制相似问题