結局、マップチップの3Dモデルは、アセットストアで購入することにした。わはは。
実際、モデリングやってる時間なんかなかった。
アセットストアで購入したのは、xiaolianhuastudioが販売している『Make Your Fantasy Game』というアセット。
購入者の評価が非常に高くて、ダンジョンのパーツや樹木、建造物などファンタジー系のマップに必要なモデルを大体網羅していたのと、無料お試し版の品質がよかったため購入に踏み切った。
ただし、その分値段も高めで、$70もした。
新作ゲームをパッケージで購入するのと変わらない値段である。
はっきり行って、オリジナルのゲーム作るより、アセット作って売るほうが儲かるんじゃないかと思えてくる。
さて、これでマップパーツのモデリングはしなくて済んだのだけれども、ここからが実は大変しんどい道だったのだ。
まず、購入したアセットは、Unityのバグなのか、無償版だからなのか、まともにインポートできなかった。
インポートの途中でUnityがクラッシュするのである。
これには愕然とした。七千円をどぶに捨てたのかと半分あきらめかけていた。
さすがにそれじゃあまりに悔しいので、いろいろ試行錯誤してみた結果、小分けにインポートしていけば、メッシュやテクスチャ、プレハブなど、ある程度欲しいものはインポートできるようになった。
それでも、まだインポートできないアセットがいくつかあるんだけれども、まぁ、これで作業は進めるので我慢することにした。
もうアセットストアは無料のものを除いて当分使わないでおこうと思うくらい。
で、ダンジョンのパーツ作りをはじめたところ、第二の落とし穴にはまった。
ドローコール問題である。
Blenderで自作したモデルはいくらインスタンス化しても、ドローコールが増えないのに、インポートしたアセットはインスタンス化するたびにドローコールが増えていくのである。
購入したアセットは、全モデル分、UVをちゃんとテクスチャアトラスにまとめてあって、最大限に効率化されている。
なんでだ!なんでなんだ!と、BlenderとUnityを行ったりきたりしながらいろいろ試しているうちに、残念な結論に行き着いた。
どうやら、Unityの無償版では、頂点数か面の数かはっきりしないけど、一定数を超えるモデルでは、Batch saving が働かないのである。
いろいろ調整した感じでは、頂点で200未満、三角ポリゴンで150未満くらいか。
この規模を超えるモデルでは Batch Saving が働かない。
俺が自作した樹木を100本並べてもドローコールが1つしかあがらなかったのは、面が少ないスカスカのモデルだったからBatch Savingが利いてドローコールが抑えられていたのであった。
無料版とは実に甘い罠である。
しかし、まぁ、べつの見方をすれば、無料版であっても、頂点数を抑えればBatch Saving でドローコールを抑えることができると考えることもできる。
というわけで、7,000円も出して買ったアセットだけれども、その中で面の少ないアセットのみを精選してマップのパーツを作ることにした。
冒頭の画像は、そうやって作ったマップの組み立て例である。
なのでよく観ればわかるんだけれども幹のある樹木がない。ドローコールがあがるから入れられなかったのだ。
画像で使用されているパーツは森と地面をそれぞれ3パターンずつで、アセットを組み合わせて作った。
同じパーツが並ばないように配置するのと、回転を組み合わせるだけで、それほどリピート感のないマップになったんじゃないかと思う。
実際はさらに壁やら岩やらが増えていく。
そして、問題のドローコールだけれでも、上の画像でドローコールは9である。
スカイボックスを使っているので、その分を差し引けば、マップパーツだけだとたったの2で済んだ。うん、優秀。
ちょっと高かったけど、購入して正解だったと思う。
昼間の設定でカメラの位置を変えた画像も乗せておきます。