私はBox2Dをサーバーと通信するゲームに使用しており、完全な決定論が必要です。私は単純にこれを達成するために整数の数学/固定小数点数学を使いたいと思っていましたが、私はBox2Dでそれを可能にする方法があるのだろうかと思っていました。ありがとうございました!Box2Dで固定小数点計算を有効にする方法はありますか?
答えて
物理エンジンで確定性を達成する唯一の方法は、物理エンジンで固定時間ステップ更新を使用することです。このリンクで詳細を読むことができます。 http://saltares.com/blog/games/fixing-your-timestep-in-libgdx-and-box2d/
私は確定的な時間ステップを全体的に使用します。しかし、異なるデバイス間で浮動小数点の決定論の問題があるため、十分ではないかもしれません(異なるコンパイラは浮動小数点数を別々に扱うなど)。 – TheMAAAN
はい。固定小数点実装であり、Box2Dライブラリコードを変更しています。
Box2D 2.3.2のC++ライブラリコードは、実数のような値の実装にfloat32
型を使用します。 float32
はtypedef
(C++ float
タイプに)b2Settings.h
で定義されているため、実数のような値の異なる基本実装を使用するために1行で変更できます。
残念ながら、float32
がfloat
であると定義されていない場合、コードの一部(b2Max
など)が使用されたり、途切れて書き込まれたりします。そうすれば、それらのエラーは追い詰められなければならず、新しいタイプが使用できるようにエラーコードが書き換えられます。
私は自分自身の固定小数点実装を作成することを含め、この種の作業を自分で行っています。これは、少なくとも、値の小数部分に14〜24ビットの64ビット実装を使用することをお勧めします(使用不能な量のアンダーフロー/オーバーフローの問題がない限り、ほとんどのテストベッドテストで使用できます)。 my forkを見て、私がこれをどうやって行ったのか見てみましょう。しかし、現在はリリース準備が整ったコードではありません(2011年2月11日現在ではありません)。
- 1. Haskellに固定小数点演算子がありますか?
- 2. 固定小数点除算数
- 3. MIPSの固定小数点演算器
- 4. Verilogで固定小数点値を出力する方法は?
- 5. Verilogで浮動小数点数の小数部を計算する方法
- 6. 固定小数点演算でオーバーフローが発生する
- 7. Y-コンビネータはプログラム上固定小数点をどのように計算するのですか?
- 8. IEEE浮動小数点、バイアスを計算する方法
- 9. 小数点以下を計算する方法
- 10. 15.16の数値の固定小数点乗算/除算
- 11. 小数点の有無にかかわらず固定価格
- 12. 整数で浮動小数点計算を行う方法
- 13. JSP内の浮動小数点数の計算に問題があります
- 14. Fortranで最初の固有値と固有ベクトルを計算する方法
- 15. 浮動小数点計算
- 16. マッピング[-1、+ 1]はQ31固定小数点に浮動小数点
- 17. Javaで計算をステップバイステップで計算する方法はありますか?
- 18. 1.有効なルビー浮動小数点数ではありません
- 19. 小数点以下の桁数を計算するには
- 20. Matlabの固定小数点
- 21. 固定小数点コンビネータ
- 22. 固定小数点のメガドロップダウンメニュー
- 23. jQueryスクロール固定小数点
- 24. この計算では小数点はどこですか?
- 25. 固定小数点から浮動小数点へ
- 26. 固定小数点から浮動小数点データへ
- 27. 浮動小数点除算の計算
- 28. 連続ブロックモデルから固定小数点コードを生成する方法は?
- 29. あらかじめ定義されたビット数で浮動小数点数を固定小数点に変換するためのpythonの使用方法
- 30. Cで浮動小数点の平方根を計算する方法
問題が解決する場合は、回答を受け入れることを検討してください。ありがとう! –