Unity ゲーム開発

Post on 28-May-2015

21.472 views 1 download

Transcript of Unity ゲーム開発

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()Awake()

Awake()Start()

Start()Start()

Update()Update()

Update()Rendering

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個

ゲームを作った方がいい• リソース管理は若干我慢が必要かも• エディタ拡張は積極的に• こまめに実機確認は必要