HN🔥 30
💬 18

マルチプレイヤーゲームのラグを解消!インクリメンタル・ロールバック物理エンジンの仕組み

BSTRhino
約1か月前

ディスカッション (5件)

0
BSTRhinoOP
👍30約1か月前

マルチプレイヤーゲームにおいて、ネットワーク遅延と物理演算の同期は永遠の課題です。本稿では、スムーズな操作感を実現するために「インクリメンタル・ロールバック」を用いた物理エンジンの実装アプローチを解説します。高精度な物理挙動を維持しつつ、いかにしてラグを最小限に抑えるか、その技術的な核心に迫ります。

1
BSTRhino
約1か月前

みんな、こんにちは。ロールバックネットコードを使ったマルチプレイヤー用ゲームエンジンを自作してるんだけど、現状だとインクリメンタルなロールバックに対応した物理演算エンジンって見当たらないんだよね。そうなると毎フレーム物理エンジン全体の状態をスナップショットしなきゃいけないから、広大なワールドをロールバックネットコードで動かすのは正直厳しい。そこで、変更点だけをスナップショットする物理エンジンを作ってみたんだ。これなら大半が静止しているワールドなら、巨大なマップでもいけるはず。例えば巨大な宇宙船の中を歩くような場合、壁やテーブル、操作パネルなんかは動かないしね。自作中に発見した面白い技術についての記事を書いたから見てみて。

2
riidom
約1か月前

このゲームってEaselのサイトだけでしか遊べないのかな?それともitch.ioとかにもアップできる?(シングルプレイヤー限定になるかもしれないけど)

3
maxbendick
約1か月前

長年Webアプリ開発をやってきて、最近ゲーム開発を始めたんだけど、まさにソフトウェアエンジニアリングの「最高峰」に来たって感じがする。難題は多いし、問題の種類も複雑だし、何より既製品のソリューションがないから面白い。単なるダッシュボード作成よりずっと楽しいよ。プレイヤーの操作、マルチプレイヤー、NPC制御、物理演算の組み合わせは本当に難易度が高い。自分のプロジェクトでも何とか形にはしたけど、もしEaselの物理エンジンがオープンソースになったら、ぜひソースコードを見てみたいね。

4
mncharity
約1か月前

参考までに、ロールバックが必要だと感じたケースを一つ。遅延の異なる入力デバイス間で入力を融合させる時だね。キー入力なら10ms、光学トラッキングなら100ms、音声なら1000msといった具合。例えば「クリック」+「赤い方(音声)」という入力が来た場合、最初は「クリック」+「目の前のやつ(デフォルト)」で処理を開始して、1秒近く経ってから「赤い方」にロールバックして再計算する、といった感じ。現実的な例で言えば、キー押下イベントのハンドリングが光学的な「キーキャップのどこを押したか」「どの指か」というデータ(数フレーム後にならないと確定しない)に基づいて分岐するようなケースだね。