Unity × スマートホン開発
               で
           学んだこと


        Lead Software Engineer
                    牧野 克俊
                   2012/10/28
自己紹介
自己紹介

• 牧野 克俊
 –オンラインゲーム開発を8年ほ
  どやってきました
 –PC、コンソール〜ブラウザゲー
  ム
 –クライアント〜サーバまで担当
会社紹介
Aimingとは
タイトル




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




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




Blade Chronicle
  (PC / MMORPG)
タイトル
タイトル




 RPG三国志           クイーンズブレイド
(PC / MMOROPG)     THE CONQUEST
                 (ブラウザ / RPG ストラテジー)
はじめに
はじめに
• チームは PC オンラインゲームの
  開発経験が多い
はじめに
• チームは PC オンラインゲームの
  開発経験が多い
• 初めてのスマートホン開発
はじめに
• チームは PC オンラインゲームの
  開発経験が多い
• 初めてのスマートホン開発
• Unity を使って開発
はじめに




なぜ Unity?
はじめに

• マルチプラットフォーム対応必
  須!
• 研究開発大変そう・・・
はじめに
• いろいろ検討した結果・・・
はじめに
はじめに
• Write Once, Run Anywhere
           Program/Resource
はじめに
• 低レイヤー層を吸収
     Application
            Unity
  Graphic    Sound   IO
はじめに
• 拡張可能
            Application
            Unity
                          Extend
  Graphic    Sound   IO
はじめに
• 比較的安価
はじめに
• チームは PC オンラインゲームの
  開発経験が多い
• 初めてのスマートホン開発
• Unity を使って開発
開発中に起こった
事例を紹介します
1. ファイル管理
ファイル管理


Unity 推奨は
      「ファイル管理は
 Asset Server を使ってくださ
             い」
ファイル管理




でも・・・
ファイル管理

「いつも通りGit(Subversion)
            で
      いいよね?」
「Asset Server お金かかかる
           し」
ファイル管理




実際やってみると・・・
ファイル管理



「テクスチャがはられてない
     よ?」
「Prefab がおかしいよ?」
ファイル管理




あれ?
ファイル管理


meta ファイルのコミット
        を
     忘れている!
ファイル管理



なんとか防げないか
  な・・・
ファイル管理

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

• Git(Subversion)フックスクリ
  プト
 –pre-commit hook でチェック
  • 対応する meta ファイルがない
  • meta ファイルだけ存在する
ファイル管理



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




でも正直・・・
ファイル管理



Asset Server の導入を
    お勧めします
2. 動作確認
動作確認



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



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



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

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

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



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

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

• 開発機として Mac を増やす
 –iOSアプリ作成できるのはMacだ
  け
 –Android アプリも作成できるの
  で スマートホン開発では Mac
  おすすめ
動作確認

• 自動ビルドの活用
–Jenkinsでパッケージ(.ipa.apk)作
 成
–生成されたパッケージを取って
 きてデバイスにインストール
動作確認

• さらにテスト時は
–Web からワンタッチでインス
 トール
 <a href="itms-
 services://?action=download-
 manifest&url=http://***/***.plist></a>
動作確認



• iOSアプリのビルドは面倒
• 自分で頻繁にビルドしなくて
  も良い環境構築を
3. データ設定
データ設定



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

• オブジェクト配置
• 敵の配置(ポップ位置の指
  定)
• イベント配置
• パラメータ設定
データ設定


「シーンをまたいだ設定がや
  りにくい・・・」
 「一覧性が悪い・・・」
データ設定

• オブジェクト配置
• 敵の配置(ポップ位置の指
  定)
• イベント配置
• パラメータ設定
データ設定



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

• UnityEditor で設定
 –レベル内で完結するもの
 –配置位置
• Excel で設定
 –バランスを取るために一覧する
  必要があるもの
4. パフォーマンス
パフォーマンス


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




あれ?速度でないぞ・・・
パフォーマンス


  スマートホンでは
ポリゴン数よりも Drawcall 数
   が重要だった!
パフォーマンス

• iPhone 4はこれでほぼ同じ FPS
 –2400 ポリゴン Drwacall 400
 –50000 ポリゴン Drwacall 200
パフォーマンス




Drawcall をどう減らす?
パフォーマンス

• マテリアルの共通化
–テクスチャのアトラス化
• キャラクタのメッシュ、テク
  スチャをプログラムで結合
パフォーマンス



Drawcall 数を減らしたのに
     まだ遅い・・・
パフォーマンス




フィルレートが問題だった!
パフォーマンス

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




どうやって減らす?
パフォーマンス
• ライティングなし
 –ライトマップのみ
 –ピクセル(フラグメント)シェー
  ダはシンプルに
• αで抜くのではなくポリゴンで形
  状を作る
• レンダリング解像度を減らす
パフォーマンス



• Drawcall 数を減らす
• Overdraw 面積を減らす
4. 通信
通信



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

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



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




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

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



通信をヘビーに使うゲームは
 まだ未リリース・・・
最後に
最後に
• なんだかんだで Unity 便利です!
最後に
• なんだかんだで Unity 便利です!
• スマートホンはやっぱりまだ非力
最後に
• なんだかんだで Unity 便利です!
• スマートホンはやっぱりまだ非力
• 通信はあんまり怖くない

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