build-live-game について
Unity 開発者向けに、Unity Gaming Services を使ったライブゲーム機能の実装を案内するスキルです。プレイヤー認証、クラウドデータ、サーバーロジック、設定、マルチプレイヤー、デプロイに対応するパッケージや構成を示します。
主な機能
- 01UGS パッケージとアーキテクチャのガイド
- 02プレイヤー認証と ID 管理
- 03Cloud Save と Remote Config のパターン
- 04サーバー権威型 Cloud Code モジュール
- 05デプロイと機能ブループリント
活用シーン
- 01プレイヤーログインとアカウントデータの追加
- 02プレイヤー進行状況と共有ゲーム状態の保存
- 03信頼できる報酬処理や検証の実装
- 04ライブ機能の設定とリソースのデプロイ
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ unity-technologies/ skills --skill build-live-gameインストール後、Claude Code で/build-live-gameを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/achievements.mdapis.mdauthentication.mdbattlepass.mdcloud-code.mdcloud-save.mddeployment.mdplayer-account.mdremote-config.mdtooling.md詳細
Unity Gaming Services でライブゲームを構築する
UGS パッケージ
| パッケージ | 最小バージョン | 用途 |
|---|---|---|
com.unity.services.core | 1.16.0 | 初期化、依存関係グラフ |
com.unity.services.authentication | 3.6.1 | プレイヤーのサインインと ID |
com.unity.services.cloudcode | 2.10.3 | サーバー権限の C# モジュール |
com.unity.services.cloudsave | 3.4.0 | プレイヤーごとおよび共有のキーと値のストレージ |
com.unity.remote-config | 4.2.5 | サーバー側のゲーム設定 |
com.unity.services.deployment | 1.7.2 | エディターからクラウドリソースをデプロイ |
com.unity.services.tooling | 1.4.1 | アクセス制御とゲームオーバーライド |
com.unity.services.apis | 1.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、ユーザー名/パスワード)、ID | AuthenticationService.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 |
| Tooling | Access Control(.ac)および Game Overrides(.ugo)ファイルの作成とデプロイ | エディター専用(Deployment ウィンドウ) |
| Deployment | Unity エディターからクラウドリソース(.rc、.ac、.ccmr、.lb など)をデプロイ | エディター専用(Services > Deployment) |
ソーシャルと競技
| パッケージ | 用途 | シングルトン/エントリーポイント |
|---|---|---|
| Multiplayer | セッション、マッチメイキング、ロビー。構成要素:Multiplayer Session、Matchmaker Session、Server Session | MultiplayerService.Instance |
| Leaderboards | スコア送信、ランキング、ティア、バージョン履歴。構成要素:Leaderboards | LeaderboardsService.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)にあります。
- 詳細なリファレンス: references/authentication.md
- ビルディングブロック: Player Account — すぐに使えるサインイン UI と ID 管理
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# モジュールを優先してください。モジュールは、サブスクリプションによるリアルタイムのプッシュメッセージ、イベント駆動型のトリガー、マルチプレイヤーセッションのスコープ指定にも対応しています。
- 詳細なリファレンス: references/cloud-code.md
Cloud Save
パッケージ: com.unity.services.cloudsave (>= 3.4.0)
プレイヤーごとのキーと値のストレージで、3 種類のアクセスクラスに加えて、ゲーム全体で共有する Custom データにも対応しています。
| アクセスクラス | 読み取り | 書き込み | 用途 |
|---|---|---|---|
| Default | 所有者 | 所有者 | プライベート設定、環境設定 |
| Public | 誰でも | 所有者 | 公開プロフィール、表示名 |
| Protected | 所有者 | サーバーのみ(Cloud Code) | チート対策データ、サーバーが付与する状態 |
| Custom | 任意のプレイヤー | サーバーのみ | 共有ゲーム状態、グローバル設定 |
値は JSON としてシリアライズされます。SaveItem による書き込みロックを使った並行処理制御、QueryAsync によるサーバー側のクエリ、バイナリファイルのストレージに対応しています。
- 詳細なリファレンス: references/cloud-save.md
- ビルディングブロック: Achievements(Protected バケット)と Player Account(Default/Public データ)で使用されます
Remote Config
パッケージ: com.unity.services.remote-config (>= 4.2.5)
サーバー側のゲーム設定です。ゲームの定義(実績リスト、バトルパスのティア、ショップカタログ)を JSON エントリーとして保存し、クライアントをビルドし直さずに更新できます。Deployment Window から .rc ファイルを使ってデプロイします。
A/B テストとオーディエンスターゲティングには、Tooling パッケージの Game Overrides(.ugo)を使用してください。
- 詳細なリファレンス: references/remote-config.md
- ビルディングブロック: Achievements ブロックで、サーバー側の定義に使用されます
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 テストとオーディエンスターゲティングを実現します。
- 詳細なリファレンス: references/tooling.md
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 | オーディエンスを対象にした設定のオーバーライド |
- 詳細なリファレンス: references/deployment.md
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 を使用してください。
- 完全なリファレンス: references/apis.md
Asset Store のビルディングブロック
Unity は、Asset Store で無料の、本番環境ですぐに使えるビルディングブロックパッケージを提供しています。それぞれの .unitypackage には、動作する UI、ランタイムコード、Cloud Code モジュール、クラウドリソースファイルが含まれており、プロジェクトに直接インポートできます。また、com.unity.starter-kits パッケージにも同梱されています。
| ビルディングブロック | 種類 | 主な依存関係 | Asset Store |
|---|---|---|---|
| 実績 | LiveOps | cloudsave、remote-config、cloudcode、tooling、deployment、analytics、authentication | Unity ビルディングブロック — 実績 |
| リーダーボード | LiveOps | leaderboards、cloudcode、tooling、deployment、authentication | Unity ビルディングブロック — リーダーボード |
| プレイヤーアカウント | LiveOps | authentication、cloudsave、cloudcode、deployment | com.unity.starter-kits から入手可能 |
| マルチプレイヤーセッション | マルチプレイヤー | multiplayer | Unity ビルディングブロック — マルチプレイヤーセッション |
| マッチメーカーセッション | マルチプレイヤー | multiplayer、deployment | Unity ビルディングブロック — マッチメーカーセッション |
| サーバーセッション | マルチプレイヤー | multiplayer、apis、deployment | com.unity.starter-kits から入手可能 |
| Vivox | マルチプレイヤー | vivox、authentication | com.unity.starter-kits から入手可能 |
| プラットフォーマー スターターキット | ゲームプレイ | multiplayer、netcode.gameobjects、URP、Cinemachine、Input System | com.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 Room | Netcode for GameObjects、Authentication、Multiplayer Services を使用した 8 人協力型 RPG | GitHub — 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 Block | references/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:設定 + 状態 + サーバー書き込み
バトルパスと実績で使用します。
- Remote Config(
.rcファイル)内の定義 — ゲーム内に存在する要素 - Cloud Save 内のプレイヤー状態 — プレイヤーごとの進行状況
- Cloud Code 経由での書き込み — サーバー権限による変更
- Access Control(
.acファイル)— 機密キーへのプレイヤーによる直接書き込みをブロック
パターン 2:クライアントから直接操作するデータ
プレイヤーアカウント(設定、表示設定)で使用します。
- Cloud Save の Default または Public アクセスクラス内のプレイヤーデータ
- クライアントからの直接書き込み — 機密性のないデータには Cloud Code は不要
パターン 3:競争要素のある機能
リーダーボードやランキングシステムで使用します。
- Leaderboards API 経由でのスコア送信(検証が必要な場合は Cloud Code 経由)
- ページネーションとプレイヤー基準のクエリを使って、クライアント側でランキングを取得
検証
ライブゲーム機能のコードを書いた後、次の項目を確認してください。
- プロジェクトがエラーなくコンパイルされることを確認します。
- 初期化の順序が正しいことを確認します:
UnityServices.InitializeAsync()→ Authentication のサインイン → サービス呼び出し。 - 機密データの書き込み(XP、報酬、通貨)が、クライアントから直接書き込まれず、Cloud Code 経由で行われることを確認します。
- Access Control の
.acファイルで、Protected Cloud Save キーへのプレイヤーによる直接書き込みが拒否されることを確認します。 - すべてのクラウドリソースファイル(
.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 の読み取りアクセスクラスは、書き込み先のバケットと一致していますか?