アプリつくってみっか!趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。この広告は、90日以上更新していないブログに表示しています。Cityという、秋葉原をモデルにした街をベースにレースゲームを作ってきましたが、自分の街を作ることにしました!建物のモデリングが90個くらい完成したので適当に並べてみたのがこれです。植物の緑が一切ないので殺風景ですね。Cityの地面を流用していますが、いずれは地形も自分で作る予定です。Cityはかなりのデータ量、かつマテリアルをふんだんに使用しているため、モバイル用としてはなかなか厳しいものがあります。Cityの使用を諦め、自分で街を作ることにしました。callsを低く抑えるのが目的です。callsが2264とかなりの値になっています。Graphicsのフレームレートは55.2fpsです。リアルタイムリフレクションはモバイルでは重すぎるので切っていてこの状態です。これは街を構成するビル各々が複数のマテリアルを使っているためだと思います。こんなシンプルな四角いビルでも贅沢に5つのマテリアルを使用しています。2048ピクセルのテクスチャを1つだけ作り、街のすべてのビルが同じマテリアル、テクスチャを共有するようにしてみました。ライセンス(CC-BY)」で提供されていますので、クレジット表示さえしておけば改変などは自由とのことなのでありがたく使わせてもらっています。先ほどと同じようなシンプルな四角いビルですが、使用しているマテリアルは一つです。他のビルもすべて同じマテリアルを参照しています。モデリングにはBlenderを使用しています。Cityでは2階以上の部分を1つのポリゴンにし、窓1つ分のテクスチャーをリピートして貼り付ける構造のようです。この方法だとポリゴン数とテクスチャの面積は少なくて済みますが、大きなテクスチャの一部分をリピートしてポリゴンに貼り付けることは(たぶん)できないので、小さなテクスチャを独立して持つ必要があるのだと思います。私の場合は階を積み重ねるようにポリゴンを構成し、階単位でテクスチャを貼るようにしています。ビルは2階から上は同じ見た目なので、テクスチャの同じ部分を参照しています。幅の広いビルでは階ごとに1つのテクスチャだと窓が左右に伸びておかしく見えるので適当に縦方向にも分割する必要があります。1つの連続したメッシュにすることにはこだわっていません。ヘリポートやエレベーター部分の出っ張りなどの付加的な部分は別のメッシュを後づけしています。するとモデリングやUV編集が楽でポリゴン数も減らせます。パフォーマンス的にはどうなんでしょう?若干無駄な描画ピクセルが増えるデメリットがあるかもしれません。できるだけ見えない面は削除するようにはしています。ググってみましたが、「1つの連続したメッシュvs複数の別れたメッシュ」についてどちらがより適切な方法なのか結論は出ませんでした。YouTubeのチュートリアルで、「ドアに取っ手を作ろう」と言ってビル全体をぐるっと何箇所も輪切りにしているやり方も見たりしたので、作り方は人それぞれなのだと思います。冒頭のスクリーンショットで紹介した「俺の街」で早速車を走らせてパフォーマンスを確認してみましょう。callsが62と大幅にダウンしています。おかげでフレームレートが201.7fpsとなり、元の約4倍に向上しています。callsの数を大幅に削減できることが検証できました。ちなみにiPhone5上で実行した時のフレームレートは次のとおりです。9.4MBに削減されましたが、ちゃんとした街を作るのにあと2〜3枚はテクスチャが必要なので、数MBは増加予定です。複雑なもので47KBでした。470となっています。試しにCR-Xで街を流してみました。ご覧のとおり、メインストリートを外れるとただの空き地が広がっています。他のビルに隠れて見えない部分はオクルージョンカリングで非表示になるので、マップをビルで埋め尽くしたとしてもfpsは下がらないと思います。アプリこの商品を含むブログを見るプロフィールid:takujidev個人でiPhone/Androidゲームを開発しています。ミツバチ軍団vs昆虫軍団の縦スクロールシューティング。