AIを使ったのに俺のゲームがリリースできないわけがない#5|Unity Build Automationでクラウドビルドしよう

UBA で Windows を2回ビルドした時間の帯グラフ。1回目(キャッシュなし)は全体 18分10秒で、順番待ち・準備 9分26秒、料金がかかる時間 8分44秒(Unity の部分は約4分半)。2回目(キャッシュあり)は全体 17分06秒で、順番待ち・準備 10分28秒、料金がかかる時間 6分38秒(Unity の部分は1分31秒)
UBA で2回ビルドした時間。料金がかかるのは緑と青のところだけ

前回は、プロジェクトを GitHub に置いて、ボタンを押すと GitHub Actions が動くようにしました。今回は、いよいよ Unity Build Automation(UBA) を設定して、Unity のクラウドで星ふる夜の庭をビルドします。ビルドに何分かかって、そのうち何分ぶんの料金がかかるのかも、実際に2回ビルドして測ってみたいと思います!

目次

UBAってなに?

UBA は、Unity が用意したクラウドのマシンで、プロジェクトをビルドしてくれるサービスです。

  • GitHub などからプロジェクトを取ってきて、クラウドの Unity でビルドしてくれる
  • 自分のパソコンでは、エディタを開かなくてもいい(ビルドしている間も、ほかの作業が出来る)
  • iOS のビルドに必要な Mac も、UBA のものを使える(このシリーズの iOS の回で使います)
  • 毎月の無料の分(Windows のマシンなら200分)があり、超えた分は1分ごとの料金(くわしくは次回のお金の回で)

料金や無料の分は、2026年10月時点の Unity の料金のページ のものです。2026年3月から、無料の分はどのプランでも同じになりました。

プロジェクトをつなごう

UBA でビルドするには、次の3つをつなぎます。

  • Unity のプロジェクト ↔ Unity Cloud のプロジェクト
  • Unity Cloud のプロジェクト ↔ Build Automation
  • Build Automation ↔ GitHub のリポジトリ

Unity Cloudのプロジェクトにつなぐ

Unity の Project Settings の Services の画面。「Project was linked successfully.」と出ていて、Project Name:星ふる夜の庭、Unity Organization:組織の名前、Unity Project ID(ぼかしてある)、Unlink project のボタンが見える
Services でクラウドのプロジェクトにつないだところ
  • Unity で星ふる夜の庭のプロジェクトを開く
  • Edit>Project Settings>Services を開く
  • 組織を選んで、クラウドのプロジェクトを作ってつなぐ(名前は Product Name の「星ふる夜の庭」になりました)
  • File>Save Project で保存して、変わった ProjectSettings をコミットして push する

Build Automationを始める

ブラウザの Unity Dashboard で、星ふる夜の庭のプロジェクトの Build Automation を開いた画面。左に 概要・ビルド履歴・ビルド構成・サービス更新情報・設定 のメニュー、右に Overview(Free tier)と Welcome to Unity Build Automation、下に Get started として Connect a repository・Setup build target・Read documentation が並ぶ
Dashboard で Build Automation を開いたところ
  • ブラウザで Unity Dashboard を開く
  • 上のプロジェクトの選択で「星ふる夜の庭」を選び、左のメニューから Build Automation を開く
  • 支払い方法の登録を求められたら登録する(無料の分を超えたときに、ビルドが止まらないように)

GitHubをつなぐ

UBA が private のリポジトリを読めるように、GitHub でトークン(読むための鍵)を作って、UBA に渡します。

GitHub の New personal access token の確認のダイアログ。unity-build-automation というトークンが 1 repository に対して Contents:Read-only と Metadata:Read-only の2つの権限を持ち、2027年1月23日に期限が切れると書かれている
トークンは、読むだけの権限にする
  • GitHub の右上のアイコン>Settings>Developer settings>Personal access tokens>Fine-grained tokens>Generate new token
    • Token name:unity-build-automation
    • Expiration:90日(期限が来たら作り直す)
    • Repository access:Only select repositories で、unity-release だけを選ぶ
    • Permissions:Contents を Read-only(Metadata は自動で Read-only になる)
  • Generate token を押して、出てきたトークンをコピーする(一度しか表示されない)
Build Automation Settings の Source control のタブ。Source control provider / SCM type:GitHub、Personal Access Token の欄の右に緑のチェックと Reauthorize のボタン、Repository:everystudio/unity-release、Git executable:Native
UBA の Source control に GitHub をつないだところ
  • Build Automation の 設定>Source control を開く
  • Source control provider:GitHub を選び、Personal Access Token にトークンを貼って Authorize
  • Repository で unity-release を選んで Save

トークンの権限は「読むだけ」で、リポジトリも1つだけにしました。鍵を渡すときは、必要なことだけが出来る鍵にしておくと、もし漏れても困ることが少なくて済みます。

Windowsのビルドターゲットを作ろう

ビルドターゲットは、「どのプラットフォーム向けに、どのマシンで、どうビルドするか」をまとめた設定です。

  • Build Automation の ビルド構成 を開き、右上の Target setup を押す
  • プラットフォームは Windows desktop 64-bit を選ぶ(32-bit もあるので間違えないように)
Target setup の Basic info。Target name:windows、Branch:main、Project subfolder path は空、Unity version は Manually select Unity version で Unity 6000.3.22f1、Builder Operating System and Version:Windows 11 24H2
名前・ブランチ・Unity のバージョン・ビルドするマシンの OS
  • Target name:windows
  • Branch:main
  • Unity version:Manually select Unity version で 6000.3.22f1(手元と同じバージョンにする)
  • Builder Operating System and Version:Windows 11 24H2
Builder configuration の Machine specifications。Windows Micro(Free tier eligible、8 vCPU・16 GB memory・512 GB disk、$0.02/min)が選ばれていて、下に Windows Standard($0.07/min)と2つの Windows Premium($0.12/min)が並ぶ
マシンは、無料の分が使える Windows Micro
  • Machine specifications:Windows Micro(「Free tier eligible」と書かれた、無料の分が使えるマシン)
  • Scheduling の Auto-build はオフ(GitHub に push するたびにビルドしないように。ビルドを始めるのは、あとの回で GitHub Actions にやってもらう)
Advanced settings の Script hooks。Pre-build script と Post-build script は空、Pre-Export method:BuildScript.PreExport、Post-Export method は空、Scripting #Define Symbols も空
Pre-Export method に BuildScript.PreExport を入れる
  • Advanced settings>Script hooks>Pre-Export method:BuildScript.PreExport(次の節で作るメソッド)

最後に Save します。

ビルド構成(Configurations)の Build targets の一覧。windows の行の Platform は Windows desktop 64-bit で、右に Build のボタン。開いた中に Branch:main、Unity version:Unity 6000.3.22f1、Builder OS and version:Windows 11 24H2、Machine specifications:Windows Micro - 8 vCPU, 16 GB memory, 512 GB disk
ビルドターゲット windows が出来た

BuildScriptにPreExportを足す

UBA は、ビルド(BuildPipeline.BuildPlayer)を自分で行います。なので、#3(AIを使ったのに俺のゲームがリリースできないわけがない#3|ビルドを1か所から:BuildScriptを作ろう)で作った BuildScript.Build は呼ばれません。その代わり、ビルドの直前に呼んでもらうメソッド(Pre-Export method)で、ゲームの名前とバージョンを入れます。

BuildScript に、次の2つのメソッドを足します。

    // UBA の Pre-Export method から呼ぶ入口。ビルドは UBA がするので、設定を入れるだけ
    public static void PreExport()
    {
        ReleaseConfig config = LoadConfig();
        string version = GetEnvironment("APP_VERSION", PlayerSettings.bundleVersion);
        int buildNumber = int.Parse(GetEnvironment("BUILD_NUMBER", "1"));

        PlayerSettings.productName = config.productName;
        ApplyVersion(version, buildNumber);
        Debug.Log($"[BuildScript] PreExport {PlayerSettings.productName} {PlayerSettings.bundleVersion} ({buildNumber})");
    }
    // 環境変数から値を取る。無ければ defaultValue
    static string GetEnvironment(string name, string defaultValue)
    {
        string value = Environment.GetEnvironmentVariable(name);
        if (string.IsNullOrEmpty(value))
        {
            return defaultValue;
        }
        return value;
    }
  • PreExport
    • release.json のゲームの名前と、バージョン・ビルド番号を入れる(中身は Build と同じで、ビルドはしない)
    • 値はコマンドラインの引数ではなく、環境変数から受け取る(UBA は Unity を自分で起動するので、引数を足せないため)
  • BUILD_NUMBER
    • ビルド番号。今回の2回のビルドでは、UBA のビルドの番号(1回目なら1、2回目なら2)が入っていた
    • ただ、GitHub Actions から動かした回では入らなかった。ビルド番号を UBA から確実に受け取る方法は、ビルド番号が必要になる iOS の回(#13)で直します
  • APP_VERSION
    • 今はどこからも渡していないので、Player の Version(1.0)のまま

バージョンを UBA に伝える方法は、GitHub Actions から UBA を動かす回(#7)で決めます。今回はバージョンは 1.0 のまま、名前が入ることを確かめます。

コミットして、GitHub に push しておきます(UBA は GitHub のものをビルドするので、push しないと届きません)。

ビルドしてみよう

Unity Dashboard の Build Automation のビルド履歴。Build health は 2 successful・0 failed、Average build time は 00:07:42(待ち時間を含めると 00:17:39)。一覧に windows の #2(Build time 00:17:06)と #1(00:18:10)が並び、どちらも緑のチェック
ビルド履歴。#1 と #2 が成功した

ビルド構成の windows の行の Build を押すと、ビルドが始まります。ビルド履歴で、進み具合と結果が見られます。

ビルドの詳細の Full Log のタブ。13281行目に「BuildScript の PreExport 星ふる夜の庭 1.0 (1)」と出ていて、その下に BuildScript:PreExport () (at Assets/Editor/BuildScript.cs:52) と UnityEditor.CloudBuild.Builder:TryRunUserExportMethod の呼び出し履歴が続く
ログに PreExport の行が出た

ビルドの詳細の Full Log で PreExport を探すと、[BuildScript] PreExport 星ふる夜の庭 1.0 (1) という行が出ていました。

  • 名前(星ふる夜の庭)とバージョン(1.0)、ビルド番号の1が入った
  • すぐ下に UnityEditor.CloudBuild.Builder:TryRunUserExportMethod とあり、UBA が PreExport を呼んでくれたことが分かる

2回目のビルドでは、ここが (2) になっていました。

できたものをダウンロードする

Build details の画面。#1 windows の右に Share・Download・Replay build のボタン。Overview のタブに Build result:Success、Build time:00:18:10、Wait time:00:09:26、Checkout time:00:00:43、Billable build time:00:08:44 が並ぶ
ビルドの詳細。右上の Download でダウンロード出来る

ビルドの詳細の Download から、できたものを zip でダウンロード出来ます。

  • 中身は、#3 で手元でビルドしたときと同じ(.exe・_Data のフォルダ・UnityPlayer.dll など)
  • 大きさは約45MB(zip)

1回目は、.exe の名前が Default Windows desktop 64-bit.exe になっていました。ビルドターゲットを作ったときの標準の名前が、そのまま実行ファイルの名前に使われていたためです。ビルド構成で windows を Edit し、Build output の Executable name を StarGarden に変えておきましょう。変えてからビルドし直すと、zip の名前が StarGarden.zip になり、中身も StarGarden.exe と StarGarden_Data になりました。

ダウンロードしたあとで .exe の名前だけを変えるのはやめましょう。Windows のゲームは、.exe と同じ名前の _Data のフォルダを探して起動するので、名前がずれると起動できなくなります。

ビルドターゲット windows の設定の Build output。Compression technique:None の下の Executable name の欄に StarGarden と入っていて、「The name of the final executable produced from the build process. If empty, the target name will be used.」と説明がある
Build output の Executable name を StarGarden にする

何分かかった?

同じ設定のまま、2回ビルドしました。2回目は、1回目のときの Library(Unity が作るデータ)を UBA が取っておいてくれるので、インポートが速くなります。

1回目(キャッシュなし)2回目(キャッシュあり)
押してから終わるまで18分10秒17分06秒
順番待ち・マシンの準備9分26秒10分28秒
Unity のインポートとビルド4分25秒1分31秒
料金がかかる時間8分44秒6分38秒

料金がかかるのは、プロジェクトを取ってきてから終わるまでです。ビルドの詳細の Billable build time に出ています(ダウンロードの画面の 00:08:44)。順番待ちとマシンの準備の約10分は、待たされても料金はかかりません。

  • 2回目は、インポートし直したファイルが 4,966個 → 16個 になり、Unity の部分が4分25秒 → 1分31秒に縮んだ
  • 押してから終わるまでは、どちらも17〜18分。手元なら1分半ほどのビルドなので、すぐに試したいときは、手元でビルドしたほうが早い
Unity Cloud の管理の「コストと使用状況のレポート」。期間の合計支出は $0.00。下の表で、Build Automation の Windows Minutes (Micro) の合計使用量が 23、コストは $0.00
Windows Minutes (Micro) は23分、支出は $0.00

Unity Cloud の管理の コストと使用状況 を見ると、Windows Minutes (Micro) は23分、支出は $0.00 でした。実行ファイルの名前を直したあとにもう1回ビルドしたので、ここまでで3回ぶんです。

料金がかかる時間1分単位に切り上げると
1回目8分44秒9分
2回目6分38秒7分
3回目(名前を直したあと)6分31秒7分
合計21分53秒23分

ビルドごとに1分単位で切り上げて数えられていました。合わせて21分53秒なのに、使った分数は23分です。短いビルドを何回もすると、切り上げのぶんが積み重なります。

Windows Micro の無料の分は月200分なので、2回目と同じぐらい(約7分)なら、月に28回ぐらいビルド出来る計算です。超えたらいくらかかるのか、GitHub Actions だけで作った場合と比べてどうなのかは、次回くわしく計算します。

スライム

AIに「UBAのAPIキーを使えばいい」って教わったのに、そのキーは12月でなくなるって書いてありました・・・

フェアリー

サービスの仕組みは、AIが覚えたあとでも変わるの。公式のページの日付を見て、今の手順か確かめようね!

スライム

あと、ボタンを押してから17分も待つの、長いです・・・

今回の完成チェック
– Unity Cloud のプロジェクトに Build Automation と GitHub がつながっている
– ビルドターゲット windows(Windows desktop 64-bit・Windows Micro)がある
– Build を押すと成功して、ログに [BuildScript] PreExport の行が出る
– できた zip をダウンロードして、星ふる夜の庭が遊べる

次回は

次回は、お金の話です。今回測った分数をもとに、UBA の無料の分でどこまで出来るか、課金するといくらになるかを計算したいと思います!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次