|
会場:サンフランシスコ Moscone Convention Center
2007年12月にリリースされた「XNA 2.0」の様々な新機能は、個人レベルのゲーム開発を楽しむユーザーにとって大きなトピックであると同時に、商業コンテンツ製作へのレベルアップに具体的な方法を提供するものだ。しかし、XNA開発の実例については具体的な情報が乏しい状況が続いており、今回のチュートリアルセッションは開発者にとっての貴重な学習機会といえる。
■ エンドユーザー向けゲーム開発環境“XNA”は次のステージへ
本日、“XNA Game Studio Developer Day”と題された「XNA Game Studio 2.0」開発者向けのチュートリアルセッションは、午前の開場時間から午後の閉場時間まで、みっちり6本のセッションで構成される濃密なものとなった。 チュートリアル全体としては、「XNA Game Studio 2.0」の新機能であるマルチプレーヤー機能の開発手法に続き、「LIVE Arcade」対応のゲームを作成する方法、そして第一線のゲームに必要となるパフォーマンス向上テクニックの紹介へと続くという構成だ。特に興味深いのは、「XNA」の開発言語である「Managed C#」とコンパイラ特性に着目したコーディングテクニックに2セッションを割き、高速に動作するコードを生成するための細かな手法を解説していたことである。
これは、「XNA」が本質的な変革期を迎えたということを如実に物語っている。従来の「XNA 1.0」は、エンドユーザー個々人のホビーユースという「閉じた世界」で終始しており、ゲーム開発そのものに興味のないユーザーには関係ないものだった。しかし、「XNA 2.0」は「Xbox LIVE Arcade」での配信に対応し、エンドユーザー向けのコンテンツを開発・配信することができる。XNA開発コミュニティは、Xbox 360のすべてのユーザーを巻き込む、いわばXbox 360のコンテンツファームとでも呼ぶべきものになる可能性がある。ゆえに、リッチなコンテンツを実現するための「マルチプレーヤー」と「パフォーマンス」がキーワードとなるわけである。以下、この2つを中心にご紹介していきたい。
■ 「XNA 2.0」のキーフィーチャー「ネットワーク」と「LIVE Arcade」
「簡単に使えること (Easy to use)」を目標に掲げた「XNA 2.0」のネットワーク機能を使うと、1台のPCとXbox 360でマルチプレーヤーゲームを開発できる。高度に抽象化されたプログラムオブジェクトを利用し、マッチメーキング、ゲームセッション、メッセージングなど必要機能を簡単に実装できる上、ボイスチャットは自動的にサポートする。 セッションでは、Hargreaves氏が実際にコードを書き、“NetworkSession”や“NetworkGamer”といったXNAフレームワークのプログラムオブジェクトを使い、実際に動作するマルチプレーヤープログラムを、ものの10分ほどで作成して見せた。ポイントとしては、ひとつのプログラムで「Games for Windows - LIVE」と「Xbox LIVE」の両方に完全に対応できる上、セッションの検索やマッチメーキングといった面倒な部分が完全に内部化されているというところだ。非常に優れたRAD (高速開発) 環境と言えるだろう。 しかし、実のところ、「XNA 2.0」でサポートされている「Achievements (実績)」、「Ranked Matchmaking (ランクマッチ)」といった、ユーザープロファイルに影響する機能は、個人ユースのデベロッパーは利用できない。これらの機能を利用するには、コンテンツ提供者としてMicrosoftからの承認を受ける必要がある。 その部分が、まさに「XNA 2.0」の「Xbox LIVE Arcade」への対応である。Xbox 360のエンドユーザーは「Xbox LIVE Arcade」を利用して無料・有料の膨大なカジュアルゲームを入手できる。そして、Microsoftの承認を受けた「XNA 2.0」の開発者は、「XNA」の「Xbox LIVE Arcade Extension」を利用することで、そこにゲームを供給し、商機を得ることができるのだ。
これを解説するため、Microsoft XNA Community Game Platform teamのシニアプログラマーMitch Walker氏は、壇上で実際に「Xbox LIVE Arcade」機能を実装して見せた。
またWalker氏は「Xbox LIVE Arcade」向けに「XNA 2.0」で作られた、初のゲームを実演。これは「Rocket Riot」という、2Dのスプライトで描かれた世界をところ狭しと暴れまわるアクションゲームだ。マップは細かなブロックで構成されていて、すべてが破壊可能。動きもスムーズ。凄いテクノロジーが使われているわけではないが、「LIVE Arcade」で見かけたら思わずプレイしたくなるようなクオリティだ。
公式には、「XNA」開発者向けの「Xbox LIVE Arcade」機能提供はこの春に開始するという。「XNA 2.0」そのものはすでにリリースされており、本格的なゲーム開発を始めている開発者もいることだろう。春以降、Xbox 360のゲームシーンに「XNA」コミュニティ生まれのカジュアルゲームが大きな潮流を生み出す予感がある。しかし、セッション中では「Xbox LIVE Arcade」開発者となるための具体的な手順やコストについては触れられず、消化不良感が残った。興味のある開発者はまずコンタクトしてほしいとのことである。
■ 「XNA 2.0」プログラマーのための最適化テクニック
“CLR Performance on Windows and Xbox 360”と題されたセッションでは、XNA Community Game Platform Framework and Tools teamの主要メンバーであるFrank Savage氏が登壇。ここでは「XNA」の開発言語であるC#と、その実行形式“CLR (Common Language Runtime)”におけるメモリ管理とコード最適化の要点が紹介された。 「XNA」はPC版とXbox 360版で共通して「.NET Framework」をベースにしているが、ゲーム開発において問題になるのが「.NET」の“GC (ガベージコレクション)”のパフォーマンス問題である。PC版に比べてXbox 360版の実装はシンプルで、「.Net」のGCはメモリアロケーション1MB毎に駆動する。このため、無秩序にオブジェクトを生成・開放するプログラムを書いてしまえば、フレーム内でGCが何度も駆動してしまい、大きなパフォーマンスロスとなってしまう。 Frank氏が語った結論から先に触れてしまうと、Xbox 360向けのXNA開発における鉄則は「メモリは最初に確保して長期間利用し」、「短命なオブジェクトは再利用し」、「GCが駆動する機会を最小限にせよ」ということだ。どちらかというとアルゴリズムの最適化に属する話題である。 次のテーマはコードの最適化。議論の大前提として、壇上のShawn Hargreaves氏は、「XNAのユーザーコードを実行するJIT Compiler (ジャスト・イン・タイム・コンパイラ)は、'90年代中盤のC++コンパイラと同程度」と語った。つまり、いまだ十分に洗練されておらず、得られる最速のバイナリコードを生成できないのである。 この理由により、プロユースのXNA開発者は'90年代のC++プログラマと同じようなコードレベルの最適化技法を用いることが求められる。Xbox 360のXNAプログラムが、「C#」と「.Net Framework」という環境で動作する以上、システムコールによるタイムロスや、実行時型安全や暗黙の配列チェックなどによる「隠れたパフォーマンスロス」が発生するが、これを明示的に避けようというわけだ。 XNA開発において、プログラマが徹底的に最適化したコードは、そうでないコードに比べて、何倍もの高速化が達成される場合もあるという。しかし、そのためのコーディングは、「C#」の便利さを捨てて処理を分解・手動で再構成するものであり、とてもホビーユースとは言えない作業コストになりそうだ。
というのも、詳しくは下記スライドを参照していただきたいが、現時点の「C#」および「JIT Compiler」では「C++」に存在するような自動的・暗黙的な処理のインライン化がサポートされておらず、最適化に際して、プログラマが直接、細かい処理を書き下ろす必要がある。このあたりは、XNAによるプロユースのゲーム製作においてボトルネックになりそうだ。コンパイラの進化が熱望される所以である。
■ プロユースが強く意識されたXNAチュートリアル その他、続くセッションでもXNA開発者向けの細かなコーディングテクニックやデバッグ技法が披露された。セッションの内容として全体的に共通するのは、ホビーユースが強く意識された「XNA 1.0」とはうってかわって、商用ゲームレベルのコンテンツ開発を予感させるようなプロ志向の内容が中心であったことだ。 その背景には、「XNA Game Studio 2.0」でサポートされた2つのメインフィーチャー、ネットワーク対応と「Xbox LIVE Arcade」のサポートという存在があるだろう。 特に「LIVE Arcade」への対応は、独立系の小規模デベロッパーにとって相対的に大きなビジネスチャンスを作り出す存在になりうる。また、大手デベロッパーがアンテナ的な作品を送り出す手段としてもXNAに利用価値が認められるかもしれない。それは結果として、エンドユーザーが安価で面白いゲームを多数入手できるといった利益につながる。 しかし、「Xbox LIVE Arcade」のゲームを商業ベースで提供する手段として「XNA」を利用する明確なメリットとは何だろうか? 「XNA」で実行パフォーマンスが深刻な問題になったとき、「XNA」にこだわって大きな開発コストを掛けるよりは、公式のデベロッパーとなってネイティブの開発環境を使用したほうがよいケースもあるのではないだろうか。 それを踏まえ、XNA開発者にとってひとつの「理想的な」風景といえるのは、ホビーユースで始まった個人開発者が「Xbox LIVE Arcade」を通して商業的な成功を収め、プロの開発者へレベルアップしていくというものになるだろう。プロとなった開発者がもはや「XNA」を必要としないとしても、その過程が生み出す副産物 (具体化されたゲームの存在) には大きな価値がある。
ゲーム機の性能が向上し、最新ゲームが映像や内容の「リッチさ」を競うようになって久しい。Microsoftが掲げる「XNA」は、そこにまったく別の潮流を作り出そうというものに見える。果たして、Xbox 360のカジュアルゲームは本格的に離陸していくのか。GDC 2008初日の今日、チュートリアルとしてXNA開発者向けの情報を提供した背景には、そんな思惑がありそうだ。
(2008年2月19日) [Reported by 佐藤“KAF”耕司]
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp Copyright (c)2008 Impress Watch Corporation, an Impress Group company. All rights reserved. |
|