我写了一门课,由于有了种子和困难,它将使我的游戏恢复一个竞争的环境。世代是一致的(不管是什么,相同的种子和难度水平总是会导致相同的比赛场)。据我所知,所有android设备都使用Java1.6,下面是我的问题:
在多玩家环境中,只向其他设备发送种子和困难是安全的吗?
当Google更新Java版本级别为1.6的表单时,我需要担心吗?或者他们可能会把所有的android设备更新到那个版本级别(我假设随机类会被改变)?如果不是,那么什么方法才是检测随机类是否不同的好方法呢?
换句话来说,应该采取哪些预防措施来确保java.util.Random类(我的字段生成类大量使用)将为每个设备带来相同的游戏场?或者,考虑将所有游戏场数据发送到非托管设备是否更明智?
我可能可以通过一条大小为:
byte[ROWS * COLUMNS]在此之前,我感谢在这个问题上的任何指导/建议。这是一个很难找到的问题,因此一些未来视图的链接可能是合适的。
发布于 2015-05-24 03:58:52
这里有几个选项,但我想我希望有一些神奇的JVM属性来定义java.util.Random类修订版本。
第一个选项是检查java版本,并将其与其他设备的版本进行比较。如果它们是相同的,那么(据我所知)假设随机类是相同的,因此种子和困难是可以发送的。但是,如果它们是不同的,则可以发送所有数据,或者亲自检查文档/版本发布说明,以查看什么时候更改了随机类,然后确定是否应该根据先前获得的java版本标识符发送所有数据。
第二种选择是始终发送所有数据。这就是我个人要做的。
如果您没有我那么幸运,而且您的数据超过了Multiplayer.MAX_RELIABLE_MESSAGE_LEN的值(以字节为单位),您可能不得不将数据分解为多条消息,这些消息可能会变得丑陋,但完全是可行的。
https://stackoverflow.com/questions/30339674
复制相似问题