PDC10で行われたXNAセッション紹介

昨日、一昨日と二日間に渡ってMicrosoftキャンバス内で開催されたPDC10の中で行われた多数のセッションはストリーミング配信され、記録された動画も公開されています。そのセッションの中には二つのXNA関連のセッションがありました。

「Things You Need to Know Before Building XNA Games for Windows Phone 7(Windows Phone 7でXNAゲームを作る前に知っておきたいこと)」
http://player.microsoftpdc.com/Session/b8100382-1fdf-482e-b4ec-2b1f0315987f

「Real-World Analysis and Optimization of XNA Framework Games on Windows Phone 7(Windows Phone 7のXNAゲームにおける分析と最適化の実践)」
http://player.microsoftpdc.com/Session/6a4f4c01-5984-4b33-9e27-e725791980b1

オリジナル音声は英語ですが、日本語同時通訳のオーディトラックを選択できるようになっています。プレイヤーの右下にあるAudioボタンを押すとリストが以下のように表示されるのでJapaneseを選択することで日本語音声で視聴することができます。

PDC2010

「Things You Need to Know Before Building XNA Games for Windows Phone 7(Windows Phone 7でXNAゲームを作る前に知っておきたいこと)」のセッションの中ではShawn Heargreavesがゲーム制作の過程をIdea(発想)、Implement(実装)、Optimize(最適化)、Polish(仕上げ)、そしてSell(セールス)の5つに分け、そのうちのOptimize、Polish、そしてSellについて話しています。

Optimize(最適化)の中ではゲームの中で大半を占めるコンテントの最適化をすることで、ゲームが始まるまでの時間短縮、コンテント自体の読み込みの高速化などに触れています。Polish(仕上げ)の中ではWindows Phone 7向けのゲームを快適にプレイする為の手法を紹介しています。

このセッションの中ではApp Hubサイトにあるサンプルコードであるゲーム状態の管理(Windows Phone向けのサンプルは英語版のみ)と、複数の画像ファイルを一つにまとめることで読み込みや描画の高速化(テクスチャの切り替えが少なくなるため)に役立つスプライトシート(4.0用プロジェクトは英語版のみ)を紹介しています。

 

「Real-World Analysis and Optimization of XNA Framework Games on Windows Phone 7(Windows Phone 7のXNAゲームにおける分析と最適化の実践)」のセッションではガーベージコレクション、低フレームレートの代表的な問題の分析方法と最適化方法が紹介されています。

Windows Phone 7のゲームは.Net Compact Framework 3.7上で動作しているので、Xbox 360と同じようにガーベージコレクションには気をつける必要があります。殆どの場合は不必要なメモリ確保をしてしまうのが問題の原因となっています。その不必要なメモリ確保が起きている場所を特定するのにXbox 360の場合はRemote Performance Monitorがありますが、Windows Phone 7では対応していないのと、どのコードが原因なのかまでは突き止めることはできませんでした。

そこで、このセッションではVS2010のPremium/Ultimate版についている分析ツールを使うことによってどのコードが不必要なメモリ確保をしているのかを素早く発見する手法を紹介しています。

後半はフレームレート低下の原因の発見方法を最適化の手法を紹介しています。この内容はこのサイトで紹介した手法と殆ど同じものとなっています。

CPUバウンドとGPUバウンド
コード探偵 ファイル01「パフォーマンス殺害事件」
コード探偵 ファイル02「FPSで犯人割り出し」
コード探偵 ファイル03「タイムルーラーで現場測定」
コード探偵 ファイル04「CPUは正直者」
コード探偵 ファイル05「無口なGPU」
コード探偵 ファイル06「暗闇にさす光」

Windows Phone 7以外にも当てはまる

これらのセッションはWindows Phone 7向けとなっていますが、同じ.Net Compact Framework 3.7を使っているXobx 360には同じ手法がそのまま使えますし、Windowsでもコンテント読み込みの最適化などの手法はそのまま当てはまるので、それらのプラットフォーム向けのゲーム制作をしている人にとっても有意義な情報です。