専用サーバー2クライアント対応の進捗と、まだ残っている壁

( en | jp )

Dev log highlight media

今夜の作業は、これまでの「実質1クライアント前提」から一歩進み、専用サーバーで複数人プレイを成立させるための土台を固めることに集中しました。

まず大きかったのは運用面です。EC2の鍵を新しく切り直し、インスタンスを再構築し、ローカルの自動化スクリプトを新ホストに繋ぎ直しました。さらに、アイドル終了時の落とし穴も修正しています。これまではプロセスが正常終了しても systemd が即再起動してしまい、結果としてインスタンスが止まらずコストが積み上がる状態でした。いまはアイドル時の終了を正しく扱い、インスタンス停止まで繋げられる構成になっています。

ゲーム側では、固定レートのスナップショット送信、予測/補正の見直し、リモート側補間の調整を進め、移動の体感は確実に改善しました。ただし武器を絡めた場面では、まだ粗さが目立ちます。ロープや射撃は、ローカル予測と権威サーバー補正のズレが出やすく、現在の構成の弱点が見えやすい部分です。

今夜の中核は、専用サーバーでの2クライアント対応に向けた構造変更です。入力とスナップショットの所有をスロット単位で分け、クライアントごとの self/other 対応を明示しました。これは「お互いを正しく見る」ための必須条件ですが、まだ移行途中です。改善した箇所は増えた一方で、実戦的な遅延下で安定させるには、シミュレーション構造をもう一段整理する必要があります。

進め方の判断

ここからは、個別バグ修正ではなく段階的なネットワーク設計として進めます。順番は明確で、まずホスティング運用の安定化、次にスロット所有とスナップショット識別の固定化、その上で武器・アクションの完全対応と補正品質の改善です。この順序で進めることで、テスト結果の因果が追える状態を維持します。

また、2台での反復検証は必須であることも再確認しました。サーバーログ上は正しく見えても、クライアント側でビルド差分や状態差分が残ると挙動が食い違います。pull / rebuild / restart の徹底は、今後の開発手順として固定していきます。

残課題

次にやること

次回は、2人対戦を専用サーバー上で最後まで成立させることに集中します。スロット別アクション処理の完備、権威状態の整理、ロープ・弾道イベント周りの補正強化を進め、接続して動けるだけでなく「実際に遊べる」状態まで持っていきます。