AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

ヤンデレちゃん100体

f:id:yasu9780:20170211122549p:plain

ヤンデレちゃんHモデル100体表示。

1体あたりBaches1
このへんが限界なのかな。SkinnedMeshでこれ以上はまとめられないはずだし。

もともとFace Hair Cloth SkinとsubMeshが4つあるので、drawCallは1体あたり4発生する
submeshを統合して、テクスチャをまとめることでDrawCall1にできる
ただし、現状、顔と体をまとめるとUV関係の異常なのかどうしても顔がおかしくなる。
MeshBakerでSkinnedMesh選んでMergeするとそもそもMecanimアニメーションできなくなるし、
SimpleLODではTexureAtlasでワーニングが出て、顔が変になる。
ボーン対応の順番がづれている可能性もあるのかな?


あとShader関係は、付属のToon/CutoffはCullFront/Backで2passなので2回描画するからDrawCallが2倍になる
CullOffで1passにすればdrawCall x1で済む。
メッシュの裏側が見えないようなモデルなら問題ない?

MecaniAnimeは、Idleだろうと激しい動きだろうと負荷は変わらないみたい。動かないなら切ってしまうしかないのかな。
もちろんカメラの外にいればカリングされるでしょうけど。

うちのAndroidスマホで12.5fps程度



RTSの大戦争物みたいな場合で500体とか表示したい場合は、MecanimとかSkinnedMeshをやめてしまうしかないのかな。
たとえば、人はすべてMeshにして、10体毎にまとめて、頂点を書き換えるとかで、10体毎にまとめて表示するとか?


docs.unity3d.com

SetPassCallが多いとCPU負荷が安定しないらしい。
上記の100体では8しかない。これはマテリアルを100体が共有してるからかも。


docs.unity3d.com