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

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

Materialをスクリプトで実行時に作成してSetPassCall数を比較

AOIちゃんMモデルをマテリアル1にするのに成功したので、Shaderで髪と目の色を指定できるようにしました。

目と髪が別々に色指定可能ですが、メッシュが1つなので、髪と目がそれぞれ5色だと、25個のマテリアルを作る必要があります。
別々なら10個で済むのでギリOKですが、25個はさすがに面倒なので、スクリプトで実行時に作ってみたい。


まずは単独のマテリアルで100体表示した例。地面と文字でSetPassCall2なので、人体で+1しか増えないで3となっている。
f:id:yasu9780:20170306070146p:plain


マテリアルを二つ用意して、切り替えた場合、SetPassCallが6~7となり、一つの場合と比べて、3~4増えている。
よくわからない増え方。
f:id:yasu9780:20170306070153p:plain



次は、あらかじめ作っておくのではなく、スクリプトでMaterialをnewして二つ目を追加した場合。

何も考えずに100体のマテリアルを書き換えると、SetPassCallは100を超えます。
100体すべてでインスタンス化されるせいで、三色使うなら、三色分のマテリアルを保存しておいて、同じ色を使うなら、使いまわす必要があります。


上記と同じくらいだが、微妙に違う気もする。
f:id:yasu9780:20170306070157p:plain


一つ目のマテリアルは元々の奴。次はnewして赤色にしてmats[1]に保存。
マテリアルを書き換えた時点でnewされるって話もあるので、内部的にどうなっているかよくわからない。
このへんはDestroyした場合に、マテリアルインスタンスだけが残ってリークする可能性もあるらしい。

MeshRenderer r = ob.GetComponent<MeshRenderer>();
mats[0] = r.sharedMaterial;

Material m = new Material( r.material);
m.SetColor("_HairColor", new Color(1, 0, 0));
mats[1] = m;

複数の色の髪のテクスチャをアトラス化して一つにしてしまえば、複数色でマテリアル1が実現できるのかな?
ちょっとやり方が分からないけど。


5色にしたらSetPassCall 15で、初めの1色より13増えている。1色あたり3ぐらい増えるのかな?

f:id:yasu9780:20170306074034p:plain


参考

dnasoftwares.hatenablog.com

YouTubeのリコメンドがラムちゃん(怖すぎる)

SCHOOLGIRLS OF THE DEADの動画の再生後のリコメンド動画の中に
うる星やつらラムちゃんの動画が( ゚Д゚)
最近はいっさいうる星の動画なんか見てないですから、純粋に動画の内容からのリコメンドと思いますが、
DEADみたいな単語からゾンビ動画をリコメンドするのはわかりやすいけど、

セーラー服で空を飛んでいる映像から、ラムちゃんをリコメンドするなんて、YouTubeのリコメンドエンジンは「完全に見てますね」
Google恐るべしです。
f:id:yasu9780:20170305053410p:plain

Atomのタブレットは早かった

Androidスマホのテスト機として、LG-04E(android4.1)と、FreeTelRei(Android6.0)を使ってますが、おおむねFPS15ぐらい出るようになった。校舎裏でぎり20fps
生徒数24人 先生6人 ゾンビ3匹の環境
SkinnedMeshがカリングされてれば人数は関係ないと思うけど

上記のスマホ2機種はいづれもフルHD
ゲーム上は、解像度990x640に落としてるけど、やはり元がフルHDの液晶だと、グラフィック性能ではハンデになるんじゃないかと思う。
GPU性能的には、ReiよりLG-04Eの方が上だと思うけど、FPSにさほど差はでなかった。
AnimationとかPhisics関係だと、GPUというより、CPUがボトルネックなのかな。



Asusタブレットでも試してみたら、やや遅い感じ。こんなもんかな?と思ったけど、
ビルドするときの、DeviceFilterをARMv7だけにしてたので、試しにFAT(ArmV7+x86)にした、凄く早くなった。
校舎裏でfps30超えるw
f:id:yasu9780:20170303170054j:plain

さすがAtom速いね。もうIntel撤退してるけど。
ただ、このスマホは1280x720ぐらいの解像度だけど

英語版も作りました。なにが大変って、人名辞典の配列の名前を全部ローマ字にするのがたいへん。名字なんか読めない名字もあるし。

TsundereSimulator2をやってみた。

KUMAGAMESさんがtweetしてたTsundereSimulator2をやってみた。

play.google.com

これ学校は新しい方のアセット使ってるし、キャラクターは以前はAoiモデルだったのが、
2の方は、
SURIYUNさんのモデルなので、スタイリッシュな感じ
https://www.assetstore.unity3d.com/jp/#!/search/page=1/sortby=popularity/query=publisher:10786
AOIモデルの会社は新作を全然出さなくなったので、今後追加される見込みは少ないけど、SURIYUNさんは続々と新作をアセットストアに追加している。
ただ、$50ぐらいするんで、AOIモデルを買いましたが|д゚)

学校も、こっちのモデルは若干高いけど、廊下の床に色がついてたり、絵が廊下に貼ってあったりで明るい雰囲気。
自分が買った教室と廊下は、やや無機質というかCADデータ的な感じなんですよね。


ちょっとプレイしてみたけど、正面玄関は開かないですね? 外には出れない? 非常ドア的なものはいくつか空きませんでした。
他のキャラが入ってくるタイミングでドアの外に出ようと思ったけど、出れなかった。
あと、常時乳揺れしている。これはアニメーションでモーションが入っているのかな? 主人公以外も揺れているので、SpringCollider的なスクリプトではないと思うけど。
AOIモデルも、Breastってボーンは入っているので、SpringColliderを仕込めば揺らせると思うけど、標準のアニメーションには乳揺れは入っていない。

あと、主人公が走る時に両手が後ろにビーンとなるのが違和感( ゚Д゚) 剣士的な走りだと思うけどw
剣がカオスヘッドみたいな凄い剣
剣は軌跡がtrailあるのがいい感じ。trailはやっぱり入れたい。
アセットストアのtrail系を以前調べたけど、剣の軌跡に合わせてmeshを作るような仕組みで実現されていた。高くないのでなにか買ってみよう。


他の生徒を攻撃すると、死ぬんじゃなくて泣き出すのが可愛い。しばらくすると先生が走ってきて、言葉で説教される「他の生徒に暴力ふるっちゃだめですよ」的な。
このへんはノベルゲーム的な、セリフ選択になっている。
あと気づいたところは、学校内の雑踏的な環境音が流れている。
前作のTsundereSimulatorは50~100万ダウンロードになっている。

スマホで遅い(´・ω・`)

APKサイズは79MBまで減らしたんですが、FPSが全然でない(´・ω・`)
8fpsぐらい。
校舎裏に行ったら10fpsとか。


以前は15fpsぐらい出てたけど、かなり遅くなってて愕然
PCでは常に60fpsキープだから油断してた。

モバイルでprofileして原因を調べてみます……


バスとか学校周りの家とか、なくても関係ないものをなくしてみたけど、fpsはほとんど変わらず。
fps低いと、カメラの視点変更がもっさりしてて厳しい。
あと、射撃で照準を合わせるような処理がはげしくやりづらい
カメラは自動追尾が欲しくなる。


スマホ側のプロファイル見てみたけど、
animatorとかphsicsX系が遅い感じ。
GPUというよりCPUの負荷が高い。
GPUはpresentAndSyncが高いので、これはCPUが遅いので待たされてる感じ?
キャラを増やしたせいなのかなあ?
まだ50人ぐらいで、100人行ってないだけど……
キャラを減らして検証してみる。

PCだと、70fps行くときもあるんだけどなあ。CPU負荷もほとんどないし。
やっぱりモバイルとPCじゃ全然違いますね


生徒16人 先生2人にさげたら、12fpsぐらいでるようになった。校舎裏で20fps。
Humanoidを出した時の負荷がモバイルはPCよりかなりやばいのかな?
HighschoolSimulator2017は常時100人出してるようだけど、凄いな( ゚Д゚)


スマホでPresentAndSyncが高いよ!って質問がフォーラムにあったけど、回答0か(´・ω・`)
Graphics.PresentAndSync (Device.Present) on mobile devices problem - Unity Answers
この質問フォローが147人ってどういうこと?
回答待ちが147人以上いるってこと?

学校シミュレーター進捗

ゾンビが出てくるようになりました。
ゾンビに襲われるとゾンビになります。


f:id:yasu9780:20170301224403p:plain
銃が使えるようになった。ライフルとピストルの2種。弾が無くなるとリロードで装填。
売店でも弾を売ってます。


f:id:yasu9780:20170301224410p:plain
自転車に加えて、ベスパにも乗れるようになった(安全運転をこころがけましょう)


f:id:yasu9780:20170301224415p:plain
売店でお菓子を買えるようになった。
ランチタイムは全員がここにお菓子を買いに来る。
売店の店員さんを殺すと、いっさい買い物できなくなるので、なるべく殺さないようにしましょう。


プレイ動画
トップ画面とか設定画面も作った。あとBGMとか効果音もつけた。

SCHOOL GIRL OF THE DEAD
とりあえずスマホでのパフォーマンス調整と操作性を調整して、英語版を作って、近日中にAndroidMarketに公開予定。
タイトルどうしようかな。