XNA Framework
![]() |
一方のXNA Frameworkは、元々はWindows PCやXbox 360で動作する、.NET Frameworkをベースとしたゲームの実行基盤として開発されました。
|
![]() |
.NET Frameworkの高い抽象度を維持しながら、動きのあるゲームに求められる高いパフォーマンスを実現します。
|
![]() |
つまり、XNA Frameworkでゲームを作ると、コードの大部分を共有しながらWindows PC、Windows Phone 7、そしてWebでもハイエンドな3Dゲームを動かせるようになってしまうのです。
|
Silverlightでも2Dのゲームであれば作ることはできますが、GPUを活用した本格的なゲームの開発にはXNA Frameworkを利用する必要があります。XNA Frameworkゲームを開発するには「新しいプロジェクト」ダイアログの「インストールされたテンプレート」の一覧から「XNA Game Studio 4.0」を選択します。そして、中央リストの一覧に表示された「Windows Phone ゲーム(4.0)」を選択して[OK]ボタンを押してください。
XNA FrameworkはSilverlightとは開発スタイルが大きく異なります。Silverlightのようにツール上のビジュアルなデザイナは存在しません。それどころか、ボタンやコンボボックスといったコントロールも用意されていません。必要なものは、すべてアプリケーションで描画します。
ゲームは画面を頻繁に更新する(止まることがない)ため、Silverlightのようにイベントの発生を待つのではなく、フレームレート(1秒間に画面を書き換える回数)に従って連続で更新用のUpdate()メソッドと描画用のDraw()メソッドが呼び出される仕組みになっています。Windows Phone 7では、既定で1秒間に約30回画面を更新します。
また、ゲームを対象とするXNA Frameworkでは、ビルド時にコンテンツを最適化するプログラム可能な管理機能も備わっています。ゲーム内で扱うテクスチャやモデルは、プロジェクトを作成したときに自動的に生成されていたコンテンツプロジェクトに項目として登録します。ゲームからは、ファイル名ではなく、登録した項目のプロパティにある「アセット名」から対象のコンテンツを読み込みます。
登録されたコンテンツは、データに応じて最適な変換が行われゲームにパッケージ化されます。この時、必要であればプロパティとしてパラメータを与えることもできます。この一連の仕組みをコンテンツパイプラインと呼び、標準でサポートされているデータ以外に、独自のコンテンツを処理できるように拡張もできます。
インポーターが元のファイルを読み込み、変換用のデータをプロセッサに渡します。プロセッサはインポーターから受け取ったデータをゲーム用のデータに変換し、タイプライターに渡します。タイプライターは、最適化されたデータをゲームにパッケージ化されるコンパイル済みアセットとしてファイルに出力します。ここまでが、ビルド時に行われる工程です。
この仕組みによって、ゲーム実行時に不必要なデータの解析や変換を行う必要がなくなります。また、ゲームからは元のファイルフォーマットを意識することなく、コンテンツを読み込んだ時点で必要なオブジェクトとして受け取れるのも重要です。





