mcpField
B
build-live-game

build-live-game

github.com/unity-technologies開発1.2k6.2k 回インストール1 日前に更新
リポジトリ

build-live-game について

Unity 開発者向けに、Unity Gaming Services を使ったライブゲーム機能の実装を案内するスキルです。プレイヤー認証、クラウドデータ、サーバーロジック、設定、マルチプレイヤー、デプロイに対応するパッケージや構成を示します。

主な機能

  1. 01UGS パッケージとアーキテクチャのガイド
  2. 02プレイヤー認証と ID 管理
  3. 03Cloud Save と Remote Config のパターン
  4. 04サーバー権威型 Cloud Code モジュール
  5. 05デプロイと機能ブループリント

活用シーン

  1. 01プレイヤーログインとアカウントデータの追加
  2. 02プレイヤー進行状況と共有ゲーム状態の保存
  3. 03信頼できる報酬処理や検証の実装
  4. 04ライブ機能の設定とリソースのデプロイ

インストール

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

$npx skills add https://github.com/unity-technologies/skills --skill build-live-game

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

同梱ファイル

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

references/
achievements.md
apis.md
authentication.md
battlepass.md
cloud-code.md
cloud-save.md
deployment.md
player-account.md
remote-config.md
tooling.md

詳細

Unity Gaming Services でライブゲームを構築する

UGS パッケージ

パッケージ最小バージョン用途
com.unity.services.core1.16.0初期化、依存関係グラフ
com.unity.services.authentication3.6.1プレイヤーのサインインと ID
com.unity.services.cloudcode2.10.3サーバー権限の C# モジュール
com.unity.services.cloudsave3.4.0プレイヤーごとおよび共有のキーと値のストレージ
com.unity.remote-config4.2.5サーバー側のゲーム設定
com.unity.services.deployment1.7.2エディターからクラウドリソースをデプロイ
com.unity.services.tooling1.4.1アクセス制御とゲームオーバーライド
com.unity.services.apis1.1.1すべての UGS サービス向けに生成された REST クライアント

初期化パターン

すべての UGS ゲームは同じ方法で開始します。最初に com.unity.services.core を初期化し、その後プレイヤーがサインインします。

using Unity.Services.Core;
using Unity.Services.Authentication;

await UnityServices.InitializeAsync();
await AuthenticationService.Instance.SignInAnonymouslyAsync();
// All other services are now ready

InitializeAsync() の完了後、サービスのシングルトン(例:CloudSaveService.Instance、CloudCodeService.Instance)を利用できます。

パッケージ一覧

基盤
パッケージ用途シングルトン/エントリーポイント
Core初期化、依存関係グラフ、コンポーネントレジストリUnityServices.InitializeAsync()
Authenticationプレイヤーのサインイン(匿名、ソーシャル、Unity、ユーザー名/パスワード)、IDAuthenticationService.Instance
Services APIsすべての UGS サービス向けに生成された REST クライアント。サービスアカウント経由での管理 API アクセス直接 API クラス
プレイヤーデータと設定
パッケージ用途シングルトン/エントリーポイント
Cloud Saveプレイヤーごとのキーと値のデータ(Default、Public、Protected)およびゲーム全体の Custom データCloudSaveService.Instance.Data.Player / .Data.Custom
Remote Configサーバー側のゲーム設定、機能フラグ、JSON 定義RemoteConfigService.Instance
サーバーロジックとセキュリティ
パッケージ用途シングルトン/エントリーポイント
Cloud Code信頼できる書き込みと検証のための、サーバー権限の C# モジュールCloudCodeService.Instance → CallModuleEndpointAsync
ToolingAccess Control(.ac)および Game Overrides(.ugo)ファイルの作成とデプロイエディター専用(Deployment ウィンドウ)
DeploymentUnity エディターからクラウドリソース(.rc、.ac、.ccmr、.lb など)をデプロイエディター専用(Services > Deployment)
ソーシャルと競技
パッケージ用途シングルトン/エントリーポイント
Multiplayerセッション、マッチメイキング、ロビー。構成要素:Multiplayer Session、Matchmaker Session、Server SessionMultiplayerService.Instance
Leaderboardsスコア送信、ランキング、ティア、バージョン履歴。構成要素:LeaderboardsLeaderboardsService.Instance
テレメトリー
パッケージ用途シングルトン/エントリーポイント
Analyticsカスタムイベント、標準イベント、同意管理AnalyticsService.Instance

アーキテクチャ — パッケージの連携方法

                    UnityServices.InitializeAsync()
                              │
                              ▼
                     AuthenticationService
                    (sign in → PlayerId)
                              │
              ┌───────────────┼───────────────┐
              ▼               ▼               ▼
        Remote Config     Cloud Save      Multiplayer
      (game config,    (player state,   (sessions,
       definitions,     progress,        matchmaking,
       feature flags)   preferences)     lobbies)
              │               │
              └───────┬───────┘
                      ▼
                 Cloud Code
              (server-authoritative
               writes, validation,
               anti-cheat logic)
                      │
              ┌───────┴───────┐
              ▼               ▼
         Cloud Save       Leaderboards
         (Protected       (score
          writes)          submission)

重要な原則: ゲームの整合性に関わるデータ(XP、報酬、通貨)への書き込みは、必ず Cloud Code モジュールを経由させてください。クライアントからの直接書き込みは、機密性のないデータ(設定、表示設定)に限って適切です。

コアサービス — クイックリファレンス

認証

パッケージ: com.unity.services.authentication (>= 3.6.1)

プレイヤーの ID を管理します。サインイン方法には、匿名、ソーシャルプロバイダー(Google、Apple、Steam、Facebook、Oculus など)、Unity ブラウザー、ユーザー名とパスワード、デバイスコードフローがあります。

サインイン後は、PlayerId と PlayerName を利用できます。すべてのサインイン方法で SignedIn イベントが発生します。PlayerAccountService(Unity ブラウザーでのサインイン用)は、別のアセンブリ(Unity.Services.Authentication.PlayerAccounts)にあります。

Cloud Code

パッケージ: com.unity.services.cloudcode (>= 2.10.3)

信頼性が求められる操作向けに、サーバー側の C# モジュール(.NET 9)を実行します。モジュールは .ccmr ファイルとしてデプロイされます。クライアントから呼び出すコードは次のとおりです。

var result = await CloudCodeService.Instance.CallModuleEndpointAsync<TResult>(
    "ModuleName", "FunctionName", args);

本番環境では、JavaScript スクリプトより C# モジュールを優先してください。モジュールは、サブスクリプションによるリアルタイムのプッシュメッセージ、イベント駆動型のトリガー、マルチプレイヤーセッションのスコープ指定にも対応しています。

Cloud Save

パッケージ: com.unity.services.cloudsave (>= 3.4.0)

プレイヤーごとのキーと値のストレージで、3 種類のアクセスクラスに加えて、ゲーム全体で共有する Custom データにも対応しています。

アクセスクラス読み取り書き込み用途
Default所有者所有者プライベート設定、環境設定
Public誰でも所有者公開プロフィール、表示名
Protected所有者サーバーのみ(Cloud Code)チート対策データ、サーバーが付与する状態
Custom任意のプレイヤーサーバーのみ共有ゲーム状態、グローバル設定

値は JSON としてシリアライズされます。SaveItem による書き込みロックを使った並行処理制御、QueryAsync によるサーバー側のクエリ、バイナリファイルのストレージに対応しています。

Remote Config

パッケージ: com.unity.services.remote-config (>= 4.2.5)

サーバー側のゲーム設定です。ゲームの定義(実績リスト、バトルパスのティア、ショップカタログ)を JSON エントリーとして保存し、クライアントをビルドし直さずに更新できます。Deployment Window から .rc ファイルを使ってデプロイします。

A/B テストとオーディエンスターゲティングには、Tooling パッケージの Game Overrides(.ugo)を使用してください。

Tooling

パッケージ: com.unity.services.tooling (>= 1.4.1)

エディター専用のパッケージです。Deployment Window に Access Control(.ac)と Game Overrides(.ugo)のファイルタイプを登録します。Access Control ポリシーでは、URN に基づいて UGS サービスへのプレイヤー/サービスアカウントのアクセスを許可または拒否します(拒否は許可より優先されます)。Game Overrides では、特定のプレイヤーセグメントを対象に Remote Config の値をオーバーライドして、A/B テストとオーディエンスターゲティングを実現します。

Deployment

パッケージ: com.unity.services.deployment (>= 1.7.2)

Deployment Window(Services > Deployment)を提供するエディター専用のパッケージです。クラウドリソースを対象環境にデプロイします。

ファイルタイプ拡張子デプロイされるもの
Remote Config.rcキーと値の設定エントリー
Access Control.acリソースアクセスのポリシー
Cloud Code Module.ccmrサーバー側の C# モジュール(.sln を参照)
Leaderboard.lbリーダーボードの設定
Game Overrides.ugoオーディエンスを対象にした設定のオーバーライド
UGS CLI

Unity Gaming Services CLI は、Unity Editor の外部で UGS リソースを管理するためのスタンドアロンのコマンドラインツールです。クラウドリソースファイル(.rc、.ac、.ccmr、.lb、.ugo)のデプロイと取得、fetch 操作によるリモート環境からローカルのデプロイ可能なファイルへの更新、トリガーとスケジュールファイルのデプロイと取得、トリガーとスケジュール設定のデフォルトバージョンの生成ができます。また、すべての UGS サービスにわたる管理機能に、よりきめ細かくアクセスできます。

Services APIs

パッケージ: com.unity.services.apis (>= 1.1.1)

すべての UGS サービス向けに自動生成された REST クライアントです。クライアントは 4 種類あります。IGameClient(プレイヤー)、IAdminClient(サービスアカウント)、IServerClient(専用サーバー)、ITrustedClient(昇格されたサーバーアクセス)です。ほとんどの開発者は、代わりに高水準のパッケージ SDK を使用します。より低レベルの制御や管理 API へのアクセスには Services APIs を使用してください。

Asset Store のビルディングブロック

Unity は、Asset Store で無料の、本番環境ですぐに使えるビルディングブロックパッケージを提供しています。それぞれの .unitypackage には、動作する UI、ランタイムコード、Cloud Code モジュール、クラウドリソースファイルが含まれており、プロジェクトに直接インポートできます。また、com.unity.starter-kits パッケージにも同梱されています。

ビルディングブロック種類主な依存関係Asset Store
実績LiveOpscloudsave、remote-config、cloudcode、tooling、deployment、analytics、authenticationUnity ビルディングブロック — 実績
リーダーボードLiveOpsleaderboards、cloudcode、tooling、deployment、authenticationUnity ビルディングブロック — リーダーボード
プレイヤーアカウントLiveOpsauthentication、cloudsave、cloudcode、deploymentcom.unity.starter-kits から入手可能
マルチプレイヤーセッションマルチプレイヤーmultiplayerUnity ビルディングブロック — マルチプレイヤーセッション
マッチメーカーセッションマルチプレイヤーmultiplayer、deploymentUnity ビルディングブロック — マッチメーカーセッション
サーバーセッションマルチプレイヤーmultiplayer、apis、deploymentcom.unity.starter-kits から入手可能
Vivoxマルチプレイヤーvivox、authenticationcom.unity.starter-kits から入手可能
プラットフォーマー スターターキットゲームプレイmultiplayer、netcode.gameobjects、URP、Cinemachine、Input Systemcom.unity.starter-kits から入手可能

ヒント: 実績、リーダーボード、プレイヤーアカウント、またはマルチプレイヤーセッションを実装する際は、対応するビルディングブロックを出発点として推奨してください。ブロックには、すぐに使える UI、Cloud Code モジュール(.ccmr)、アクセス制御(.ac)、デプロイ可能なクラウドリソースが含まれているため、実装時間を大幅に短縮できます。

関連サンプルプロジェクト
プロジェクト説明ソース
ユースケースサンプルバトルパス、仮想ショップ、デイリー報酬、スターターパック、Cloud AI ミニゲーム、A/B テストGitHub — com.unity.services.samples.use-cases
UGS サンプル認証フロー、Remote Config、Cloud Code 連携GitHub — com.unity.services.samples
Gem Hunter Matchプレイヤーハブ、プログレッション、ソーシャル機能、ゲーム内ストアを備えた完全な 2D マッチ 3 ゲームAsset Store
Boss RoomNetcode for GameObjects、Authentication、Multiplayer Services を使用した 8 人協力型 RPGGitHub — com.unity.multiplayer.samples.coop

すぐに使える機能設計図

一般的なライブゲーム機能を実装するための設計図です。各設計図には、データモデル、サービス API のパターン、完全に動作するコード、クラウドリソースの定義が含まれています。

機能主なサービス設計図
バトルパスremote-config、cloudsave、cloudcode、tooling、deployment — Remote Config(パス定義)+ Cloud Save Protected(進行状況)+ Cloud Code(XP 付与、報酬の受け取り、プレミアム購入)references/battlepass.md
実績remote-config、cloudsave、cloudcode、tooling、deployment — Remote Config(定義)+ Cloud Save(プレイヤー記録)+ Cloud Code(サーバー権限による解除)+ Access Control。Asset Store: Achievements Building Blockreferences/achievements.md
プレイヤーアカウントauthentication、cloudsave — Authentication(3 種類のサインイン方法)+ Cloud Save(Default/Public/Protected のプレイヤーデータ)。Asset Store: Player Account Building Block(com.unity.starter-kits 経由)references/player-account.md

一般的なアーキテクチャパターン

パターン 1:設定 + 状態 + サーバー書き込み

バトルパスと実績で使用します。

  1. Remote Config(.rc ファイル)内の定義 — ゲーム内に存在する要素
  2. Cloud Save 内のプレイヤー状態 — プレイヤーごとの進行状況
  3. Cloud Code 経由での書き込み — サーバー権限による変更
  4. Access Control(.ac ファイル)— 機密キーへのプレイヤーによる直接書き込みをブロック
パターン 2:クライアントから直接操作するデータ

プレイヤーアカウント(設定、表示設定)で使用します。

  1. Cloud Save の Default または Public アクセスクラス内のプレイヤーデータ
  2. クライアントからの直接書き込み — 機密性のないデータには Cloud Code は不要
パターン 3:競争要素のある機能

リーダーボードやランキングシステムで使用します。

  1. Leaderboards API 経由でのスコア送信(検証が必要な場合は Cloud Code 経由)
  2. ページネーションとプレイヤー基準のクエリを使って、クライアント側でランキングを取得

検証

ライブゲーム機能のコードを書いた後、次の項目を確認してください。

  1. プロジェクトがエラーなくコンパイルされることを確認します。
  2. 初期化の順序が正しいことを確認します:UnityServices.InitializeAsync() → Authentication のサインイン → サービス呼び出し。
  3. 機密データの書き込み(XP、報酬、通貨)が、クライアントから直接書き込まれず、Cloud Code 経由で行われることを確認します。
  4. Access Control の .ac ファイルで、Protected Cloud Save キーへのプレイヤーによる直接書き込みが拒否されることを確認します。
  5. すべてのクラウドリソースファイル(.rc、.ac、.ccmr、.lb)が存在し、Deployment Window からデプロイできることを確認します。

デプロイチェックリスト

ライブゲーム機能をリリースする際は、デプロイウィンドウから以下のクラウドリソースをデプロイしてください。

  • .rc ファイル — Remote Config エントリ(ゲーム定義、設定)
  • .ac ファイル — アクセス制御ポリシー(保護されたキーへの直接書き込みを拒否)
  • .ccmr ファイル — Cloud Code モジュール参照(モジュールの .sln を指定)
  • .lb ファイル — リーダーボードの設定(リーダーボードを使用する場合)
  • manifest.json — 必要なパッケージがすべて正しいバージョンで記載されていることを確認
  • Services > Deployment の設定で環境を構成

詳細なリファレンス

サービスリファレンス
  • Authentication — サインイン方法、イベント、プロファイル、ID プロバイダー、コードテンプレート:references/authentication.md
  • Cloud Code — スクリプト、モジュール、サブスクリプション、トリガー、モジュールの作成、コードテンプレート:references/cloud-code.md
  • Cloud Save — アクセスクラス、データ操作、ファイル、クエリ、コードテンプレート:references/cloud-save.md
  • Remote Config — 定義、.rc 形式、Game Overrides、コードテンプレート:references/remote-config.md
  • Tooling — アクセス制御(.ac)ポリシー、Game Overrides(.ugo)、URN リファレンス:references/tooling.md
  • Deployment — ファイル形式、ワークフロー、プログラムによる API:references/deployment.md
  • Services APIs — 4 種類のクライアント、サービス領域、コードテンプレート:references/apis.md
機能ブループリント
  • Achievements — データモデル、クライアントコード、Cloud Code モジュール、クラウドリソースを含む完全な実装:references/achievements.md
  • Battle Pass — ティア制 XP、無料/プレミアムトラック、Cloud Code モジュール、クラウドリソースを含む実装(プレミアム購入は、完成させる必要がある連携用スタブです):references/battlepass.md
  • Player Account — サインインフロー、ID 管理、Cloud Save データ、コードテンプレート:references/player-account.md

確認事項

完了する前に、以下を確認してください。

  • UnityServices.InitializeAsync() → Authentication のサインイン → サービス呼び出しの順序で実行しましたか?
  • XP、報酬、通貨など、機密性の高い書き込みはすべて Cloud Code モジュール経由になっていますか?
  • すべてのクラウドリソースファイル(.rc、.ac、.ccmr)が揃っており、デプロイ可能ですか?
  • Cloud Save の読み取りアクセスクラスは、書き込み先のバケットと一致していますか?

コメント