Unity * スマートフォン開発で学んだこと

83
Unity × ススススススススス ススススス Lead Software Engineer スス スス 2012/10/28

Transcript of Unity * スマートフォン開発で学んだこと

Page 1: Unity * スマートフォン開発で学んだこと

Unity × スマートホン開発で

学んだこと

Lead Software Engineer牧野 克俊

2012/10/28

Page 2: Unity * スマートフォン開発で学んだこと

自己紹介

Page 3: Unity * スマートフォン開発で学んだこと

自己紹介

• 牧野 克俊–オンラインゲーム開発を8年ほ

どやってきました–PC 、コンソール〜ブラウザゲー

ム–クライアント〜サーバまで担当

Page 4: Unity * スマートフォン開発で学んだこと

会社紹介

Page 5: Unity * スマートフォン開発で学んだこと

Aimingとは

Page 6: Unity * スマートフォン開発で学んだこと

タイトル

Lord of Knights(iOS / RPG ストラテジー)

Page 7: Unity * スマートフォン開発で学んだこと

タイトル

Page 8: Unity * スマートフォン開発で学んだこと

タイトル

剣と魔法のログレス ( ブラウザ/ MMORPG )

Page 9: Unity * スマートフォン開発で学んだこと

タイトル

Page 10: Unity * スマートフォン開発で学んだこと

タイトル

Blade Chronicle(PC / MMORPG )

Page 11: Unity * スマートフォン開発で学んだこと

タイトル

Page 12: Unity * スマートフォン開発で学んだこと

タイトル

RPG 三国志(PC / MMOROPG )

クイーンズブレイドTHE CONQUEST

( ブラウザ / RPG ストラテジー)

Page 13: Unity * スマートフォン開発で学んだこと

はじめに

Page 14: Unity * スマートフォン開発で学んだこと

はじめに

• チームは PC オンラインゲームの開発経験が多い

Page 15: Unity * スマートフォン開発で学んだこと

はじめに

• チームは PC オンラインゲームの開発経験が多い

• 初めてのスマートホン開発

Page 16: Unity * スマートフォン開発で学んだこと

はじめに

• チームは PC オンラインゲームの開発経験が多い

• 初めてのスマートホン開発• Unity を使って開発

Page 17: Unity * スマートフォン開発で学んだこと

はじめに

なぜ Unity ?

Page 18: Unity * スマートフォン開発で学んだこと

はじめに

• マルチプラットフォーム対応必須!

• 研究開発大変そう・・・

Page 19: Unity * スマートフォン開発で学んだこと

はじめに

• いろいろ検討した結果・・・

Page 20: Unity * スマートフォン開発で学んだこと

はじめに

Page 21: Unity * スマートフォン開発で学んだこと

はじめに

• Write Once, Run Anywhere

Program/Resource

Page 22: Unity * スマートフォン開発で学んだこと

はじめに

• 低レイヤー層を吸収

Unity

Application

Graphic Sound IO

Page 23: Unity * スマートフォン開発で学んだこと

はじめに

• 拡張可能

Unity

Application

Graphic Sound IOExtend

Page 24: Unity * スマートフォン開発で学んだこと

はじめに

• 比較的安価

Page 25: Unity * スマートフォン開発で学んだこと

はじめに

• チームは PC オンラインゲームの開発経験が多い

• 初めてのスマートホン開発• Unity を使って開発

Page 26: Unity * スマートフォン開発で学んだこと

開発中に起こった事例を紹介します

Page 27: Unity * スマートフォン開発で学んだこと

1. ファイル管理

Page 28: Unity * スマートフォン開発で学んだこと

ファイル管理

Unity 推奨は「ファイル管理は

Asset Server を使ってください」

Page 29: Unity * スマートフォン開発で学んだこと

ファイル管理

でも・・・

Page 30: Unity * スマートフォン開発で学んだこと

ファイル管理

「いつも通り Git(Subversion)で

いいよね?」「 Asset Server お金かかかる

し」

Page 31: Unity * スマートフォン開発で学んだこと

ファイル管理

実際やってみると・・・

Page 32: Unity * スマートフォン開発で学んだこと

ファイル管理

「テクスチャがはられてないよ?」

「 Prefab がおかしいよ?」

Page 33: Unity * スマートフォン開発で学んだこと

ファイル管理

あれ?

Page 34: Unity * スマートフォン開発で学んだこと

ファイル管理

meta ファイルのコミットを

忘れている!

Page 35: Unity * スマートフォン開発で学んだこと

ファイル管理

なんとか防げないかな・・・

Page 36: Unity * スマートフォン開発で学んだこと

ファイル管理

• Git(Subversion) フックスクリプト–pre-commit hook でチェック

Page 37: Unity * スマートフォン開発で学んだこと

ファイル管理

• Git(Subversion) フックスクリプト–pre-commit hook でチェック

•対応する meta ファイルがない

•meta ファイルだけ存在する

Page 38: Unity * スマートフォン開発で学んだこと

ファイル管理

Git(Subversion) でファイル管理できます

Page 39: Unity * スマートフォン開発で学んだこと

ファイル管理

でも正直・・・

Page 40: Unity * スマートフォン開発で学んだこと

ファイル管理

Asset Server の導入をお勧めします

Page 41: Unity * スマートフォン開発で学んだこと

2. 動作確認

Page 42: Unity * スマートフォン開発で学んだこと

動作確認

「 Editor 上ですぐに動作確認できるから楽だねー」

Page 43: Unity * スマートフォン開発で学んだこと

動作確認

そろそろ実機で確認してみるか・・・

Page 44: Unity * スマートフォン開発で学んだこと

動作確認

「あれ動かないよ?」「 Editor 上と見た目が違う

な・・・」

Page 45: Unity * スマートフォン開発で学んだこと

動作確認

• スマートホンで動かない–メモリの使い過ぎ–使えない関数、機能がある–GPU の違い–トランポリンサイズの違い

Page 46: Unity * スマートフォン開発で学んだこと

動作確認

• 画面サイズの違いによる違和感–UI の大きさ–指で隠れてしまう

Page 47: Unity * スマートフォン開発で学んだこと

動作確認

実機確認を簡単にできるようにしないと・・・

Page 48: Unity * スマートフォン開発で学んだこと

動作確認

• 開発機として Mac を増やす• 自動ビルドの活用

Page 49: Unity * スマートフォン開発で学んだこと

動作確認

• 開発機として Mac を増やす–iOS アプリ作成できるのは Mac

だけ–Android アプリも作成できるの

で スマートホン開発では Mac おすすめ

Page 50: Unity * スマートフォン開発で学んだこと

動作確認

• 自動ビルドの活用–Jenkins でパッケージ (.ipa.apk)

作成–生成されたパッケージを取って

きてデバイスにインストール

Page 51: Unity * スマートフォン開発で学んだこと

動作確認

• さらにテスト時は–Web からワンタッチでインス

トール<a href="itms-services://?action=download-manifest&url=http://***/***.plist></a>

Page 52: Unity * スマートフォン開発で学んだこと

動作確認

• iOS アプリのビルドは面倒• 自分で頻繁にビルドしなくて

も良い環境構築を

Page 53: Unity * スマートフォン開発で学んだこと

3. データ設定

Page 54: Unity * スマートフォン開発で学んだこと

データ設定

「 UnityEditor で全部設定できるようにしようか」

Page 55: Unity * スマートフォン開発で学んだこと

データ設定

• オブジェクト配置• 敵の配置(ポップ位置の指

定)• イベント配置• パラメータ設定

Page 56: Unity * スマートフォン開発で学んだこと

データ設定

「シーンをまたいだ設定がやりにくい・・・」

「一覧性が悪い・・・」

Page 57: Unity * スマートフォン開発で学んだこと

データ設定

• オブジェクト配置• 敵の配置(ポップ位置の指

定)• イベント配置• パラメータ設定

Page 58: Unity * スマートフォン開発で学んだこと

データ設定

最終的にパラメータ系は Excel(Google Spread Sheet) で設定

Page 59: Unity * スマートフォン開発で学んだこと

データ設定

• UnityEditor で設定–レベル内で完結するもの–配置位置

• Excel で設定–バランスを取るために一覧する

必要があるもの

Page 60: Unity * スマートフォン開発で学んだこと

4. パフォーマンス

Page 61: Unity * スマートフォン開発で学んだこと

パフォーマンス

「スマートホンは非力だからポリゴン数には気をつけよ

う」

Page 62: Unity * スマートフォン開発で学んだこと

パフォーマンス

あれ?速度でないぞ・・・

Page 63: Unity * スマートフォン開発で学んだこと

パフォーマンス

スマートホンではポリゴン数よりも Drawcall

数が重要だった!

Page 64: Unity * スマートフォン開発で学んだこと

パフォーマンス

• iPhone 4 はこれでほぼ同じ FPS–2400 ポリゴン Drwacall 400–50000 ポリゴン Drwacall 200

Page 65: Unity * スマートフォン開発で学んだこと

パフォーマンス

Drawcall をどう減らす?

Page 66: Unity * スマートフォン開発で学んだこと

パフォーマンス

• マテリアルの共通化–テクスチャのアトラス化

• キャラクタのメッシュ、テクスチャをプログラムで結合

Page 67: Unity * スマートフォン開発で学んだこと

パフォーマンス

Drawcall 数を減らしたのにまだ遅い・・・

Page 68: Unity * スマートフォン開発で学んだこと

パフォーマンス

フィルレートが問題だった!

Page 69: Unity * スマートフォン開発で学んだこと

パフォーマンス

• iPhone 4 で全画面を覆う半透明テクスチャを重ね合わせてみた–背景 +2枚をオーバーレイで FPS

16

Page 70: Unity * スマートフォン開発で学んだこと

パフォーマンス

どうやって減らす?

Page 71: Unity * スマートフォン開発で学んだこと

パフォーマンス

• ライティングなし–ライトマップのみ–ピクセル(フラグメント)シェーダはシンプルに

• α で抜くのではなくポリゴンで形状を作る

• レンダリング解像度を減らす

Page 72: Unity * スマートフォン開発で学んだこと

パフォーマンス

• Drawcall 数を減らす• Overdraw 面積を減らす

Page 73: Unity * スマートフォン開発で学んだこと

4. 通信

Page 74: Unity * スマートフォン開発で学んだこと

通信

「 3G 回線だから慎重に作ろう」

Page 75: Unity * スマートフォン開発で学んだこと

通信

• 3G 回線に対するイメージ–帯域が狭い–レイテンシが大きい–すぐ切断される

Page 76: Unity * スマートフォン開発で学んだこと

通信

10 年前のネットワーク環境のつもりで

Page 77: Unity * スマートフォン開発で学んだこと

通信

大きな問題は出ていない!

Page 78: Unity * スマートフォン開発で学んだこと

通信

• あえて注意するとしたら–スレッドはやめた方がいい–必要以上に通信しない

Page 79: Unity * スマートフォン開発で学んだこと

通信

通信をヘビーに使うゲームはまだ未リリース・・・

Page 80: Unity * スマートフォン開発で学んだこと

最後に

Page 81: Unity * スマートフォン開発で学んだこと

最後に

• なんだかんだで Unity 便利です!

Page 82: Unity * スマートフォン開発で学んだこと

最後に

• なんだかんだで Unity 便利です!• スマートホンはやっぱりまだ非力

Page 83: Unity * スマートフォン開発で学んだこと

最後に

• なんだかんだで Unity 便利です!• スマートホンはやっぱりまだ非力• 通信はあんまり怖くない