今回はゲームジャムの作品をパブリック(誰でも触れる)なリポジトリに置くために行った作業について書いておきます。
不要なアセットの削除
ゲームジャムに公開する前に、ゲームを構築するにために必要なアセットを除き全て削除します。特にゲームジャム中はプロトタイプやら何やら結構色々なアセットが作られてるので、この辺りをどんどん破棄していきます。
今回は下のAssetCreanerを使用しました。これは、単純にゲーム内で使用していないアセットを片っ端からUnitypackageへ退避するアセットです。
なお、このアセットはエディタ用コードから文字列で参照されているリソースやreameを「どこからも参照されていない」物として削除する事があるので、注意が必要です。ゲーム向けはResourcesからしか取れないので、その辺りは問題は無いです。
また愚かにもソースコードの依存関係計測を自前で行っているので、ソースの解析には時間がかかります。先にリソースのみ退避を行っておくと、何かあった時の巻き戻しが容易です。
アセットストアや公開出来ないアセットの削除
ゲームジャムの作品をパブリックなリポジトリ(Github等)に置きたい場合、AssetStoreのような特定の場所からしか取得してはいけないアセットがどうしても問題になります。そのため、まずはそれらのアセットを削除します。
基本的にUnityは.metaデータに格納されているguid経由でアセットへの参照を保持しているため、guidのパラメータさえ一致すれば後から参照を維持することが可能です。特にAssetStoreはunitypackageを利用しているので.metaが変更されず、AssetStoreからインポートすると参照関係を再構築してもらう事が出来るので、それを活用します。
要するに、
今回のゲームジャムでは、破棄したアセットを再構築しやすくするために、tsubaki/Unity-AssetRequestを利用しました。
これを使用すると、AssetStoreから取得出来なかったアセットを起動時に一覧化して取得しやすくしてくれます。リクエストファイルなんかは、必要になるであろうゲームのプロジェクトに入れておけばOKかなと。
ただし、このアプローチは1点問題があります。それは、AssetStoreのアセットのパラメータや内容を変更した時です。
単にパラメータを変更しただけの場合は、.metaファイルが変更されるに留まります。そのため.metaのデータを保持しておき上書きしてもらう事で解決することが可能です。但し、.metaは本体のアセットが無いと破棄されてしまうので、手順としては「アセットインポート→.metaデータ上書き」というややこしい物になります。
またモデルやテクスチャを変更している場合、このAssetRequestから取得したアセットストアの内容を変更しているため、取得するだけでは状況を再現することが出来ません。その場合は手順書なり何なりが必要になるかもしれません。
アセットを整理する
ゲームジャム中は、各々が各々のフォルダを作り編集するアプローチが良く使われます。ですが公開後には余り意味が無いので役割毎にアセットをまとめてしまいます。
まとめるエディタ拡張もあったら便利かもなーとぼんやりと思いっていますが、個人的には特定のシーンでしか使わない機能はシーンと同名のフォルダを作り(ライトマップのように)その下に配置すると便利だなーとも思っていたりする内になんか有耶無耶になったので、まぁ・・・面倒だけど手動で良いか・・・