mcpField
U
unity-netcode-design

unity-netcode-design

github.com/besty0728開発1.9k73 回インストール今日更新
リポジトリ

unity-netcode-design について

Netcode for GameObjects 2.x でマルチプレイヤーコードを開発・レビューする人向けのドキュメントスキルです。ライフサイクル、RPC、ネットワーク変数、スポーン、シーン、トランスポート設定をソース付きで解説します。

主な機能

  1. 01NetworkBehaviour のライフサイクル指針
  2. 02RPC と所有権のルール
  3. 03NetworkVariable のシリアライズ制約
  4. 04NetworkObject のスポーンとシーンのルール
  5. 05UnityTransport の設定指針

活用シーン

  1. 01マルチプレイヤーゲームコードのレビュー
  2. 02サーバー権威または分散権威の設計
  3. 03RPC とネットワーク変数の動作調査
  4. 04ネットワークオブジェクトとトランスポートの設定

インストール

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

$npx skills add https://github.com/besty0728/unity-skills --skill unity-netcode-design

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

同梱ファイル

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

LIFECYCLE.md
OWNERSHIP.md
PITFALLS.md
RPC.md
SCENE.md
SPAWNING.md
TRANSPORT.md
VARIABLES.md

詳細

このモジュールのスキルを呼び出す前に: スキル名や説明からパラメーターを推測してスキルを呼び出そうとしている場合は、そこで止まり、まずこのファイルを読むか、GET /skills/recommend?includeSchema=true でスキーマを取得してください。recommend/schema からパラメーターの定義をすでに取得している場合は、そのまま dryRun に進んで構いません。

トリガー

  • マルチプレイヤーコードの作成またはレビュー
  • サーバー/分散権限の設計
  • RPC または NetworkVariable の接続
  • netcode のデバッグ
  • マルチプレイヤーコードの作成またはレビュー、サーバー/分散権限の設計、RPC またはネットワーク変数の接続、netcode 問題の調査

Netcode for GameObjects - 設計ルール

参考用モジュールです。すべてのルールは com.unity.netcode.gameobjects 2.x のソースから抽出したものです。各ルールには、根拠を確認できるよう具体的なファイル/行が記載されています。

モード:ドキュメントのみ — 制限対象の REST スキルはありません。どの動作モード(Approval / Auto / Bypass)でも自由に読み込めます。

このモジュールを読み込むタイミング

以下を作成またはレビューする前に読み込んでください。

  • NetworkBehaviour スクリプト(OnNetworkSpawn / OnNetworkDespawn / RPC / NetworkVariable)
  • NetworkManager の起動/終了/シーン切り替え
  • NetworkObject の Spawn / Despawn / ChangeOwnership / TrySetParent
  • UnityTransport の設定(直接接続/Relay)
  • IsHost / IsServer / IsClient / IsOwner に基づいて分岐するコード

重要ルールの概要(サブドキュメントを読み飛ばす場合も覚えておいてください)

#ルール参照箇所
1Spawn() / Despawn() は Server/Host でのみ呼び出す必要があります。クライアント側から呼び出すと失敗します。Runtime/Core/NetworkObject.cs:1884, 1921
2OnNetworkSpawn() は Unity の Start() より前に、Awake/OnEnable より後に実行されます。Runtime/Core/NetworkBehaviour.cs:704 + InvokeBehaviourNetworkSpawn callers
3従来の [ServerRpc] メソッド名は末尾が ServerRpc である必要があります。[ClientRpc] の末尾は ClientRpc である必要があります(ILPP によりコンパイル時に適用されます)。Editor/CodeGen/ ILPP validators
4新しい [Rpc(SendTo.X)] に命名上の制約はありません。SendTo には 11 個の値があります。Runtime/Messaging/RpcTargets/RpcTarget.cs:9-80
5PlayerPrefab は NetworkPrefabsList または NetworkConfig.Prefabs に存在する必要があります。存在しない場合、2.x ランタイムで拒否されます。Runtime/Configuration/NetworkConfig.cs:40 + NetworkPrefabsList.cs:14
6入れ子の NetworkObject は禁止されています(NetworkObject を含む NetworkObject プレハブ)。実行時には TrySetParent で親子関係を変更してください。Runtime/Core/NetworkObject.cs:2135-2215
7NetworkVariable<T> では、T が unmanaged であるか、INetworkSerializable を実装している必要があります。string、List<>、class は拒否されます。Runtime/NetworkVariable/NetworkVariable.cs:12 + ILPP
8NetworkList<T> では T: unmanaged, IEquatable<T> が必要です。NetworkVariable<List<T>> ではありません。Runtime/NetworkVariable/Collections/NetworkList.cs:14
9NetworkSceneManager.LoadScene/UnloadScene は Server でのみ実行できます。Runtime/SceneManagement/NetworkSceneManager.cs:1496, 1252
10UnityTransport.SetRelayServerData と SetConnectionData は相互に排他的です。どちらか一方を使用してください。Runtime/Transports/UTP/UnityTransport.cs:776-897

サブドキュメントの参照先

サブドキュメント読むタイミング
LIFECYCLE.mdライフサイクル、コールバックの実行順序、Awake/OnNetworkSpawn/Start の違い
OWNERSHIP.mdIsOwner/IsServer/IsHost の権限マトリックス、ChangeOwnership、分散権限
RPC.mdRPC 属性の選択、SendTo のセマンティクス、RpcInvokePermission、非推奨の方法
VARIABLES.mdNetworkVariable/NetworkList の初期化とシリアル化の制約
SPAWNING.mdプレハブの登録 → Spawn → Despawn、GlobalObjectIdHash、SpawnAsPlayerObject
SCENE.mdNetworkSceneManager、EnableSceneManagement、シーン内オブジェクトの同期
TRANSPORT.mdUnityTransport の直接接続/Relay/DebugSimulator の設定
PITFALLS.md具体的なハルシネーションの落とし穴 30 件

他のモジュールへの振り分け

  • NetworkBehaviour スクリプトの生成 → 機能モジュール netcode の netcode_add_network_behaviour_script を使用します
  • シーン内での NetworkObject/NetworkTransform の一括アタッチ → netcode モジュールの Components スキルを使用します
  • アーキテクチャレベルの判断(サーバー権限型か分散オーソリティか) → architecture も読み込みます

バージョンの対象範囲

このドキュメントは com.unity.netcode.gameobjects 2.x を対象としています(2.11.0、Unity 6000.0 以降で検証済み)。一部の API(SendTo.Authority、RpcInvokePermission、ユニバーサルな [Rpc] 属性)は 1.x には存在しません。

コメント