マルチプレイの手触りを壊れにくくする日
( en | jp )

今日は新機能を増やす日というより、既存のマルチプレイを「実際に人に触ってもらえる状態」に近づけるための一日でした。理想的なLAN環境だけで成立する実装から、もう一段現実的な運用へ寄せる作業です。
最初に進めたのはインフラ面です。ローカルの一時ホスト運用から、AWSスクリプトとsystemdで回す常設ホスト運用へ移行しました。これで接続先が安定し、起動と再起動の手順も再現可能になり、ゲームコードの問題と運用の問題を切り分けやすくなりました。同時に、「一度動く」ことと「常時動かし続けられる」ことの差もはっきり見えてきました。
ゲーム側では、体感改善のための土台づくりを優先しました。オーバーレイに接続状態、接続人数、往復遅延を表示し、何が起きているかを見ながら調整できるようにしています。加えて、クライアント側カメラ追従、武器ロードアウト表示、ジャンプ入力の取りこぼしといった即時の不具合も順番に潰しました。派手さはありませんが、ここを整えないと改善の方向すら正しく判断できません。
技術的に大きかったのは、クライアント予測とリコンシリエーションの初期版に着手したことです。ローカル移動は早く反応するようにしつつ、ホストとの差分は可能な範囲で補正、ずれが大きいときだけ強く合わせる構成にしています。さらに、ロープ操作や照準周りもラウンドトリップ待ちを減らして、手元の反応を先に出す方向へ寄せました。まだ粗さはありますが、スナップ待ち中心だった状態よりは明確に前進しています。
設計と進め方の判断
今日は「全面書き直し」ではなく、体感への寄与が大きい順に積み上げる方針を再確認しました。診断情報の強化、入力反応の改善、補正挙動の調整、そして次段の補間・スナップショット周期調整という順番です。これにより、進捗を止めずにプレイヤー体験へ直接効く改善を続けられます。
もう一つの実務的な判断は、用途ごとのビルド運用をはっきり分けることでした。接続確認は軽いビルド、計測や録画が必要な検証はImGui/Devlog付きビルド、という使い分けです。ネットワーク調整は試行回数が命なので、ここを明確にした効果は大きいです。
課題とトレードオフ
移動体感は朝より改善しましたが、まだ十分ではありません。武器を多用する場面でのガタつきや、ロープ操作のタイミング依存は残っています。入力の即応性を上げるほど、権威サーバーとの整合補正とのバランス取りが難しくなるため、調整幅はまだ広いです。
また、戦闘中のスナップショット適用が強すぎる箇所があり、揺れを目立たせる要因になっています。次に手を入れるべきポイントは明確で、スナップショット周期と補間戦略の改善です。
次にやること
次回は、固定レートのスナップショット送信、非ローカル要素のバッファ補間、ジャンプ・ロープ・発射入力のエッジ同期を重点的に進めます。目標は変わりません。サーバー権威を維持したまま、プレイヤーが「ネットワークを意識せずに操作できる」感触に近づけることです。
Screenshots



