Contents
Population: ONE ビルドシステムの概要と公式サポート範囲
Population: ONE のビルドフローは、Meta が提供する popone‑build CLI と Unity/Unreal 用プラグインで構成されています。この仕組みを利用すると、Quest デバイス向けのビルド・テスト・デプロイが一元管理でき、個別にスクリプトを書き起こす手間が大幅に削減されます。
CLI とプラグインの構成
CLI は Windows と macOS の両方で動作し、popone-build コマンドだけでビルド・設定変更が可能です。Unity 用プラグインは Oculus Integration(Meta SDK)に同梱されており、Unreal 用プラグインは Oculus Unreal Engine Plugin として配布されています。
対応エンジンとバージョン
| エンジン | 公式サポートバージョン (2024/05 時点) | 備考 |
|---|---|---|
| Unity | 2022.3 LTS(最新の LTS リリース) | Oculus Integration v55 以降で完全対応 |
| Unreal | 5.4(プラグインは 1.8 系) | プラグインは「Experimental」扱いだが、公式ドキュメントに記載あり |
※バージョン情報は Meta Developer Center のリリースノートを基にしています。最新のサポート状況は必ず公式ページで確認してください。
主な機能
- 入力マッピング:Quest コントローラやハンドトラッキング向けに最適化された XR Interaction Toolkit プロファイルが自動生成されます。
- パフォーマンス最適化:テクスチャ圧縮(ASTC)やコードストリッピングをビルド時に自動適用し、APK のサイズとフレームレートの両方を改善します。
- デプロイ自動化:Meta Developer Center で取得した API キーを
config.jsonに設定すれば、CLI が直接 Quest デバイスへ配信可能です。
推奨開発環境(2024/2025 年時点)
本セクションでは、現在安定して利用できる Unity と Unreal の組み合わせと、それに紐づく Meta SDK バージョンを紹介します。正しいバージョンを選択することでビルドエラーや互換性問題の発生率が大幅に低減します。
Unity 環境
Unity 2022.3 LTS は長期サポート (LTS) が保証され、Meta の Oculus Integration と完全な相性があります。XR Interaction Toolkit や OpenXR Runtime との連携も標準で提供されています。
Unreal 環境
Unreal Engine 5.4 は Nanite と Lumen を搭載しつつ、VR 用に軽量化されたプロファイルが公式プラグインで利用可能です。Quest Pro のようなモバイル GPU でも 90 fps が狙いやすくなっています(最適化はビルド設定次第)。
SDK バージョン管理
- Oculus Integration (Unity):v55 以降 → Meta Developer Center の「Downloads」ページから取得。
- Oculus Unreal Engine Plugin:1.8.x 系 → 同じく公式ダウンロードセクションに掲載。
📌 参考リンク
- Unity LTS リリース情報: https://unity.com/releases/editor/whats-new/2022.3
- Unreal Engine 5.4 発表ページ: https://www.unrealengine.com/en-US/blog/unreal-engine-5-4-release-notes
- Oculus Integration ダウンロード: https://developer.oculus.com/downloads/package/oculus-integration/
開発環境構築手順
この章では、Windows または macOS に必要なツールをインストールし、Meta Developer Center でプロジェクトを作成するまでの流れを解説します。手順どおりに進めれば、すぐに popone-build が利用できる状態になります。
必要ツールのインストール
- Unity Hub → 「Installs」から Unity 2022.3 LTS を追加。
- Epic Games Launcher → 「Unreal Engine」タブで 5.4 をインストール(必要に応じて)。
- Visual Studio 2022(C# 用は「Desktop development with .NET」、C++ 用は「Desktop development with C++」)を導入。
- Git → https://git-scm.com/downloads から最新バージョンを取得。
- Meta Developer Center アプリ(旧称 Meta Developer Hub) → Meta の開発者ポータルからダウンロード。
Meta Developer Center でのプロジェクト登録手順
- アプリ起動後、Meta アカウントでサインイン。
- 左メニューの Projects → Create New Project を選択。
- プロジェクト名(例:
MyPopOneMod)とプラットフォーム Quest を指定し、作成を完了。 - 作成後に表示される API Key と Client ID をメモし、後述の
config.jsonに貼り付けます。
詳細は公式ヘルプページ(https://developer.oculus.com/documentation/unity/getting-started-android/)をご参照ください。
Git リポジトリとサンプル取得例
|
1 2 3 4 5 6 7 8 9 10 |
# 1. GitHub 上に空リポジトリを作成(Web UI の "New repository" を使用) # 2. ローカルへクローン git clone https://github.com/your-username/MyPopOneMod.git cd MyPopOneMod # 3. Meta が提供する公式サンプルを upstream として追加 git remote add upstream https://github.com/meta-developer-hub/popone-sample.git git pull upstream main --allow-unrelated-histories git push origin main |
これで popone-build 用の設定ファイルと Unity/Unreal のサンプルシーンがローカルに揃います。
ビルドパイプラインの実装例(ローカル → CI/CD)
ビルドは手元マシンでも、GitHub Actions などの CI 環境でも同一コマンドで実行できます。ここでは代表的なコマンドと GitHub Actions のワークフローを紹介します。
ローカルビルドコマンドとオプション
|
1 2 3 4 5 6 7 |
# popone-build ディレクトリへ移動し、認証情報を設定 cd Tools/popone-build popone-build config set --api-key <YOUR_API_KEY> --client-id <YOUR_CLIENT_ID> # Quest Pro 用に最適化フラグ付きでビルド popone-build build --target QuestPro --optimize true |
--optimize trueはテクスチャ圧縮(ASTC 4x4)と未使用コードの除去を自動的に行います。- ビルド完了後、
build/QuestPro/*.apkが生成され、Meta Developer Center から直接デバイスへ配信できます。
GitHub Actions を用いた自動ビルド例
.github/workflows/popone-build.yml として保存します(※シークレットはリポジトリ設定で事前に登録してください)。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
name: Population ONE CI Build on: push: branches: [ main ] jobs: build-quest: runs-on: windows-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Setup Unity uses: game-ci/unity-installer@v2 with: version: 2022.3.15f1 # LTS の最新パッチを指定 - name: Download popone-build CLI run: | curl -L https://developer.oculus.com/downloads/popone-build/windows.zip -o popone.zip unzip popone.zip -d ${{ github.workspace }}/Tools - name: Configure API keys env: POPONE_API_KEY: ${{ secrets.POPONE_API_KEY }} POPONE_CLIENT_ID: ${{ secrets.POPONE_CLIENT_ID }} run: | Tools/popone-build/popone-build config set --api-key $POPONE_API_KEY --client-id $POPONE_CLIENT_ID - name: Build for Quest Pro run: | Tools/popone-build/popone-build build --target QuestPro --optimize true - name: Upload APK artifact uses: actions/upload-artifact@v3 with: name: quest-apk path: build/QuestPro/*.apk |
game-ci/unity-installerは Unity のインストールとライセンス認証を自動化します。- ビルドキャッシュは GitHub のデフォルト機能で保持され、次回実行時のビルド時間が短縮されます。
サーバー側構成:Amazon GameLift と Oculus Platform の連携
マルチプレイヤーゲームでは、Quest クライアントだけでなくサーバーインフラも重要です。ここでは Amazon GameLift をベースに、Oculus Platform SDK が提供するマッチメイキング機能を統合する手順を示します。
GameLift フリート作成手順
- AWS コンソールで GameLift → Fleets → Create fleet。
- 「Custom game server」テンプレートを選択し、OS は Amazon Linux 2023、インスタンスタイプは c5.large(CPU 重視)を推奨。
- ビルド済みサーバーパッケージ
popone-server.zipを S3 にアップロードし、GameLift の「Upload build」画面で指定。
公式ガイド: https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets.html
マッチメイキングの実装方法
Meta が提供する Oculus Platform SDK(旧称 Oculus Matchmaking)を Unity プロジェクトに組み込みます。主な API は Matchmaking.MatchAsync と Room.JoinAsync です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using Oculus.Platform; using Oculus.Platform.Models; public async Task<string> FindRoom() { // 初期化(API キーは Meta Developer Center で取得したもの) Core.Initialize("<YOUR_APP_ID>"); var matchmaking = await Matchmaking.MatchAsync( pool: "popone_pool", maxUserResults: 10, customQueryData: null); var roomId = matchmaking.RoomID; await Room.JoinAsync(roomId); return roomId; } |
- GameLift 側では、マッチング結果として取得した
roomIdをキーにしてサーバーインスタンスへ接続します。 - 詳細は Oculus Platform ドキュメント(https://developer.oculus.com/documentation/unity/latest/concepts/pc-multiplayer/)をご確認ください。
スケール自動化(Auto Scaling)設定例
GameLift コンソールの Scaling policy → Target tracking を選び、以下のパラメータを入力します。
| パラメータ | 推奨値 |
|---|---|
| Metric | CPUUtilization |
| Target value | 60 % |
| Scale‑out increment | +1 インスタンス |
| Scale‑in decrement | -1 インスタンス |
この設定により、プレイヤー数が増減したときにインスタンスが自動で追加・削除され、コストを最適化できます。
カスタムコンテンツとデプロイ戦略
独自マップやイベントモードを追加する際の手順と、サイズ・パフォーマンス面でのベストプラクティスをまとめます。
カスタムマップのエクスポート手順
- Unity でシーンを作成し、
PopulationONEMapプレハブに NavMesh とスポーンポイントを設定。 Assets/PopOne/Maps/配下にフォルダを作り、.popmap形式でエクスポートします(CLI のexport-mapサブコマンド使用)。
|
1 2 3 |
popone-build export-map --scene Assets/Scenes/MyCustomMap.unity \ --output Assets/PopOne/Maps/MyCustomMap.popmap |
- ビルド時に
--map-listオプションで追加:
|
1 2 |
popone-build build --target QuestPro --map-list Assets/PopOne/Maps/*.popmap |
イベントモードローテーションの自動化例
- スクリプト:
EventScheduler.csが毎日 00:00 UTC に GameLift のUpdateFleetAttributesAPI を呼び出し、使用マップセットを切り替えます。 - CI/CD:GitHub Actions の
scheduleトリガーで週次ビルドを走らせ、popone-build build --event-mode weeklyによりイベント用バイナリを自動生成・デプロイ。
|
1 2 3 4 5 6 |
on: schedule: - cron: '0 0 * * 0' # 毎週日曜 00:00 UTC # 省略(上記 CI 設定と同様) |
ビルドサイズ削減テクニック
| 手法 | 効果例 |
|---|---|
| ASTC 4x4 テクスチャ圧縮 | ビルドサイズ約 30 % 減少、ロード時間短縮 |
未使用プラグインの除外(--strip-unused) |
バイナリ容量 15 % 削減 |
| シェーダーバリアント削除 | GPU パイプライン切り替え回数が減り、平均 FPS が 5 fps 向上 |
よくあるトラブルと対処法
実装段階で遭遇しやすいエラーを一覧化し、迅速に解決できるチェックポイントを提示します。
SDK 認証エラー
- 症状:
popone-build実行時に “SDK not found” と表示される。 - 原因:Meta Developer Center の API キーが
config.jsonに正しく記載されていない、または使用している SDK バージョンが古い。 - 対処:
popone-build config showで現在の設定を確認し、最新の Oculus Integration(Unity)/Oculus Unreal Plugin をインストールしたうえで再度config setを実行。
ビルド失敗時のチェックリスト
| 項目 | 確認ポイント |
|---|---|
| Unity のスクリプトコンパイルエラー | コンソールに出力される C# エラーメッセージをすべて解消 |
| Android SDK / NDK のバージョン不整合 | Edit > Preferences > External Tools で推奨バージョン (SDK 33, NDK r25) を使用 |
| プラグインの競合 | 同一機能を持つサードパーティプラグインが有効になっていないか確認 |
パフォーマンス低下対策(FPS が 70 fps 以下)
- ビルドオプション
--optimize trueを必ず付与。 - プロファイラで Draw Calls と GPU 時間 を測定し、過剰なポリゴンやリアルタイムライトを削減。
- シェーダーの LOD 設定とテクスチャ MIP マッピングが有効か確認。
まとめと次のステップ
- 公式ビルドツール は Unity 2022.3 LTS と Unreal 5.4 の組み合わせで最も安定し、Meta SDK が提供する自動最適化機能を活用できます。
- Meta Developer Center から取得した API キーと
popone‑buildCLI を使えば、ローカルビルドだけでなく GitHub Actions による CI/CD パイプラインも簡単に構築可能です。 - Amazon GameLift と Oculus Platform SDK の連携により、マッチメイキングとスケール自動化が実現し、運用コストを抑えつつ快適なオンライン体験を提供できます。
- カスタムマップやイベントモードは
export‑mapと CI スケジューラで自動デプロイでき、ビルドサイズ削減テクニックを併用すれば Quest デバイス上のパフォーマンスも最適化されます。
次に取るべきアクション
1. 本記事の手順どおりに開発環境と Meta プロジェクトを作成し、popone-build config setで認証情報を登録。
2. サンプルシーンでローカルビルドを実行し、APK が正しく生成されることを確認。
3. GitHub Actions のワークフローを追加し、CI ビルドが成功するかテスト。
4. GameLift フリートと Oculus Platform のマッチメイキングを統合し、最小構成でサーバー起動を検証。
これらのステップを踏めば、Population: ONE 向けのカスタムコンテンツ開発がスムーズに進み、Quest プレイヤーへ高品質な体験を提供できるようになります。ぜひ実践してみてください。
参考リンク集
| 内容 | URL |
|---|---|
| Unity LTS(2022.3)リリースノート | https://unity.com/releases/editor/whats-new/2022.3 |
| Unreal Engine 5.4 発表ページ | https://www.unrealengine.com/en-US/blog/unreal-engine-5-4-release-notes |
| Oculus Integration(Unity)ダウンロード | https://developer.oculus.com/downloads/package/oculus-integration/ |
| Oculus Unreal Engine Plugin | https://developer.oculus.com/documentation/unreal/unreal-getting-started/ |
| Meta Developer Center – プロジェクト作成手順 | https://developer.oculus.com/documentation/unity/getting-started-android/#create-project |
| Amazon GameLift 公式ドキュメント | https://docs.aws.amazon.com/gamelift/latest/developerguide/what-is-gamelift.html |
| Oculus Platform SDK(マッチメイキング) | https://developer.oculus.com/documentation/unity/latest/concepts/platform-multiplayer/ |
| GitHub Actions for Unity CI | https://github.com/game-ci/unity-installer |