HTML5ゲーム物理シミュレーションのWebワーカーですか?


12

この質問に関連するビット。

考えは、可能な限り同じ物理動作を保証することです。Webワーカーで固定時間ステップの物理演算を実行することは可能でしょうか?UIは、異なる/可変のリフレッシュレートで更新されます。

誰もまだそのようなことを試みましたか?


Web Workerを使用して何を得ると思いますか?これまでのところ私の答えは、それはうまくいくでしょうが、なぜ気にしますか?
aaaaaaaaaaaa

回答:


3

この実験を見つけました。WebワーカーでBox2d物理学を実行します。Vincent Scheibのコメントに記載されている問題をどのように回避するかについては、まだ詳細を確認していません。


良い実験。私もこの種のプロジェクトを追ってきました。残念ながら、ほとんどはまだJava / Cに結びついています。私はOPがブラウザでこれをネイティブに実行する方法を探していると信じています(プラグインはありません)。
ケビンペノ

2
グーグルの男による同じことについての記事:t.co/AuhPptB
sorenbs

2

これは動作する可能性がありWebWorkerますが、sはオブザーバーパターンに従いますdocument(ワーカーを所有するhtmlページ)は、ワーカーとの間でメッセージをリッスンおよび投稿することしかできません。それから、いくつかのオプションがあると思います。すべての場合において、情報を最適化するためにユーザーエージェントの最適なFPSを決定するために何らかの方法で見つける必要があると思います。次に、次のいずれかを実行できます。

  • それらの時間間隔でメッセージを投稿するように労働者に伝える
    • 欠点(s?):document応答が発生したときに、応答の準備ができていると仮定する必要があります。
  • 知らせるdocument時間間隔で物理学を要求する労働者にメッセージを送信しx、その後、労働者はその直後応答(うまくいけば)を投稿します。
    • 欠点:すべての投稿と応答が非同期であるため、ワーカーからの要求と応答の間に遅延が生じる可能性があります。この場合、予期しないときにリッスンonmessageしないように、イベントをnullにする必要もありdocumentます。

私が見逃した他のことや、通信を処理する方法もあると確信しています。私はこの問題に関する他の答えを自分で楽しみにしています!


1
a)パフォーマンスに関する注意!requestAnimationFrameのを考えると、タブが背景に配置されている場合は(あまりにも長い間、おそらく)CPUを燃やしていないので、ということ、それから、あなたの労働者に「生き続ける」を合図
ヴィンセントScheib

b)IIRCワーカーからのすべてのメッセージはメインスレッドで受信され、キューに入れられます。5つの更新プログラムがあり、最新のものだけが必要な場合、メインスレッドにどのような影響があるかを考えてください。また、もっと来ていることもわかりません。
ビンセントシャイブ

c)すべてのメッセージがデータのコピーを作成しています。スレッド間で送信する必要があるデータが多いほど、データのコピーとガベージコレクションの作業が増えます。したがって、ここでの勝利は、高い計算/メッセージデータ比が存在する場合にのみ存在します。
ビンセントシャイブ

@ Vincent、B)のためdocument、合理的なfpsを見つけることで常に準備を整えるか、ワーカーがdocument要求するまで何もしないオプション2 を使用する必要があると述べました。
ケビンペノ

2

PhysijsはWeb Workerを使用します。ammojs物理をThree.jsオブジェクトと結び付け、必要に応じて更新します。固定時間ステップと流動時間ステップの両方を備えていると思います

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.