我想在一个项目中实现一个游戏录制功能,该功能只会在关卡开始时记录玩家输入和RNG的种子。然后,我可以拍摄这些记录并在我的电脑上播放,以便测试它的有效性。不同系统上的浮点和数学精度
我只关心可能出现在不同的Flash Player版本,操作系统或CPU(或其他可能受影响的)之间的一些数字差异。该项目将写入Flash Player 10.0.0+。我所关心的是什么东西:
- 数字运算:乘,除,位操作(可能还有位移);加减; modulo
- Math class:sin,cos and atan2;四舍五入
- localToGlobal/globalToLocal用旋转和缩放
我不会用这样的东西则hitTest,getObjectsUnderPoint,hitTestPoint,的getBounds等等,所有的碰撞将是几何。
那么,有没有可能使用上面提到的任何指出的东西在不同的系统上产生不同的结果?如果是这样,我能做些什么来避免它们?
不是用于游戏玩法,而是用于检查用户是否在作弊,并且很难检查如果由于某些Floats相关的不兼容问题而导致玩家在开始时掉到坑中而不是从最后一个半像素跳下来,从而有效地打破了整个重播过程,并使我无法验证:)。 – Maurycy 2011-01-31 17:59:44
我相信这些事件会非常罕见,不会产生影响。我会建立引擎,而不是现在担心它,当你完成了多次测试并确保玩家在实际游戏和模拟中结束于相同位置(在0.01单位内)时进行测试。如果他们不这样做,那么你可以将问题孤立起来,但是如果四舍五入的数字(双精度,64位)出现,我会感到非常惊讶。 – StapleGun 2011-01-31 18:06:19
我也怀疑,但我了解到,有时候相信你的直觉,从未有过测试过的事情会导致重大问题。我主要关心的是三角函数。 – Maurycy 2011-02-02 12:32:32