SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

C#たんと学ぶ/わりと硬派なソフトウェア開発講座

C#たんと学ぶ わりと硬派なソフトウェア開発講座
番外編「Windows Phone 7」

C#たんと学ぶ わりと硬派なソフトウェア開発講座(5)

XNA Framework

C#たん トーク
一方のXNA Frameworkは、元々はWindows PCやXbox 360で動作する、.NET Frameworkをベースとしたゲームの実行基盤として開発されました。
C#たん 閉じ目2
.NET Frameworkの高い抽象度を維持しながら、動きのあるゲームに求められる高いパフォーマンスを実現します。
C#たん トーク
つまり、XNA Frameworkでゲームを作ると、コードの大部分を共有しながらWindows PC、Windows Phone 7、そしてWebでもハイエンドな3Dゲームを動かせるようになってしまうのです。
AppHubで公開されているコードサンプル CPU Skinning
AppHubで公開されているコードサンプル CPU Skinning

 Silverlightでも2Dのゲームであれば作ることはできますが、GPUを活用した本格的なゲームの開発にはXNA Frameworkを利用する必要があります。XNA Frameworkゲームを開発するには「新しいプロジェクト」ダイアログの「インストールされたテンプレート」の一覧から「XNA Game Studio 4.0」を選択します。そして、中央リストの一覧に表示された「Windows Phone ゲーム(4.0)」を選択して[OK]ボタンを押してください。

XNA Frameworkプロジェクトの新規作成
XNA Frameworkプロジェクトの新規作成

 XNA FrameworkはSilverlightとは開発スタイルが大きく異なります。Silverlightのようにツール上のビジュアルなデザイナは存在しません。それどころか、ボタンやコンボボックスといったコントロールも用意されていません。必要なものは、すべてアプリケーションで描画します。

 ゲームは画面を頻繁に更新する(止まることがない)ため、Silverlightのようにイベントの発生を待つのではなく、フレームレート(1秒間に画面を書き換える回数)に従って連続で更新用のUpdate()メソッドと描画用のDraw()メソッドが呼び出される仕組みになっています。Windows Phone 7では、既定で1秒間に約30回画面を更新します。

XNA Frameworkゲームの流れ
XNA Frameworkゲームの流れ

 また、ゲームを対象とするXNA Frameworkでは、ビルド時にコンテンツを最適化するプログラム可能な管理機能も備わっています。ゲーム内で扱うテクスチャやモデルは、プロジェクトを作成したときに自動的に生成されていたコンテンツプロジェクトに項目として登録します。ゲームからは、ファイル名ではなく、登録した項目のプロパティにある「アセット名」から対象のコンテンツを読み込みます。

コンテンツの登録
コンテンツの登録

 登録されたコンテンツは、データに応じて最適な変換が行われゲームにパッケージ化されます。この時、必要であればプロパティとしてパラメータを与えることもできます。この一連の仕組みをコンテンツパイプラインと呼び、標準でサポートされているデータ以外に、独自のコンテンツを処理できるように拡張もできます。

コンテンツの処理の流れ
コンテンツの処理の流れ

 インポーターが元のファイルを読み込み、変換用のデータをプロセッサに渡します。プロセッサはインポーターから受け取ったデータをゲーム用のデータに変換し、タイプライターに渡します。タイプライターは、最適化されたデータをゲームにパッケージ化されるコンパイル済みアセットとしてファイルに出力します。ここまでが、ビルド時に行われる工程です。

 この仕組みによって、ゲーム実行時に不必要なデータの解析や変換を行う必要がなくなります。また、ゲームからは元のファイルフォーマットを意識することなく、コンテンツを読み込んだ時点で必要なオブジェクトとして受け取れるのも重要です。

次のページ
SilverlightとXNAの連携

この記事は参考になりましたか?

C#たんと学ぶ/わりと硬派なソフトウェア開発講座連載記事一覧

もっと読む

この記事の著者

C#たん ソフトウェア開発講座 制作委員会(シーシャープタン)

ソフトウェアに求められる要求の高度化とともに大きくなる開発者への負担を、開発ツールやフレームワーク、時には萌え力を頼りに軽減できないか考えるプロジェクト。C#たんは単なるマスコットかと思いきや、割と毒舌。自分のことは棚に上げて、「萌えればいいってもんじゃないですよ?」が信条。twitter: @cs...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6179 2011/10/04 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー