🌏

【2024年12月】GameCIでGitHub PagesにUnityをデプロイする

2024/12/08に公開

背景

Unity製ゲームを自動ビルドしてWebGLでうまく動いているか確認したりテストをしたりしたいと思うことがあると思います。
ありがたいことにネット上に色々と文献がありましたが内容が古かったりうまく動かなかったりして苦戦したので、誰かのためになればと思い、現状私の環境で動いている物と重要なポイントを共有したいと思います。

ワークフロー

以下が現在(2024年12月時点)使用しているGitHub Actionsのワークフローです。GameCIが提供しているアクションを使用します。

ワークフロー全文

使い方

ワークフローを動かすまでの手順を簡単に説明します。

1.Unityのライセンス設定

GameCIのビルドプロセスを使用するために、Unityのライセンス情報をGithubのリポジトリに登録します。
方法は以下のGameCIのドキュメントに従って下さい。
https://game.ci/docs/github/activation#personal-license

2.ワークフローファイルの配置

リポジトリ内にyour_repository/.github/workflows/build.ymlというディレクトリ構造で上記のワークフローファイルを配置します。

3.Github Pagesの設定

GitHubでリポジトリのページを開き、Settings内のPagesセクション内で、Build and deploymentのSourceをGitHub Actionsに変更します。

このようになっていればok

4.Push

ここまでで設定は完了です。何かしらの変更をPushするか、Pull Requestを出すとワークフローの処理が始まり、5~10分後くらいにはGitHub Pagesのリンクにアクセスしてゲームをプレイできるはずです!🥳

詰まったポイント

1.Unity_lic.ulf ファイルの生成

GameCIのアクションを使用するには、Unity_lic.ulfファイルの内容を環境変数に設定する必要があります。
指定された場所にUnity_lic.ulfファイルが存在しない場合、Unity Hubの設定から再度ライセンスを取得すると、ファイルが生成されました。

追加ボタンから再度ライセンスを取得

2.ディスク容量の不足

ビルド前にFree up disk space 🧹というアクションを入れています。これをしないとディスク容量が不足しているというエラーが出てビルドが失敗してしまうためです。

3.Decompression Fallbackの設定

unityroomでWebGLビルドを公開する際は、Decompression Fallbackをオフにする必要がありますが、GitHub Pagesの場合はこれをオンにしなければなりません。

4.ビルドのallowDirtyBuild オプション

ビルドをする際にallowDirtyBuild: trueというオプションをつけていますが、これを指定しないとたまにエラーが出ました。

5.成果物アップロードに用いるアクション

ネット上の文献は、成果物のアップロードにactions/upload-artifact@v3というアクションを使っているものが多いです。しかし、私の場合はエラーが出てうまくアップロードができなかったので、actions/upload-pages-artifact@v1というアクションを使用したところ、うまくアップロードができました。

6.成果物のパス指定

Upload Build Artifact 🚀内で、path: CIBuilds/WebGL/buildとパスの指定をしていますが、GameCIのアクションを使用してビルドすると、ビルドパス名/ターゲットプラットフォーム名/ビルド名/index.htmlという構造が生成されます。
GitHub Pagesでは指定したディレクトリにindex.htmlファイルがないと404ページになってしまうため、このようなパス指定が必要になります。

GitHubで編集を提案

Discussion