5

クライアントで決定論的シミュレーションを実行するロールバックネットコードを使用して、ブラウザーマルチプレイヤーゲームを構築しようとしています。浮動小数点の障害に遭遇する前に、Flashでネットコードのプロトタイプを作成しました。

基本的に、私が理解していることから、Flashの整数演算は、intsをNumbersにキャストし、演算を実行してから、にキャストバックすることによって行われintます。明らかに高速ですが、異なるコンピュータアーキテクチャ間で決定論的な数学の可能性がないことを意味します。

すべての卵をJavaScriptバスケットにダンプする前に、いくつか質問したいと思います。

  1. JavaScriptのすべての主要なブラウザに真の整数演算はありますか?または、一部のブラウザはFlashを実行し、float / doubleにキャストして、intにキャストバックする前に計算を実行しますか?

  2. さまざまなコンピュータアーキテクチャ間で決定論的な数学のようなものがありますか、BigDecimalそれとも機能しますか?BigNum合理的な範囲内である限り、パフォーマンスの低下は問題ありません。そうでない場合は、私の問題を解決するJavaScriptの固定小数点ライブラリがありますか?

  3. これはロングショットですが、x / y位置や衝突などの決定論的な数学を備えたHTML52Dゲームエンジンはありますか?ゲームエンジンのリストは控えめに言っても圧倒的です。決定論的なクロスブラウザ互換エンジンを最初から構築することに不安がありますが、それは私がしなければならないことかもしれません。

注:応答に従ってHTML5からJSに編集されました。知識不足でお詫びします。

4

1 に答える 1

6

これは Javascript の問題であり、HTML5 の問題ではありません。

Javascript の計算はすべて、IEEE754 浮動小数点double値を使用して行われます。「int」はありません。

IEEE754 では (AFAIK) 与えられた入力に対する操作ごとに特定の回答が必要ですが、JS インタープリターは式やループなどを自由に最適化できる可能性があることに注意してください。予想。

プログラムの過程で、これにより、さまざまなブラウザーでさまざまな回答が生成される可能性があります。

于 2012-07-15T15:51:18.457 に答える