2012-01-05 12 views
3

友人と私はWebGLを使ってゲームを開発しています。物理エンジンを探して、portまたはbullet物理ライブラリであるammo.jsを発見しました。私たちは簡単な例を実装し、Google ChromeのフレームレートがFirefoxやSafariに比べて恐ろしいことをすぐに発見しました。私はクロムが10 FPSを得ていると話しています.Firefoxは60 FPSでかなり一定です。Google Chromeのammo.jsのパフォーマンス

多くを調べた後、私はthisのブログで、Chromeがライブラリでどのような問題を抱えているかを正確に説明していることを発見しました。 (tl; dr:ammo.jsはクロムが嫌う辞書オブジェクトを使用します)

私の質問は次のとおりです。辞書を使用しないでこのライブラリのポートがありますか?そうでない場合は、元のC++の箇条書きコードを変更して再移植する価値がありますか(または実現可能なのでしょうか)?以前のオプションのどれもが可能でない場合、JavaScriptのどの物理エンジンをお勧めしますか?

ここでは選択肢がかなり限られていることは知っていますが、それは質問に値すると思います。

ありがとうございました。

+1

ベンチマークへのリンクはありますか? Chrome V8チームに渡したいと思います。 –

答えて

3

元のC++コードがオブジェクト指向である場合、JavaScriptをコードに移植してオブジェクトを使用することはできません。

移植する前にBulletコードを変更する場合は、JavaScriptで型付けされた配列で利点があるものを使用するように書き直す必要があると思います。私はそれを得るためにコードの大部分を書き直さなければならないと思います。その場合、JavaScriptを直接書く方が便利です。

私はammo.jsの横にあなたに良いお勧めはありません。ただし、cannon.jsは、コードが安定したときにニーズを満たす新しいプロジェクトです。おそらくあなたはそれに貢献したいと思いますか?

もう1つの方法は、FireBreathです。これはブラウザプラグイン開発フレームワークです。ネイティブJavaScript関数を作成するのに役立ちます。 Bulletがそのようなプラグインにコンパイルされ、JavaScriptにバインディングが作成されている場合、C++物理エンジンはJavaScriptで使用できる状態になります。もちろん、エンドユーザーはまずプラグインをダウンロードする必要があります。

関連する問題