mcpField
G
godot-multiplayer-networking

godot-multiplayer-networking

github.com/thedivergentai開発909359 回インストール2 週間前に更新
リポジトリ

godot-multiplayer-networking について

Godot のマルチプレイヤーネットワーク向けスキルガイドで、トランスポート、サーバー権威、同期、セキュリティ、ロールバックを扱います。実装手順に沿ってスクリプトを整理し、帯域やクライアント状態を管理するゲーム開発に役立ちます。

主な機能

  1. 01ENet のホスト・クライアント設定
  2. 02サーバー権威の検証と安全な RPC
  3. 03適応型の状態同期スロットリング
  4. 04パケット頻度制限とコンパクトなパッキング
  5. 05クライアント予測・補正・ロールバック
  6. 06可視性グリッドによる対象の絞り込み

活用シーン

  1. 01ヘッドレス専用サーバーの構築
  2. 02クライアントからのゲーム操作の検証
  3. 03頻繁な移動更新の帯域削減
  4. 04大規模マップで可視範囲のエンティティを同期

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/thedivergentai/game-design-agentic-skills --skill godot-multiplayer-networking

インストール後、Claude Code で/godot-multiplayer-networkingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
migration-notes.md
rpc-lobby-and-sync.md
scripts/
client_network_setup.gd
client_prediction_synchronizer.gd
game_state_sync_manager.gd
multiplayer_spawner_manager.gd
net_adaptive_sync_throttle.gd
net_anti_desync_reconciler.gd
net_custom_id_mapper.gd
net_enet_expert_config.gd
net_headless_server_auto_start.gd
net_heartbeat_monitor.gd
net_lan_discovery.gd
net_packet_bit_packer.gd
net_packet_rate_limiter.gd
net_rollback_helper.gd
net_visibility_grid_culling.gd
network_error_handler.gd
network_input_synchronizer.gd
networked_interpolator.gd
packet_peer_latency_test.gd
secure_variable_synchronizer.gd
secured_rpc_pattern.gd
server_authoritative_controller.gd
server_dedicated_host.gd

詳細

絶対にやってはいけないこと(ネットワーキング上級者向けルール)

コアアーキテクチャ
  • 高頻度データ(位置/移動)に Reliable を絶対に使わないでください — Reliable パケットは確認応答があるまで後続のすべてのパケットをブロックします(Head-of-Line ブロッキング)。UnreliableOrdered を使用してください。
  • 共有状態(体力/お金/インベントリ)について、クライアントを絶対に信用しないでください — クライアントはアクションを提案するだけにしてください。サーバーは必ず結果を検証してブロードキャストする必要があります。
  • サーバーの IP を絶対にハードコードしないでください — 常にディスカバリー(net_lan_discovery.gd)を可能にするか、CLI/UI 経由で IP を渡してください。
パフォーマンスと帯域幅
  • 同じデータを毎フレーム絶対に送信しないでください — net_adaptive_sync_throttle.gd を使用して、状態が大きく変化した場合、または一定の Hz 間隔(例:20Hz)でのみ更新を送信してください。
  • 高速同期に JSON を絶対に使用しないでください — 文字列のシリアライズは通信時のデータ量が非常に大きくなります。ビットパッキング(net_packet_bit_packer.gd)を使用して、パケットを 100 バイト未満に抑えてください。
  • 必要がない場合、すべてのピアに絶対にブロードキャストしないでください — 大規模なワールドでは、インタレスト管理(net_visibility_grid_culling.gd)を使用してください。森にいるプレイヤーが、街にいるプレイヤーの位置を知る必要はありません。
セキュリティ
  • 毎秒の RPC 呼び出し回数に絶対に上限を設けてください — 攻撃者は 1,000 件の「Attack」RPC をサーバーに送りつけ、ゲームをクラッシュさせる可能性があります。net_packet_rate_limiter.gd を使用してください。
  • PeerID を絶対にエンドユーザーに公開しないでください — PeerID は内部用です。必ず、データベースの永続的な UserIDs にマッピングしてください(net_custom_id_mapper.gd)。
  • GUI を有効にした状態で専用サーバーを絶対に実行しないでください — --headless(net_headless_server_auto_start.gd)を使用してリソースを節約し、安定性を確保してください。

デシジョンツリー(トランスポート/権限/同期 Hz)

質問推奨スクリプト
デスクトップ/コンソールの LAN または専用 UDPENet必須 net_enet_expert_config.gd
ブラウザー/NAT の影響を受けやすいピアWebRTC(または WebSocket フォールバック)公式ドキュメント+ピアラッパー。安全な RPC スクリプトも引き続き使用してください
ゲームプレイの状態を管理するのは誰ですか?サーバー権威型必須 server_authoritative_controller.gd
GUI のない専用ホスト--headless必須 net_headless_server_auto_start.gd / server_dedicated_host.gd
位置の同期は 10~20 Hz。毎フレームは不可アダプティブスロットリング必須 net_adaptive_sync_throttle.gd

読み込まないでください — メモリからロビー/RPC の初心者向けレシピを読み込まず、以下のゴールデンパスを使い、該当するスクリプトだけを開いてください。

ゴールデンパス

  1. ホスト/専用サーバー → server_dedicated_host.gd + net_headless_server_auto_start.gd。クライアント → client_network_setup.gd。
  2. セキュアな RPC → secured_rpc_pattern.gd + net_packet_rate_limiter.gd + secure_variable_synchronizer.gd。
  3. 予測/リコンサイル → client_prediction_synchronizer.gd + net_anti_desync_reconciler.gd。戦闘/ロールバックの場合 → net_rollback_helper.gd。
  4. インタレストカリング → 位置をブロードキャストする前に net_visibility_grid_culling.gd を使用してください。

利用可能なスクリプト

トランスポートとホスト
権限、RPC、同期
非同期/ロールバック/関心領域

エキスパート向けのヒント

  • 位置/移動:UnreliableOrdered とスロットリングを使用します。毎フレーム reliable で送信してはいけません。
  • クライアントは提案し、サーバーが検証して結果をブロードキャストします。
  • 大規模なワールドでは、同期 Hz を増やす前に可視性グリッドでカリングします。

詳細(必要に応じて)

  • RPC モード、ロビーのハンドシェイク、パペット補間 → rpc-lobby-and-sync.md
  • 差分圧縮とネットワークシミュレーターの概念については、このリファレンスを参照してください(LLM の知識不足:unreliable と reliable の HoL ブロッキングの違いは一般的な知識ではありません)。

リファレンス

段階的な情報開示:特定の API を調べる場合にのみ公式ドキュメントへのリンクを開いてください。関連するスキルにルーティングする場合は、関連スキルを読み込んでください。知識の全領域を事前に読み込まないでください。

公式ドキュメント
  • ハイレベルマルチプレイヤー — RPC モード、オーソリティ、ピアのライフサイクルを理解し、ホスト/参加ロビーやサーバー検証済みアクションを実装します。
  • ネットワーキング — トランスポートの一覧(ENet/WebSocket/WebRTC/HTTP)を参考に、プラットフォームや NAT の制約に合ったピアを選びます。
  • MultiplayerAPI — multiplayer シングルトン:ピア ID、接続シグナル、rpc/rpc_id の呼び出し口を扱います。
  • MultiplayerPeer — すべてのバックエンドで共通する転送モード(信頼性あり/なし/順序なし)と接続ステータスを扱います。
  • ENetMultiplayerPeer — LAN、専用サーバー、多くのアクションゲームで使われる UDP ホスト/クライアントピアです。
  • SceneMultiplayer — デフォルトの MultiplayerAPI:ルートパス、認証コールバック、シーンツリーの RPC ルーティングを扱います。
  • MultiplayerSpawner — スポーン/デスポーンのレプリケーションにより、途中参加者も同じネットワーク化されたシーングラフを共有できます。
  • MultiplayerSynchronizer — アドホックな位置 RPC に代わる、プロパティのレプリケーション、変更時の差分、可視性フィルターを扱います。
  • Node — 入力と共有状態の所有権ルールとして、set_multiplayer_authority/is_multiplayer_authority を扱います。
  • PacketPeerUDP — ハイレベルなマルチプレイヤーピアの外部で、LAN 検出ブロードキャストに使う UDP の生の送受信を行います。
  • WebRTC — ENet UDP だけではファイアウォールを通過できない場合に使う、ブラウザー対応の P2P 接続方法です。
  • コマンドラインチュートリアル — 専用サーバーの起動や複数インスタンスのテストに使う --headless と CLI フラグを扱います。
関連スキル
前提条件
  • godot-project-foundations — ホスト/参加機能や専用サーバーのビルドに必要な、プロジェクトの構成、Autoload、エクスポート/機能フラグを扱います。
  • godot-gdscript-mastery — セキュアな RPC やビットパッカーで使う、型付きの @rpc アノテーション、Callable、PackedByteArray のパターンを扱います。
  • godot-input-handling — InputMap の読み取りをシミュレーションから分離し、クライアントが意図を送信して、オーソリティが結果を管理する方法を扱います。
補完
  • godot-adapt-single-to-multiplayer — このスキルのロビー/RPC/ENet ツールキットを適用する前に、移行の形(オーソリティの分割、予測用のシェル)を確認します。
  • godot-autoload-architecture — ホスト/参加や再接続のフロー中、シーン変更後も存続するセッション/ロビー用 Autoload。
  • godot-signal-architecture — トランスポート RPC から分離されたままの、ローカルのピア接続/ロビーイベント。
  • godot-server-architecture — オーソリティによるシミュレーションで使用する、ヘッドレスホストの基盤と PhysicsServer/RID パターン。
  • godot-export-builds — 実際の複数インスタンステストに使う、専用サーバーのエクスポートプリセットと CLI パッケージング。
  • godot-debugging-profiling — localhost では決して発生しない同期バグを検出する、RTT/ジッターのオーバーレイとリモートデバッグの手法。
  • godot-save-load-systems — PeerID を永続的な識別子として扱わずに、UserID、ロビー設定、再接続トークンを永続化します。
下流/利用側
  • godot-performance-optimization — ピア負荷によって帯域幅/CPU の予算を超過した場合に、レプリケーション Hz と関心領域のカリングを制限します。
  • godot-monte-carlo-balancer — ネットコードの変更で実効的な武器のタイミングやアビリティの有効時間が変わった後に、経済バランス/TTK を再調整します。
  • godot-genre-battle-royale — BR 規模での、多数のピアに対応する関心管理と途中参加時のスナップショット。
  • godot-genre-moba — マルチプレイヤーアリーナ向けの、固定ティックのオーソリティ、アビリティ RPC、観戦に安全な状態同期。
マスター
  • godot-master — ライブラリのルーターとミラーされたモジュールのエントリ。複数の領域にまたがるネットワーク上の課題をどのドメインスキルが担当するか調べるときに開きます。

コメント