我有一个测试项目,其中某个实体可以发射子弹,根据击中方向和一些随机值,它可以影响或被偏转。离线运行时,通过使用random.randint()或random.random()等方法即可轻松生成随机数,以便告诉是否应该弹开。但我想通过UDP广播射击事件,以便其他客户端可以在屏幕上显示相同的实体/弹丸。由于弹丸速度非常高,因此我不能等待服务器告诉我过去的位置并仅使用该位置(虽然我可以更正弹道)。主要思路是从远程实体接收fire调用,获取一些值,例如position、velocity和randseed。我的问题是如何为每个实体使用种子?比如我在屏幕上同时有10颗子弹,每颗都有自己的伪随机种子,我想让子弹生成自己的伪序列,就像在网络的一侧或另一侧一样。
Example:
class Bullet(object): def __init__(self, pos, v, seed): self.randgen = InstanciableGenerator(seed) # ... def hit(self, pos, ...): currentRandom = self.randgen.get() # ...
So that each instance has its own random sequence, not one shared by the
random.seed()
across eachrandom.random()
calls.
如何生成不同的伪随机序列?
如果这是一个坏主意,那么最好的方式是什么,可以广播一个触发事件,以便与所有客户端和服务器进行同步?
PS:服务器拥有完全的权限,同步是为了展示目的。