simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

Unity:CubeWalkゲームの起動方法

Magic Onion やその他さまざまなパッケージに頼っているため、インストールの仕方を間違えると起動しないという問題があります。
エラーもすごくわかりづらい…
いつまでも記憶しておくことはできない、ゆえにコストを割いてここに記録しておきます。
Unity 環境を変えるとかしたときは絶対参照して、無駄時間を省きましょう

1.リポジトリをチェックアウト
自身の GitHub プライベートリポジトリ に CubeWalk 2019.3 があるのでチェックアウトします。
https://github.com/simplestargame

2.Assets/00 フォルダを削除
いきなり Unity として開くとエラー連発なので、いろいろとアセットがそろうまで、Git 管理ファイルをローカルから取り除きます。
Unity 2019.3 以降で、Assets フォルダの親フォルダを開きます。

勝手に以下の通りパッケージがインストールされることになります。

f:id:simplestar_tech:20191021142716p:plain
パッケージ一覧
言及するなら
Burst
Chinemachine
Entities
Input System
Shader Graph
TextMesh Pro
Timeline
Universal RP
は必須、使っているのでないとビルドは通りません

3.PlayFab Editor 拡張と SDK 最新取得
パッケージ取得は公式ドキュメントの案内に従います
Documentation Home > getting-started > Unity Getting Started
Editor 拡張で Login して、SDK をインストールして、タイトルIDを記入して完了です

4.VRoid Hub SDK をインストール
開発者登録して SDK を運営から受け取ります。
パッケージインストールしたのち VRoidSDK > Plugins > SDKConfigurations の SDKConfiguration のインスペクタにアプリシークレット情報を書き込みます。
アプリケーション管理方法は README にリンクと説明があります。

5.Magic Onion のインストール
https://github.com/Cysharp/MagicOnion/releases
最新リリースパッケージと moc というコード生成ツールを取得します。
Magic Onion の導入についてもドキュメントを参照することになりますが Ver 2.6.3 のときは別途 Official gRPC Releases から最新の grpc も取ってきて入れてとあります。
grpc_unity_package.2.25.0-dev.zip を今日はダウンロードして Plugins の下に grpc_unity フォルダを作って配置しました。

6.Message Pack のインストール
https://github.com/neuecc/MessagePack-CSharp/releases
こちらにファイルがあるので zip の中にある src\MessagePack を Scripts/MagicOnion と同列に MessagePack とならぶように配置
同フォルダにある MessagePack.UnityClient に示されるファイル構成となるように不要ファイルを除去していく
具体的には MessagePackSerializer.Typeless.cs
と MessagePack.csproj は取り除く
LZ4MessagePackSerializer.Typeless.cs
Shims フォルダは追加
Unityフォルダを作り
Formatters.cs
UnityResolver.cs
を MessagePack.UnityShims フォルダから配置
MessagePack.UnityShims\Extension から配置

6.Package の移動
Library\PackageCache にある
com.unity.collections
com.unity.render-pipelines.universal
com.unity.shadergraph
を移動、うち collections については System.Runtime.CompilerServices.Unsafe.dll ファイルを除去(grpc のやつと重複しているので)
これやっておかないと直接的でない変なエラー連発なので忘れずに

7.UniUnsafeIO をインストール
https://github.com/pCYSl5EDgo/UniUnsafeIO
こちらの Plugins フォルダをそっくり UniUnsafeIO というフォルダ名にして Plugins フォルダに配置

8.依存アセットの購入とインストール
ビルドエラーが起きない状況を確認しつつ Asset Store を開いて
Basic RPG Cursors
Massive Clouds - Screen Space Volumetric Clouds
Third Person Controller - Basic Locomotion Template → プロジェクト設定上書きなので、インポート後に戻す

8.SharpZipLib のアセットの導入
次の最新リリースを取得して net45 フォルダの ICSharpCode.SharpZipLib.dll ファイルを Plugins 以下に配置して使えるようにする
https://github.com/icsharpcode/SharpZipLib


9.1.で退避していた 00 フォルダを元に戻す
Project Settings > Graphics にて SRP Settings に CubeWalkRenderPipelineAsset を設定
00 > Scenes > SampleScene を開いて Import Text Mesh Pro をする

この時点で初めてエラーなく実行可能に

f:id:simplestar_tech:20191021160219p:plain
PlayMode

10.VRM-Toon-for-Universal-RP の導入
[https://github.com/simplestargame/VRM-Toon-for-Universal-RP
ReadMe にならって一部 VRM の書き換えも行います。
00 > Resources にある ToonShaderGraph を開いて Save Asset ボタンでビルド確認

11.実機用ビルド
Project Settings > Graphics の Preloaded Shaders の Size を 0 -> 1 にして MassiveCloudShaderVariants をセット
Development Build にチェックをいれてビルド

実行すると次の通り(なんだぁこのエラー)

f:id:simplestar_tech:20191021163519p:plain
実行画面

追記:問題の切り分けとして Toon Shader 単体のゲームで再現しなかったので、それ以外のアセットが邪魔してこのエラーが起きているとのこと
誰が犯人なんだろ

12.サーバーの実行
dotnet コマンドが打てる PowerShellとかで Server フォルダをカレントに
dotnet publish -c Release -o ../out

docker 実行環境を用意して
out フォルダをカレントに
docker build . -t cubewalkroom:1.0
して image 作成

shell 実行環境を用意して
docker/run_local_server.sh
でローカルサーバーが 12000 ポートで立ち上がります

run_local_server.sh の内容は次の通り

 docker run -d --rm -p 12000:12000 --name cubewalkroom cubewalkroom:1.0 dotnet CubeWalkServer.dll 12000

13.サーバー通信
 11.でキャラクターが動けるならサーバーと通信成功している

以上