問題タブ [lance]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multiplayer - worldUpdate に決定論的な物理特性を持つゲームオブジェクトを含める必要はありますか?
各 worldUpdate のワールド オブジェクトをシリアル化するためのデータ転送サイズと計算時間を削減するために、クライアント側の gameEngine で物理を完全に忠実にシミュレートできるオブジェクトの同期を省略できるかどうか疑問に思っていました (それらは playerObject ではありません)。したがって、playerInput はそれらに直接影響を与えず、それらの物理は完全に決定論的です)。これらのゲームオブジェクトとのやり取りは、頻度の低いゲームイベントによって完全に処理されます。クライアントがサーバーと同じ物理学を実行していて、同じ初期条件にアクセスできる場合、これは可能であるべきだと思います。
後続の worldUpdates から GameObjects を省略しようとすると、モーションがより途切れ途切れになり、省略されていない場合よりも速く動くことがわかります。ただし、クライアントを開いたままゲーム サーバーを停止すると、それらの動作は、省略していない場合に期待したものに近くなります。これはすべて、外挿同期を備えたローカル マシン上にあります。
javascript - マルチプレイヤー html5 ゲームの Lance.gg が同期しない
を作ろうとしていmultiplayer game in HTML5
ます。lance.gg を見つけて遊んでみました。Pong ゲームを次のように変更しました。
- パドルを外す(ボールだけ残す)
- 重力を
(0, 0.1)
Ball.velocity.y = -3
キーボード入力のたびにスペースバーを設定
そして、ここに結果があります https://youtu.be/MmQOqR71Df0 . ご覧のとおり、実際にはウィンドウを同期していません。多くのプレイヤー間でスムーズに移動するにはどうすればよいですか?