C# で iPhone ゲーム開発



                  株式会社 Aiming
           リードソフトウェアエンジニア
                     牧野克俊
テーマ



C# で iPhoneゲーム開発
概要



1.開発環境の紹介
2.開発者から出た C# の感想
1.開発環境の紹介
• 基本的にはこのふたつ
–MonoTouch
–Unity 3d
• ほかにも
–DeltaEngine
–ExEn
MonoTouch
• OpenGL 使える
• Xcode の UI と連携可能
 – Interface Builder
• ネイティブコードとバインディング
  可能
 – たとえば Cocos2d とか使う
MonoTouch
• MonoDevelop
 –IDE
 –デバッグ
 –エミュレータ起動
 –実機転送
Unity 3d

• ゲーム開発に必要なものは概ねそ
  ろっている
–3D 描画
–物理エンジン
–etc
Unity 3d
• UnityEditor
  –レベルエディタ
• MonoDevelop for Unity
  –UnityEditor と連携したデバッグ
• UnityEditor でコンパイル
    → Xcode でコンパイル、転送
超適当に内部技術解説
Mono ベースで作られている
• なので、Mono の制約に引っ張られま
  す
 – MonoTouch は C#4.0
 – Unity は C#3.5
 – .NET Framework に完全対応していない
• さらに、iOS 上では JIT 禁止!
 –なので事前コンパイルされる
 –特に Unity はほぼネイティブコード
  にコンパイルされる・・・らしい
• Reflection、Generics
  –制限が有るが使える
  –そして、ときどき裏切られ
   る・・・
しかし iPhone ゲーム開発で最強の
     敵がまだいます!
       (主観です)
• iPhone ビルド、転送に Mac が必要!
 – Apple 先生にはさからえません・・・
まとめ
• ゲーム開発なら Unity おすすめ
• ツール開発なら MonoTouch おすすめ
• Mac を嫌いにならない
Mac を嫌いにならない!
2.開発者から出た C# の感想
• 現在 Aiming では複数の iPhone(Android)
  ゲーム開発をしています
• ほぼすべてのタイトルが Unity + C#
• C# でネットワークゲームのサーバも作っ
  ています
• 多くのプログラマは C++ でゲーム開発経
  験者
• さて、そんな人たちが C# でゲーム開
  発をしていてどう感じているでしょ
  う?
  –Unity への愚痴は抜いてます
• using いいね!
• ラムダ式いいね!!
• LINQ いいね!!!
• JavaScript と比べて型決まってい
  ていいね!
• 型チェックが厳しすぎる
• プリプロセッサマクロ欲し
  い・・・
• typedef したい・・・
• friend 使いたい・・・
• Unity で C# の使える範囲がいまいち
  把握できない
• ツールと連携しやすい
• パフォーマンスは許容範囲
• GC のおかげでメモリ管理が少し楽
• GC が CPU 使う
• IDE 便利
• 非同期処理をもう少し上手く書けな
  いかなー
• DataBinding したい!
• iPhone と Android で同じように動いて
  くれない・・・
まとめ
• 速度はそこまで気にならない
• メモリ管理はやっぱ意識する
• ツールを使いこなす
• 内部動作を理解する(してもら
  う)
C# で i phone ゲーム開発

C# で i phone ゲーム開発