Skip to main content
Unity ゲーム開発



                東京開発グループ
          リードソフトウェアエンジニア
                    牧野 克俊
自己紹介
• Aiming 以前
  – オンラインゲーム、通信ミドルウェアの開発
• Aiming では
  – 仕事は技術監修、調査、研究
  – MMO, MO といったオンラインゲームが
    フィールド
概要

• なぜ Unity なのか?
• Unity 開発入門
• Unity はどう使うべきか?
なぜ Unity なのか?
   Aiming の場合
なぜ Unity なのか?
• 要求
 – スマートフォン(最低 iOS、Android)
 – ゲームジャンルは多岐
  • SLG, RPG, etc
 – ネットワーク機能が必須
 – ワンソース・マルチプラットフォーム
   が理想
なぜ Unity なのか?



• 結論
 –Unity と C# を用いて作成する
なぜ Unity なのか?




  では理由を
なぜ Unity なのか?
• 候補
 – Unity
 – UDK
 – Titanium
 – Corona
 – Marmalade
 – Flash(Adobe AIR)
なぜ Unity なのか?
          Unity   UDK   Titanium   Corona   Marmalade   Flash

  iOS      ○      ○       ○         ○          ○         ○

Android    ○      △       △         ○          ○         ○

実行速度       ○      ○       ×         △          ○         △

拡張性        ○      △       ○         ×          ○         ×

通信対応       △      △       ×         ×          ×         △

開発効率       ○      ○       ×         ×          ×         ○

学習コス       ×      ×       ×         ×          ×         ○
  ト
なぜ Unity なのか?
• 言語
 – Unity           → C#, JavaScript, Boo
 – Titanium        → JavaScript
 – Corona          → Lua
 – UDK             → UnrealScript
 – Marmalade       → C++
 – Flash(Adobe AIR)      → ActionScript
なぜ Unity なのか?
• 言語(C# vs JavaScript)
 – 状況
   • 社内的に中、大規模のチーム(プログラマ
     が 5~10 人)
   • C#, JavaScript でのゲーム開発経験なし
   • チーム内のレベル、経験がバラバラ
なぜ Unity なのか?
• 言語(C# vs JavaScript)
 – 結論としては C# なんですが
   • JavaScript は自由すぎる
   • C# はエディタ(コンパイラ)が制約をかけ
     てくれるところが便利
Unity 開発入門
Unity 開発入門
• 実際の開発
 1.   Scene 作成
 2.   オブジェクト配置
 3.   スクリプト作成
 4.   Prefab 化
Unity 開発入門
1. Scene 作成
 – レベルの定義を管理するもの
Unity 開発入門
2. オブジェクト配置
   – GameObject
   • ゲーム中に存在するすべてのオブジェクト
   • 自身に機能はなくコンテナ
   • コンポーネントを追加して機能とする
   • Transform コンポーネントは必ず追加される
Unity 開発入門
3. スクリプト作成
 – MonoBehaviour
   • その名の通り振る舞いの定義
   • GameObject に追加して機能が実行される
Unity 開発入門



Awake()      Start()       Update()
 Awake()       Start()      Update()    Rendering
  Awake()        Start()     Update()
Unity 開発入門
4. Prefab 化
  – Prefab
    • GameObject とコンポーネントのセットを再
      利用可能なように保存
    • 実行時にはこれをもとにインスタンス作成
Unity 開発入門
• 使えるリソース
 – Meshes
   • .FBX , .dae (Collada) , .3DS , .dxf, .obj
 – Textures
   • PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF, PICT
Unity 開発入門
• ビルド
 – 各実行環境でビルドが必要
   • アセットもその時各環境用に変換される
 – デスクトップとスマートフォンで仕組みが異
   なる
   • デスクトップ → Mono 上で動く
   • スマートフォン→ AOT Compile によりネイティブ
     コードに
• デバッグ
 – MonoDevelop
Unity はどう使うべきか?
 Aiming での現状を踏まえて
Unity はどう使うべきか?




• Unity = ゲームエンジン
Unity はどう使うべきか?



• ゲームエンジンってなに?
 – ライブラリと開発環境/ツールがセット
   になったもの
Unity はどう使うべきか?
• 役割分担
 – アーティスト
  • モデル、画像等リソース作成
 – ゲームデザイナー
  • レベルデザイン
 – ゲームプレイプログラマ
  • キャラクタコントロール、敵 AI 、武器
 – エンジン/エディタプログラマ
  • 機能拡張、高速化
Unity はどう使うべきか?
• 開発環境
 – OS
   • Mac, Windows
 – スクリプトエディタ
   • MonoDevelop, VisualStudio
 – ソース管理
   • svn, git
 – ツール
   • エディタ拡張
Unity はどう使うべきか?
• ボトルネック
 – フィルレート
 – Draw call の回数
 – アルファテスト
 – テクスチャのサイズ
 – ピクセル単位のライティング
 – GUI
まとめ
まとめ
• Unity の流儀に従うべき
 – 流儀を学ぶために本開発前に少人数で1個
   ゲームを作った方がいい
• リソース管理は若干我慢が必要かも
• エディタ拡張は積極的に
• こまめに実機確認は必要