use*_*934 11 floating-point deterministic multiplayer real-time-strategy
我如何保证.NET应用程序中的浮点计算(比如在C#中)始终产生相同的位精确结果?特别是在使用不同版本的.NET并在不同平台上运行时(x86 vs x86_64).浮点运算的不准确无关紧要.
在Java中我会使用strictfp.在C/C++和其他低级语言中,这个问题基本上是通过访问FPU/SSE控制寄存器来解决的,但这在.NET中可能是不可能的.
即使控制了FPU控制寄存器,.NET的JIT也会在不同平台上生成不同的代码.在这种情况下,像HotSpot这样的东西会更糟糕......
我为什么需要它?我正在考虑编写一个实时策略(RTS)游戏,它在很大程度上依赖于快速浮点数学和锁定步进模拟.基本上我只会通过网络传输用户输入.这也适用于通过存储用户输入来实现重放的其他游戏.
不是一个选择:
有任何想法吗?