わんくま同盟 東京勉強会 #89に行ってきました。
わんくま同盟
わんくま同盟 東京勉強会 #89
全4回に分けて、セッションの内容を紹介します。今回は第1回です。
1つ目は、赤坂玲音さんのセッション「MonoGame で作る C# ゲームプログラミング!」でした。
導入部分
- C#の唯一の苦手分野はゲーム
- ゲーム開発ツールの不足
- 最新のWindowsストアアプリでも対策されなかった
- ゲーム開発はC++/DirectX が推奨されている
- 多くがC++前提に作られている
なぜゲームが苦手なのか
- 仮想的な実行環境は総じて苦手分野
- 頻繁に変化するAPI
- 抽象化層を持つ実行環境は、下層レイヤーの変化に弱い
- その世代のハードウェアに最適な設計が必要
MONOGAMEとは?
- XNAFramework互換のオープンソース実装
- 主にゲーム開発を対象とするフレームワーク
- クロスプラットフォーム
- ハイエンドなリアルタイム処理
XNA Framework とは?
- .NET Frameworkベースのゲーム開発フレームワーク
- C#でゲーム開発ができる
XNA Framework開発終了
- 開発終了が正式アナウンス
- 今後、新しいバージョンの開発・更新はしない
そしてMonoGameへ
- Microsoftも公式ブログでMonoGameを紹介
- 競合ではなく補完関係にある
MonoGameのメリット
- クロスプラットフォームでゲーム開発
- Unityからの脱却
- 現状iOSやAndroid向けのゲーム開発で有力な存在だが...
- APIの設計が荒く、バグも多い
- Monoのバージョンが古い
- C#でWindowsストアアプリゲーム作りたいならコレ
- XAMLとの相互運用が可能な唯一の選択肢
MonoGameの開発スタイル
- Initialze(初期化)
- LoadContent(コンテンツの読み込み)
- Update(データ更新)
- Draw(フレーム描画)
- 通常1秒に60回UpdateとDrawが呼び出される
- 16.6m秒でUpdate、Drawの処理を終えないといけないということ
- リアルタイム性が重視される世界
- プロジェクトテンプレートでOpenGLProjectを選択した場合
- OpenALのDLLがないという例外が出る
- MonoGameインストールした後、インストーラ(oalinst.exe)を実行する
- ゲームエンジン、ゲームエディタではない
- フレーム駆動方式
- ゲームループでUpdateとDrawを交互に実行し続ける
XNAから移行するときの注意点
- 非互換API
- Xbox360、XboxLive依存の機能
- XACT
- プログラマブルシェーダー
- HLSLからコンパイルされたバイナリはDirectX依存なので使えない
コンテンツパイブライン
- プロジェクトのビルドと同時にアセットを変換する仕組み
- 対象プラットフォームごとの最適化
- アセット管理とゲーム本体の分離
- 要はプラットフォームに最適化されたゲームオブジェクトのシリアライズ、デシリアライズ処理
- MonoGameはXNAのコンテンツパイブラインの実装を使用する
- 現状、VisualStudio 2010とXNA Game StudioとWindowsが必要
- ビルドしたものをMonoGameにもっていく必要がある
まとめ
- XNAの資産がある人は、MonoGameに移行を
- 低コストで最新のプラットフォームに対応できる
- C#で開発したいけどUnityは避けたい場合に
- 中長期的な視点で、依存は避けたい
- 本家の更新が止まった今、新機能の実装は期待できない
- レンダリングのみ依存させ、それ以外はPCLなどで対応
リンク
第2回のリンクです。
わんくま同盟 東京勉強会 #89に行ってきた(その2 Knockout.js の利用とカスタムバインディングの利用) - プログラマーな日々
第3回のリンクです。
わんくま同盟 東京勉強会 #89に行ってきた(その3 async/awaitの基本 by 荒井省三さん) - プログラマーな日々
第4回のリンクです。
わんくま同盟 東京勉強会 #89に行ってきた(その4 Dynamics CRM Online を使ってみよう by えムナウさん) - プログラマーな日々