見出し画像

ADV制作:AS3からUnityに移ってみて、いろいろと悩まされたこと

今までAS3ベースのLemonovel AIRを使って、PC、Steam、モバイルなどを制作している者です。AS3エンジンの更新が少なくなって、コンシューマー化しやすくする、または時代遅れにならないように、Unityに乗り移ろうと決心しました。宴を使うことにしましたが、宴ではなくて、Unityの仕組み自体でいろいろとショックを覚えてしまいました。それで、それらをリストアップしようと思います。Unityを使ったことのない方の参考になりますように。

容量が大きい

プロジェクトファイルは基本数ギガになります。特にADVはほとんど画像とサウンド素材が多いです。今までAS3でゲームを作ったときに、250MBぐらい……と思ったらUnityだと同じ長さのゲームでも普通に数ギガ単位の容量になります。これを、小さくすることもできますが、やり方にいろいろ悩まされてます。

画像の容量=Unityが使う画像の容量ではありません

PSDでもPNGでもJPGでも、「保存時に圧縮設定を変更して容量を小さくしました」と思ったら、勘違いです。1MBのPNGファイルでも、Unityに2~3MBとして読まれることがあります。Unityは特殊のインポート設定を使っており、Unityから画像を選択して、そのUnity内のImport Settingsから画像を圧縮しないと容量が小さくなりません。

BGMインポート設定の落とし穴

BGMのインポート設定は容量の問題と関連するではありません。ただ、BGMのインポート設定次第でNOW LOADING(読み込み処理中画面)こう、画面が暗くなってローディング中アイコンがぐるぐる回るやつですね、あれがすごく頻繁に出てきてしまいます。最初は絵が問題だと思っていました(容量が10MBぐらいだったので)が、実際BGMのインポート設定変えるだけでこれが解決しました。そう、BGMインポート設定をSTREAMINGにすれば解決です!ただし、STREAMINGにするとアセットバンドル使えません!😭

基本、ググった感じではStreamingではないBGMインポート設定がこうですね:
・Load in Background 有効 >バックでロードされるので読み込み処理中でも画面が止まらず、ただロードが間に合わないと、再生の遅延が発生します。
・Preload 有効>プリロードが終わるまでBGMが再生されません。普通に進むなら大した違いは感じられませんが、JUMP命令など、事前に次ぎの演出がロードできない画面では読み込み処理中つまりNOW LOADINGになります
つまり、STREAMINGにしなくても、この二つが有効になると、多少再生の遅延があっても、NOW LOADINGにならないかと……思ったりします(まだ試していませんが)

アセットバンドルの罠①:作るのが遅い!作るのが遅い!

体験版でアセットバンドルを作ってみてそんなに時間かからなかったので油断してました。完全版のアセットバンドル、作るには30分以上かかりましたね。聞いた話では5時間かかるところもあるかと。
追伸・compression設定変えれば早くなると、英語の記事見つけたのですが、まだ試していません。

そもそもアセットバンドルって?
容量少なくするためのもの。ただし、画像をすでに一つ一つ圧縮設定変えて小さくすると、そんなに容量が変わりませんでした。というかこっちのほうが早い。
パッチしやすくするためのもの。Unityは基本、ゲーム素材を一つのファイルにまとめる。これだと、一つ二つだけのファイルを更新したい場合、丸ごと大きい素材ファイルを全部更新しないといけません。アセットバンドル作ると、素材がファイルごと分けられているので、パッチしやすくなります。

ただし、もう一度言いますが、作るのが遅い!時間かかります!!

アセットバンドルの罠②:プリロードが重要になってきます

アセットバンドルというのは、データが必要な時に、そのバンドルからデータをロードして使うもの。つまり、スムーズに表示されるには事前のプリロードが重要です。つまりあれですね。JUMPの後に、大きい画像データのプリロードに時間がかかり、また読み込み処理中(NOW LOADING)画面になりましたね。とほほ😭😭多分JUMPの前にプリロードさせておけば解決できますが。。。そこまで必要だろうか(めんどくさい。そもそもNOW LOADINGが多すぎる!!!)

アセットバンドルの罠③:ゲームビルドの際に、元の素材を移動させないとゲームにダブって入ってしまいます。

ま、ほとんどの方はすでにご存じかと思いますが基本アセットバンドル使うと、ビルドの際にRESOURCESフォルダがゲーム本体に入らないように名前を変更しないといけません(またはアセットバンドルに入ってる素材の元フォルダをRESOURCESフォルダの外に移動させる)。

そんなの簡単やん……ま、簡単ですが!!!名前を変更したとたんUnityが再インポートするんですよね!!データのすべてを>>かなり時間がかかります🙄🙄🙄

アセットバンドル罠④:そもそもアセットバンドル使った場合と、使わない場合で発生するバグが違ったりします?

先ほども話したように、アセットバンドルにしたら、NOWLOADINGが増えたり、あと、たまにですが、一部のDicing素材が読み込めなくなったり……つまりあれですね、使う場合と使わないでテスト結果が違ったりします。で、修正すると、新たにアセットバンドル化しないと修正が反映されません>>もう一度言いますが、アセットバンドルの作成って本当に時間がかかります。(ちなみに私のプロジェクトは口パク目パチ使っていて、フルボイスの3~5時間ほどのゲームです。キャラクター数も多いです。)

他にもあるようですが、今は思い出せません。。。

じゃ、別にUnityにしなくても……

と思うときもありますが、やっぱり新機能や、サポートが続いているというのが魅力的です。なので、知り合いのパブリシャーが、UnityよりもRenpyでコンシューマ化したほうが早い(そういうツールを作ったらしいので)!といったときは驚いて、うれしい……まではいけませんが、納得しました。なぜかというと、Renpyにも罠があるからです。長年使わないと気付かなかったりしますが、また別の機会で話しましょう。

結論:とりあえず、今回私はアセットバンドルを使わない方向で行くかもしれません。ええ。アセットバンドルを作るよりも300MBをアップロードしたほうが早いと思うからです。


この記事が気に入ったらサポートをしてみませんか?