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      ○      ○       ○         ○          ○...
なぜ Unity なのか?• 言語 – Unity           → C#, JavaScript, Boo – Titanium        → JavaScript – Corona          → Lua – UDK    ...
なぜ 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()    ...
Unity 開発入門4. Prefab 化  – Prefab    • GameObject とコンポーネントのセットを再      利用可能なように保存    • 実行時にはこれをもとにインスタンス作成
Unity 開発入門• 使えるリソース – Meshes   • .FBX , .dae (Collada) , .3DS , .dxf, .obj – Textures   • PSD, TIFF, JPG, TGA, PNG, GIF, B...
Unity 開発入門• ビルド – 各実行環境でビルドが必要   • アセットもその時各環境用に変換される – デスクトップとスマートフォンで仕組みが異   なる   • デスクトップ → Mono 上で動く   • スマートフォン→ AOT ...
Unity はどう使うべきか? Aiming での現状を踏まえて
Unity はどう使うべきか?• Unity = ゲームエンジン
Unity はどう使うべきか?• ゲームエンジンってなに? – ライブラリと開発環境/ツールがセット   になったもの
Unity はどう使うべきか?• 役割分担 – アーティスト  • モデル、画像等リソース作成 – ゲームデザイナー  • レベルデザイン – ゲームプレイプログラマ  • キャラクタコントロール、敵 AI 、武器 – エンジン/エディタプログ...
Unity はどう使うべきか?• 開発環境 – OS   • Mac, Windows – スクリプトエディタ   • MonoDevelop, VisualStudio – ソース管理   • svn, git – ツール   • エディタ拡張
Unity はどう使うべきか?• ボトルネック – フィルレート – Draw call の回数 – アルファテスト – テクスチャのサイズ – ピクセル単位のライティング – GUI
まとめ
まとめ• Unity の流儀に従うべき – 流儀を学ぶために本開発前に少人数で1個   ゲームを作った方がいい• リソース管理は若干我慢が必要かも• エディタ拡張は積極的に• こまめに実機確認は必要
Upcoming SlideShare
Loading in …5
×

Unity ゲーム開発

26,240 views

Published on

Published in: Technology
  • Be the first to comment

Unity ゲーム開発

  1. 1. Unity ゲーム開発 東京開発グループ リードソフトウェアエンジニア 牧野 克俊
  2. 2. 自己紹介• Aiming 以前 – オンラインゲーム、通信ミドルウェアの開発• Aiming では – 仕事は技術監修、調査、研究 – MMO, MO といったオンラインゲームが フィールド
  3. 3. 概要• なぜ Unity なのか?• Unity 開発入門• Unity はどう使うべきか?
  4. 4. なぜ Unity なのか? Aiming の場合
  5. 5. なぜ Unity なのか?• 要求 – スマートフォン(最低 iOS、Android) – ゲームジャンルは多岐 • SLG, RPG, etc – ネットワーク機能が必須 – ワンソース・マルチプラットフォーム が理想
  6. 6. なぜ Unity なのか?• 結論 –Unity と C# を用いて作成する
  7. 7. なぜ Unity なのか? では理由を
  8. 8. なぜ Unity なのか?• 候補 – Unity – UDK – Titanium – Corona – Marmalade – Flash(Adobe AIR)
  9. 9. なぜ Unity なのか? Unity UDK Titanium Corona Marmalade Flash iOS ○ ○ ○ ○ ○ ○Android ○ △ △ ○ ○ ○実行速度 ○ ○ × △ ○ △拡張性 ○ △ ○ × ○ ×通信対応 △ △ × × × △開発効率 ○ ○ × × × ○学習コス × × × × × ○ ト
  10. 10. なぜ Unity なのか?• 言語 – Unity → C#, JavaScript, Boo – Titanium → JavaScript – Corona → Lua – UDK → UnrealScript – Marmalade → C++ – Flash(Adobe AIR) → ActionScript
  11. 11. なぜ Unity なのか?• 言語(C# vs JavaScript) – 状況 • 社内的に中、大規模のチーム(プログラマ が 5~10 人) • C#, JavaScript でのゲーム開発経験なし • チーム内のレベル、経験がバラバラ
  12. 12. なぜ Unity なのか?• 言語(C# vs JavaScript) – 結論としては C# なんですが • JavaScript は自由すぎる • C# はエディタ(コンパイラ)が制約をかけ てくれるところが便利
  13. 13. Unity 開発入門
  14. 14. Unity 開発入門• 実際の開発 1. Scene 作成 2. オブジェクト配置 3. スクリプト作成 4. Prefab 化
  15. 15. Unity 開発入門1. Scene 作成 – レベルの定義を管理するもの
  16. 16. Unity 開発入門2. オブジェクト配置 – GameObject • ゲーム中に存在するすべてのオブジェクト • 自身に機能はなくコンテナ • コンポーネントを追加して機能とする • Transform コンポーネントは必ず追加される
  17. 17. Unity 開発入門3. スクリプト作成 – MonoBehaviour • その名の通り振る舞いの定義 • GameObject に追加して機能が実行される
  18. 18. Unity 開発入門Awake() Start() Update() Awake() Start() Update() Rendering Awake() Start() Update()
  19. 19. Unity 開発入門4. Prefab 化 – Prefab • GameObject とコンポーネントのセットを再 利用可能なように保存 • 実行時にはこれをもとにインスタンス作成
  20. 20. Unity 開発入門• 使えるリソース – Meshes • .FBX , .dae (Collada) , .3DS , .dxf, .obj – Textures • PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF, PICT
  21. 21. Unity 開発入門• ビルド – 各実行環境でビルドが必要 • アセットもその時各環境用に変換される – デスクトップとスマートフォンで仕組みが異 なる • デスクトップ → Mono 上で動く • スマートフォン→ AOT Compile によりネイティブ コードに• デバッグ – MonoDevelop
  22. 22. Unity はどう使うべきか? Aiming での現状を踏まえて
  23. 23. Unity はどう使うべきか?• Unity = ゲームエンジン
  24. 24. Unity はどう使うべきか?• ゲームエンジンってなに? – ライブラリと開発環境/ツールがセット になったもの
  25. 25. Unity はどう使うべきか?• 役割分担 – アーティスト • モデル、画像等リソース作成 – ゲームデザイナー • レベルデザイン – ゲームプレイプログラマ • キャラクタコントロール、敵 AI 、武器 – エンジン/エディタプログラマ • 機能拡張、高速化
  26. 26. Unity はどう使うべきか?• 開発環境 – OS • Mac, Windows – スクリプトエディタ • MonoDevelop, VisualStudio – ソース管理 • svn, git – ツール • エディタ拡張
  27. 27. Unity はどう使うべきか?• ボトルネック – フィルレート – Draw call の回数 – アルファテスト – テクスチャのサイズ – ピクセル単位のライティング – GUI
  28. 28. まとめ
  29. 29. まとめ• Unity の流儀に従うべき – 流儀を学ぶために本開発前に少人数で1個 ゲームを作った方がいい• リソース管理は若干我慢が必要かも• エディタ拡張は積極的に• こまめに実機確認は必要

×