Unity ゲーム開発
-
Upload
katsutoshi-makino -
Category
Technology
-
view
21.472 -
download
1
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個
ゲームを作った方がいい• リソース管理は若干我慢が必要かも• エディタ拡張は積極的に• こまめに実機確認は必要