Unity ゲーム開発

29
Unity ゲゲゲゲゲ ゲゲゲゲゲゲゲゲ ゲゲゲゲゲゲゲゲゲゲゲゲゲゲ ゲゲ ゲゲ

Transcript of Unity ゲーム開発

Page 1: Unity ゲーム開発

Unity ゲーム開発

東京開発グループリードソフトウェアエンジニア

牧野 克俊

Page 2: Unity ゲーム開発

自己紹介• Aiming 以前– オンラインゲーム、通信ミドルウェアの開発

• Aiming では– 仕事は技術監修、調査、研究– MMO, MO といったオンラインゲームが

フィールド

Page 3: Unity ゲーム開発

概要

•なぜ Unity なのか?• Unity 開発入門 • Unity はどう使うべきか?

Page 4: Unity ゲーム開発

なぜ Unity なのか?Aiming の場合

Page 5: Unity ゲーム開発

なぜ Unity なのか?• 要求–スマートフォン(最低 iOS 、 Android )–ゲームジャンルは多岐• SLG, RPG, etc

–ネットワーク機能が必須–ワンソース・マルチプラットフォームが

理想

Page 6: Unity ゲーム開発

なぜ Unity なのか?

•結論–Unity と C# を用いて作成す

Page 7: Unity ゲーム開発

なぜ Unity なのか?

では理由を

Page 8: Unity ゲーム開発

なぜ Unity なのか?• 候補–Unity–UDK– Titanium–Corona–Marmalade– Flash ( Adobe AIR )

Page 9: Unity ゲーム開発

なぜ Unity なのか?Unity UDK Titanium Corona Marmalade Flash

iOS ○ ○ ○ ○ ○ ○

Android ○ △ △ ○ ○ ○

実行速度 ○ ○ × △ ○ △

拡張性 ○ △ ○ × ○ ×

通信対応 △ △ × × × △

開発効率 ○ ○ × × × ○

学習コスト

× × × × × ○

Page 10: Unity ゲーム開発

なぜ Unity なのか?• 言語– Unity → C#, JavaScript, Boo– Titanium → JavaScript– Corona → Lua– UDK → UnrealScript– Marmalade → C++– Flash ( Adobe AIR ) → ActionScript

Page 11: Unity ゲーム開発

なぜ Unity なのか?• 言語( C# vs JavaScript )–状況• 社内的に中、大規模のチーム(プログラマ

が 5 ~ 10 人)• C#, JavaScript でのゲーム開発経験なし• チーム内のレベル、経験がバラバラ

Page 12: Unity ゲーム開発

なぜ Unity なのか?• 言語( C# vs JavaScript )–結論としては C# なんですが• JavaScript は自由すぎる• C# はエディタ(コンパイラ)が制約をかけ

てくれるところが便利

Page 13: Unity ゲーム開発

Unity 開発入門

Page 14: Unity ゲーム開発

Unity 開発入門• 実際の開発

1. Scene 作成2. オブジェクト配置3. スクリプト作成4. Prefab 化

Page 15: Unity ゲーム開発

Unity 開発入門

1. Scene 作成– レベルの定義を管理するもの

Page 16: Unity ゲーム開発

Unity 開発入門2. オブジェクト配置–GameObject• ゲーム中に存在するすべてのオブジェクト• 自身に機能はなくコンテナ• コンポーネントを追加して機能とする• Transform コンポーネントは必ず追加され

Page 17: Unity ゲーム開発

Unity 開発入門

3. スクリプト作成–MonoBehaviour• その名の通り振る舞いの定義• GameObject に追加して機能が実行される

Page 18: Unity ゲーム開発

Unity 開発入門

Awake()Awake()

Awake()Start()

Start()Start()

Update()Update()

Update()Rendering

Page 19: Unity ゲーム開発

Unity 開発入門

4. Prefab 化–Prefab• GameObject とコンポーネントのセットを

再利用可能なように保存• 実行時にはこれをもとにインスタンス作成

Page 20: Unity ゲーム開発

Unity 開発入門• 使えるリソース–Meshes• .FBX , .dae (Collada) , .3DS , .dxf, .obj

– Textures• PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF, PICT

Page 21: Unity ゲーム開発

Unity 開発入門• ビルド– 各実行環境でビルドが必要

• アセットもその時各環境用に変換される– デスクトップとスマートフォンで仕組みが異な

る• デスクトップ  → Mono 上で動く• スマートフォン→ AOT Compile によりネイティブ

コードに• デバッグ– MonoDevelop

Page 22: Unity ゲーム開発

Unity はどう使うべきか?Aiming での現状を踏まえて

Page 23: Unity ゲーム開発

Unity はどう使うべきか?

• Unity = ゲームエンジン

Page 24: Unity ゲーム開発

Unity はどう使うべきか?

• ゲームエンジンってなに?–ライブラリと開発環境 / ツールがセット

になったもの

Page 25: Unity ゲーム開発

Unity はどう使うべきか?• 役割分担– アーティスト• モデル、画像等リソース作成

– ゲームデザイナー• レベルデザイン

– ゲームプレイプログラマ• キャラクタコントロール、敵 AI 、武器

– エンジン / エディタプログラマ• 機能拡張、高速化

Page 26: Unity ゲーム開発

Unity はどう使うべきか?• 開発環境– OS• Mac, Windows

– スクリプトエディタ• MonoDevelop, VisualStudio

– ソース管理• svn, git

– ツール• エディタ拡張

Page 27: Unity ゲーム開発

Unity はどう使うべきか?• ボトルネック– フィルレート– Draw call の回数– アルファテスト– テクスチャのサイズ– ピクセル単位のライティング– GUI

Page 28: Unity ゲーム開発

まとめ

Page 29: Unity ゲーム開発

まとめ• Unity の流儀に従うべき– 流儀を学ぶために本開発前に少人数で1個

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