mcpField
U
unity-netcode

unity-netcode

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

unity-netcode について

unity-netcode は、Unity Netcode for GameObjects のマルチプレイヤー設定と操作を行うスキルモジュールです。NGO 開発者向けに、マネージャー、通信、ネットワークオブジェクト、実行制御とバージョン確認を提供します。

主な機能

  1. 01パッケージ、マネージャー、プレハブ設定の検証
  2. 02NetworkManager とトランスポートの作成・設定
  3. 03NetworkObject とプレハブリストの管理
  4. 04ネットワーク変換・物理・アニメーター・スクリプトテンプレートの追加
  5. 05PlayMode での状態確認とネットワーク制御

活用シーン

  1. 01マルチプレイヤープロジェクト用 NetworkManager の構築
  2. 02直接接続または Relay トランスポートの設定
  3. 03ネットワークプレハブの登録とプレイヤープレハブの指定
  4. 04実行時の接続状態確認やクライアント起動

インストール

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

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

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

詳細

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

トリガー

  • マルチプレイヤーのスキャフォールディング
  • ネットワークプレハブの登録
  • スポーンロジックの接続
  • host/server/client の起動
  • マルチプレイヤーの構築、ネットワークプレハブの登録、スポーンロジックの接続、host/server/client の起動

Unity Netcode for GameObjects スキル

Netcode for GameObjects(NGO)のマルチプレイヤー設定と操作を自動化します。すべてのスキルは NGO 2.x のソースに基づいて検証されています。パッケージが存在しない場合、各スキルはインストール手順を含む NoNetcode() エラーを返します。一部のスキルでは NGO 2.5.0 以降も必要です(NGO 2.5+ の機能を参照)。2.x の古いバージョンでは、コンパイルエラーの代わりに、構造化された「requires 2.5.0+」エラーが返されます。これは、AttachableBehaviour/AttachableNode/ComponentController が専用のバージョンシンボルではなく、リフレクションによって検出されるためです。

必須:com.unity.netcode.gameobjects(2.x)、Unity 6000.0 以降。 強く推奨:netcode_* スキルを呼び出す前に、netcode-design を読み込んでください。NGO のライフサイクルと権限のルールは厳格であり、スキルだけでは誤ったビジネスコードを防げません。

ガードレール

動作モード(v1.9 の 3 段階):

  • Approval(デフォルト):クエリ/一覧/情報取得のスキル(netcode_check_setup、netcode_get_manager_info、netcode_get_transport_info、netcode_list_network_objects、netcode_get_network_object_info、netcode_list_network_prefabs、netcode_list_network_behaviours、netcode_get_spawn_manager_info、netcode_get_scene_manager_info、netcode_get_status、netcode_version、netcode_attachable_info)は直接実行されます。ミューテーター(作成/構成/アタッチ/追加)は FullAuto です。MODE_RESTRICTED の場合は、許可付与プロトコルを実行します。

  • Auto/Bypass:SemiAuto と FullAuto は直接実行されます。

  • このモジュールで Auto が禁止されている操作:

    • SkillOperation.Delete → netcode_remove_manager、netcode_remove_network_object、netcode_remove_from_prefabs_list
    • MayTriggerReload = true → netcode_add_network_behaviour_script(新しい .cs を書き込み、スクリプトのコンパイルとドメインリロードを強制します)
    • MayEnterPlayMode = true → netcode_start_host、netcode_start_server、netcode_start_client、netcode_shutdown

    これらを実行できるのは、Bypass モードか、ユーザーが管理する Allowlist エントリーを介した場合のみです。許可付与フローは MODE_FORBIDDEN を返します。ランタイム制御と Behaviour スクリプト生成が、このモジュールに制限が設けられている実質的な理由です。

  • com.unity.netcode.gameobjects がない場合、すべてのスキルはインストール手順を含む NoNetcode() エラーを返します。

禁止事項(よくある誤った思い込み):

  • netcode_spawn_object/netcode_spawn_player は存在しません。スポーンはランタイムコード(NetworkBehaviour)内で .Spawn() または NetworkManager.SpawnManager.InstantiateAndSpawn を介して行う必要があります。スポーンには実行中の NetworkManager が必要なため、スキルではスポーンを代行しません。
  • netcode_register_scene は存在しません。シーンの登録は Build Settings と EnableSceneManagement を通じて行います。このモジュールが提供するのは、設定の読み書きを行う netcode_configure_scene_management のみです。
  • 独立したスキルとしての netcode_set_tick_rate/netcode_set_protocol は存在しません。NetworkConfig の編集にはすべて netcode_configure_manager を使用してください。
  • netcode_start_host が Edit Mode で動作すると想定しないでください。すべてのランタイム制御スキルには PlayMode が必要です。
  • netcode_add_to_prefabs_list が NetworkObject コンポーネントを自動的にアタッチすると想定しないでください。先に netcode_add_network_object を呼び出してください。

ルーティング:

  • GameObject 階層を通常どおり作成する → gameobject
  • NetworkObject/NetworkTransform/その他のネットワーキングコンポーネントをアタッチする → このモジュール
  • 一般的なプレイヤープレハブのコンポーネント(Rigidbody/Collider/Animator) → component
  • ランタイムのシーン切り替え(LoadScene) → 生成された NetworkBehaviour から NetworkManager.SceneManager.LoadScene を呼び出します。このモジュールでは実行しません。
  • コードレベルの設計判断(RPC の方向、NetworkVariable の権限) → アドバイザリの netcode-design

オブジェクトの指定

netcode_add_*/netcode_configure_* スキルでは、通常のターゲットパラメーターを使用します。

  • name — シーンオブジェクト名
  • instanceId — Unity の InstanceID(完全一致)
  • path — 階層パス Parent/Child

同名のオブジェクトが存在する可能性がある場合は、instanceId を優先してください。

スキル

セットアップと検証
スキル目的主なパラメーター
netcode_check_setupパッケージ、NetworkManager、Transport、PlayerPrefab、PrefabsList の整合性を検証しますverbose?
netcode_create_managerNetworkManager と UnityTransport を作成しますname?
netcode_configure_managerNetworkConfig を一括編集します(TickRate、ConnectionApproval、EnableSceneManagement、NetworkTopology など)name?、省略可能なフィールド 15 個以上
netcode_get_manager_infoNetworkConfig とランタイム状態を読み取りますname?
netcode_remove_managerNetworkManager を削除します(事前に Shutdown されている必要があります)name?
トランスポート
スキル目的主なパラメータ
netcode_set_transport_address直接接続: Address / Port / ServerListenAddress を設定address、port、serverListenAddress?
netcode_set_relay_server_dataリレーモード (直接接続とは排他的)address、port、allocationIdBase64、keyBase64、connectionDataBase64、hostConnectionDataBase64?、isSecure?
netcode_set_debug_simulatorレイテンシ / ジッター / パケットロスをシミュレート (開発専用)packetDelay、packetJitter、dropRate
netcode_get_transport_info現在のトランスポート情報を読み取るname?
NetworkObject
スキル目的主なパラメータ
netcode_add_network_objectGameObject に NetworkObject をアタッチname/instanceId/path + NetworkObject のフィールド
netcode_configure_network_object既存の NetworkObject のフィールドを変更上記と同じ
netcode_remove_network_objectNetworkObject を削除 (現在スポーンされていない必要があります)上記と同じ
netcode_list_network_objectsシーン内のすべての NetworkObject を一覧表示 (実行時の状態を含む)includeInactive?
netcode_get_network_object_info単一の NetworkObject を詳細に照会上記と同じ
NetworkPrefabsList
スキル目的主なパラメータ
netcode_create_prefabs_listNetworkPrefabsList アセットを作成path、assignToManager?
netcode_add_to_prefabs_listプレハブを追加 (任意のオーバーライド: None/Prefab/Hash)listPath、prefabPath、overrideMode?、...
netcode_remove_from_prefabs_listプレハブのエントリを削除listPath、prefabPath
netcode_list_network_prefabsすべてのエントリをそのハッシュとともに一覧表示listPath
netcode_set_player_prefabNetworkConfig.PlayerPrefab を設定prefabPath、name?
コンポーネント
スキル目的主なパラメータ
netcode_add_network_transform軸同期トグル付きで NetworkTransform をアタッチtarget + 15 個の任意フィールド
netcode_configure_network_transform既存の NT のフィールド / しきい値を編集PositionThreshold などを含む
netcode_add_network_rigidbodyNetworkRigidbody / NetworkRigidbody2D をアタッチuseRigidbody2D?、useRigidBodyForMotion?
netcode_add_network_animatorNetworkAnimator をアタッチ (Animator が必要)target
netcode_add_network_behaviour_scriptNetworkBehaviour スクリプトテンプレートを生成 (OnNetworkSpawn/Despawn + 任意の RPC/NetworkVariable/Ownership/NGO 2.5+ OnNetworkPreDespawn)className、path、includeRpc?、includeNetworkVariable?、includeOwnershipCallbacks?、includePreDespawn?
netcode_list_network_behavioursシーン内の NetworkBehaviour サブクラスのインスタンスを一覧表示includeInactive?
シーン & スポーン照会
スキル目的
netcode_configure_scene_managementEnableSceneManagement / LoadSceneTimeOut / ClientSynchronizationMode を設定
netcode_get_spawn_manager_info実行時: SpawnedObjects を一覧表示
netcode_get_scene_manager_info実行時: シーンのロード状態を読み取る
実行時制御 (PlayMode が必要)
スキル目的
netcode_start_hostHost を開始
netcode_start_serverServer を開始
netcode_start_clientClient を開始
netcode_shutdownシャットダウン (任意の discardMessageQueue)
netcode_get_statusIsHost / IsServer / IsClient、LocalClientId、ConnectedClients、NetworkTime を読み取る
NGO 2.5+ の機能 {#ngo-25-features}

Netcode for GameObjects 2.5.0 で追加されました(パッケージの CHANGELOG、PR #3518 で確認済み)。AttachableBehaviour / AttachableNode は、従来の NetworkObject の親子関係における問題を回避する、別方式の「アタッチ」親子関係システムです。ComponentController は、コンポーネントのリストの有効/無効状態をネットワーク同期します。NGO 2.0~2.4.x(NETCODE_GAMEOBJECTS は引き続き有効ですが、これらの型はまだ存在しません)では、以下の各スキルは失敗する代わりに、構造化された requires 2.5.0+ エラーを返します。最初に netcode_version を呼び出して確認してください。

スキル目的主なパラメーター
netcode_versionインストール済みの NGO のバージョンと 2.5+ の機能の利用可否を報告します—
netcode_attachable_infoシーン内の AttachableBehaviour / AttachableNode / ComponentController の分布を監査しますincludeInactive?
netcode_attachable_addNetworkObject の子階層にある GameObject に AttachableBehaviour をアタッチしますtarget + autoDetach?(None/OnAttachNodeDestroy/OnDespawn/OnOwnershipChange、カンマ区切り)
netcode_attachable_node_addAttachableNode(AttachableBehaviour がアタッチするソケット)をアタッチしますtarget + detachOnDespawn?
netcode_component_controller_addGameObject に ComponentController をアタッチしますtarget + startEnabled?
netcode_component_controller_configureStartEnabled を設定し、または target GameObject から同期対象のコンポーネントリストを設定します(Inspector の Components フィールドに GameObject をドラッグする操作に相当します)target、targetPaths?、clearExisting?、startEnabled?

注意事項:

  • AttachableBehaviour は、NetworkObject 自身の GameObject に直接ではなく、その階層内にある子 GameObject に配置する必要があります。
  • AttachableNode は、それにアタッチする AttachableBehaviour インスタンスとは異なる NetworkObject に属している必要があります。
  • Attach() / Detach() は実行時専用の呼び出しです(両方のインスタンスがスポーン済みである必要があります)。意図的にスキルとして公開していません。理由は上記の DO NOT と同じです。netcode_spawn_object が存在しないのと同様、呼び出し元には実行中の NetworkManager が必要であり、NetworkBehaviour のコードから実行する必要があります。
  • netcode_component_controller_configure の targetPaths は GameObject 全体を受け付けます。NGO 独自の OnValidate()(このスキルによって呼び出されます)は、それぞれの GameObject を、public な bool enabled プロパティを持つ対象の子コンポーネントすべてに展開し、NetworkBehaviour/NetworkObject/NetworkManager はスキップします。これは、Inspector の Components フィールドに GameObject をドラッグした場合と同じ動作です。OnValidate() が存在しない場合、または例外をスローした場合、応答には warning が含まれ、項目は展開されません。

クイックスタート

import unity_skills as u

# 1. Inspect current state
u.call_skill("netcode_check_setup")

# 2. Create NetworkManager + UnityTransport
u.call_skill("netcode_create_manager", name="NetworkManager")

# 3. Configure the NetworkConfig
u.call_skill("netcode_configure_manager",
    tickRate=30,
    connectionApproval=False,
    enableSceneManagement=True,
    networkTopology="ClientServer")

# 4. Transport
u.call_skill("netcode_set_transport_address",
    address="127.0.0.1", port=7777, serverListenAddress="0.0.0.0")

# 5. Player prefab setup
#    NOTE: add_network_object on a prefab path depends on GameObjectFinder support.
#    Safer route: instantiate the prefab in the scene first, then attach.
u.call_skill("netcode_add_network_object", path="Assets/Prefabs/Player.prefab")
u.call_skill("netcode_create_prefabs_list", path="Assets/NetworkPrefabs.asset")
u.call_skill("netcode_add_to_prefabs_list",
    listPath="Assets/NetworkPrefabs.asset",
    prefabPath="Assets/Prefabs/Player.prefab")
u.call_skill("netcode_set_player_prefab", prefabPath="Assets/Prefabs/Player.prefab")

# 6. Generate a NetworkBehaviour template
u.call_skill("netcode_add_network_behaviour_script",
    className="PlayerController",
    path="Assets/Scripts/PlayerController.cs",
    includeRpc=True, includeNetworkVariable=True)

# 7. Drive the session in PlayMode
u.call_skill("editor_play")   # enter PlayMode
u.call_skill("netcode_start_host")
u.call_skill("netcode_get_status")
u.call_skill("netcode_shutdown")
u.call_skill("editor_stop")

重要なルール(必ずお読みください)

  1. Spawn/Despawn はスキルとして公開されていません。 サーバー権限の NetworkBehaviour 実行時コードから呼び出す必要があります。スキルが扱うのは、プレハブの登録と NetworkManager のライフサイクルのみです。
  2. PlayerPrefab は NetworkPrefabsList に含まれている必要があります(2.x では実行時に検証されます)。netcode_add_to_prefabs_list で登録してください。
  3. 実行時制御スキル(start_*/shutdown)には PlayMode が必要です。 Edit Mode から呼び出すとエラーが返されます。
  4. Address と ServerListenAddress の意味は異なります。 クライアントでは、Address は接続先サーバーの IP です。サーバーでは、ServerListenAddress はバインドアドレスです(通常は 0.0.0.0)。
  5. useRigidbody2D は NetworkRigidbody と NetworkRigidbody2D を切り替えます。関連しない物理設定(例:Physics2D.AutoSyncTransforms)は別の場所で設定します。

対象バージョン

NGO 2.x(2.13.1 で検証済み)を対象としています。従来の 1.x(古いプレハブリストの構成、異なる RPC モデル)は、このモジュールの対象外です。NGO 2.5+ の機能のスキルには、対象範囲内で 2.5.0 以降が必要です。利用する前に netcode_version を呼び出して確認してください。

正確なシグネチャ

正確なパラメーター名、デフォルト値、戻り値のフィールドについては、GET /skills/schema または unity_skills.get_skill_schema() に問い合わせてください。このドキュメントはルーティングとベストプラクティスのガイドであり、シグネチャの正式な情報源ではありません。

コメント