Windows ゲーム開発者を対象にした 10 フィート エクスペリエンスの概要
ソフトウェア デザイン エンジニア、Jon Steed 著
Microsoft Corporation
2005 年 4 月
はじめに
最近、パーソナル コンピューターをまったく新しい方法で使用するユーザーが増えています。一般的な PC 操作方法としては、モニターが置かれたデスクの前に座ってマウスとキーボード (場合によってはジョイスティック) を使用する姿を想像されるでしょう。このような操作スタイルは "2 フィート エクスペリエンス" と呼ばれ、現在でも Windows ゲームをプレイする際の最も一般的なスタイルですが、これから耳にすることが多くなると思われる新しいトレンドが広まりつつあります。それは 10 フィート エクスペリエンスと呼ばれ、コンピューターをテレビに接続してエンターテイメント デバイスとして使用することを指しています。ここでは、この 10 フィート エクスペリエンスを紹介して、この新しい操作スタイルに関するいくつかの検討事項について考察します。これらの内容は、この方法でプレイされることを想定していないゲームの開発者の方も対象にしています。一部のユーザーは、Windows ゲームを Media Center PC でプレイすると予想されるため、それらのユーザーに先駆けて 10 フィート エクスペリエンスがどのようなものかを理解しておくと役に立ちます。
目次
- Windows XP Media Center Edition について
- 10 フィート エクスペリエンス
- アスペクト比とワイドスクリーン
- タイトル セーフ領域
- NTSC に関する推奨事項
- Windows XP Media Center Edition へのゲームのインストール
- まとめ
Windows XP Media Center Edition について
Windows XP Media Center Edition 2005 (現在は Service Pack 3) は、Windows XP の特殊なバージョンであり、Windows XP の標準機能 (ドメイン コントローラー サポートなどのいくつかの機能は除く) に加えて、Media Center の統合アプリケーションをサポートしています。このアプリケーションは、ホスト コンピューターのマルチメディア機能に対するインターフェイスとなります。Media Center Edition の Web サイトでは、詳細な説明が記載されており、この新しいバージョンの優れている点がすべて紹介されています。
これまでは、Media Center Edition を入手する唯一の方法は大手のシステム発売元から Media Center PC を購入することでした (Media Center PC には Windows XP Media Center Edition がプレインストールされています)。新しいマイクロソフト OEM システム ビルダー ライセンスの下で、Media Center Edition は、非周辺ハードウェアとバンドルすることを条件として、中規模販売業者も一般消費者に再販可能となったため、潜在的な市場が急激に拡大しました。Media Center Edition がインストールされた PC の数は、2005 年初頭には約 2 百万台でしたが、2008 年までに 2 千万台に達すると予想されています。
Media Center PC として販売されているコンピューター システムは、一般に、高性能なビデオ カードとマルチメディア周辺機器 (ビデオ キャプチャー/編集ボードなど) を搭載したハイエンド コンピューターですが、従来どおり Windows XP アプリケーションを実行できる PC でもあります。現在 Windows ゲーム タイトルをリリースしている場合は、一部のユーザーはそれらのゲームを Media Center PC でプレイしている可能性が高いです。リリースしたゲームが、標準の Windows シェルと Media Center インターフェイスのどちらを使用してプレイされるかは、ユーザーにとってどちらの方が快適にプレイできるかにかかっています。開発したゲーム タイトルの表示と起動が Media Center によって適切に処理されるようにする方法については後述します。
10 フィート エクスペリエンス
Media Center PC は、ユーザーが Windows PC を使用してリビング ルームで充実したエンターテイメントを体験するという発想で設計されており、その結果として、ほとんどのユーザーは、通常のデスクトップ ワークステーションとは違った方法で Media Center PC を使用することを望むという結論に至りました。その一例として、Media Center PC を従来のコンピューター モニター以外のディスプレイに接続して画面を表示することが考えられます。アナログ テレビ、ハイ ビジョン デジタル テレビ、および複数の液晶ディスプレイなどが候補として挙げられます。これらのディスプレイは、通常は約 10 フィート (約 3 m) の距離から見るため、"10 フィート エクスペリエンス" という名称が付けられました。
10 フィート エクスペリエンスは、Media Center Edition のユーザーに限定されているわけではなく、近年は、ワークステーションやノートブック コンピューターをテレビやオーディオ システムに接続するユーザーにも広まっています。市販のディスプレイ デバイスが、コンピューターの標準ビデオ出力ポートである RGB 接続や DVI 接続をサポートしていることも多くなっています。さらに S ビデオ ポートは、ハイエンド ビデオ カードの標準機能となっており、補助のディスプレイ デバイスに出力するための簡単な方法として利用できます。
以下では、快適な 10 フィート エクスペリエンスを実現するうえで検討すべきいくつかの重要な設計指針について説明します。
インストール - 標準的な 2 フィート エクスペリエンスでは、ユーザーはコンピューターに手が届く距離にいるため、ゲームの開始時やプレイ時に座ったままメディアを挿入または交換できます。これに対して標準的な 10 フィート エクスペリエンスでは、コンピューターはユーザーと離れた場所に設置されているため、コンピューターを直接操作するためには、立ち上がってコンピューターの場所まで移動する必要があります。このため、メディアの交換を不要にする必要があり、開発者は、ゲーム アプリケーションをハードディスクにフル インストール可能にすることを検討する必要があります。
ユーザー入力 - Media Center Edition のもう 1 つの機能は、入力デバイスとして一般に普及している標準のリモコンをサポートしていることです。リモコンがゲームの入力デバイスとして適しているかどうかは、そのゲーム タイトルのジャンルによって主に決まりますが、ユーザーがリモコンを使用してゲームを一時停止してゲーム内のメニューにアクセスできるようにすることをお勧めします。ただし、メニューの操作は、メインのゲーム入力デバイスを使用してできるようにする必要があります。標準リモコンからの入力の処理に関する詳細については、Microsoft Windows XP Media Center Edition Software Development Kit (SDK) を参照してください。
ユーザーが Media Center PC や周辺機器を直接操作する必要がないようにしてください。通常はユーザーの手元にはメインの入力デバイスしかないため、ゲームプレイ中に別の入力コントローラーが必要になることは利便性の点から望ましくありません。
マイクロソフトは、Windows および新しいバージョンの Microsoft Xbox で使用できる共通のゲームパッド コントローラーをリリースする計画を発表しました。この共通コントローラーでタイトルを快適にプレイできることを確認することで、使用される可能性のある入力デバイスとゲームを組み合わせたテストに関連する負荷をある程度軽減できます。
ディスプレイ - ディスプレイに関する検討事項を難しくしている要因の 1 つは、使用される可能性のあるディスプレイ デバイスが広範囲にわたることであり、それぞれのデバイスにはいくつかの固有の注意事項があります。特定のディスプレイ技術に関連するいくつかの問題については後述しています。どのようなビデオ出力デバイスを使用する場合でも、10 フィートの距離では、フォントと UI グラフィックスが見やすいように大きいサイズで表示されることが重要です。一般に、アンチエイリアス化されたフォントは読みやすくなります。
また、1 ピクセルの太さの横線や、1 ピクセルの細度で描画される静的 UI 要素を使用することは避ける必要があります。古いテレビでは画像の細部を表示できない可能性があり、最新のディスプレイでも、インターレース表示モードを使用している場合は、1 ピクセル幅の横線は実際にはその半分の時間しか表示されないため、画面がちらつきます。微細な画像を表現する代替手段として、2 ピクセル幅のグレーの線が 2 ピクセル幅の白い線より "細く" 見えることを利用してください (これは実質的に 1 ピクセル幅の白い線をぼかして表示することと同じです)。
アスペクト比とワイドスクリーン
アスペクト比とは、ディスプレイの幅と高さの比率のことです。標準のテレビやコンピューター モニター ディスプレイのアスペクト比は 4:3 です (この比率はフレーム バッファーの幅方向に並んでいる 4 つのピクセルごとに、高さ方向に 3 つのピクセルが並んでいることを意味し、単に 1.33 と表現されることもあります)。
ハイビジョンの登場により、16:9 というアスペクト比 (ワイドスクリーンとも呼ばれます) が将来のテレビの標準となりました。ワイドスクリーンへの出力用として一般に使用されている EDTV/HDTV モードには、次の 3 種類があります。
- 480p EDTV - 480 本の走査線がプログレッシブ方式で表示されます。このモードは、4:3 (フレーム バッファーの解像度は 640 × 480) または 16:9 (720 × 480) の出力をサポートしています。
- 720p HDTV - 720 本の走査線がプログレッシブ方式で表示されます。このモードは 16:9 (1280 × 720) のみをサポートしています。
- 1080i HDTV - 1080 本の走査線がインターレース方式で表示されます。このモードは 16:9 (1920 × 1080、またはインターレース フィールドを個別にレンダリングする場合は 1920 × 540) のみをサポートしています。
ゲームが 4:3 ディスプレイで動作するようにハードコーディングされている場合は、そのゲームを 16:9 ディスプレイに出力しようとするユーザーは、次の 3 つのオプションを選択できる可能性がありますが、これらのいずれでも特に満足できる出力結果は得られません。
- 引き伸ばし - 4:3 のフレーム バッファーは、16:9 というディスプレイ自体の解像度で画面いっぱいに表示されるように引き伸ばされるため、シーン オブジェクトは意図された形状と比べて横長に表示されます。一部のテレビでサポートされている追加の引き伸ばしモードでは、画面の中央付近では元のアスペクト比ができる限り維持されて、画面の周辺に近づくほど引き伸ばしの度合いが高くなっています。
- 中央揃え - 4:3 のフレーム バッファーは、元のアスペクト比のまま画面の中央に表示され、周囲の領域は単一の色で塗りつぶされます。
- ズーム - 4:3 のフレーム バッファーは、16:9 のアスペクト比になるように上下がトリミングされてから、ゆがめられることなくディスプレイの解像度いっぱいに表示されます。トリミングされる上下の矩形は、一般にゲームの UI 要素が表示される領域ですが、完全に破棄されます。
これらのオプションよりも望ましい方法は、ゲームでワイドスクリーンをサポートすることです。その場合の最も重要な変更内容は、ゲーム カメラの射影トランスフォームで 16:9 のアスペクト比を使用するように設定して、引き伸ばしによる変形を回避することです。バックバッファーを 4:3 の解像度のままにした場合でも、射影トランスフォームで 16:9 を使用するように変更することで、レンダリングされる画像の視覚上の精度は大幅に向上します。当然ながら、最終的な画像はフィルターに掛けられて、4:3 のバックバッファー解像度が 16:9 のディスプレイ解像度に合わせて拡大されますが、これはアスペクト比の不一致によって生じる引き伸ばしの変形と比べて、不自然さはあまり目立ちません。
視錘台の幅が広いほど多くのシーン オブジェクトが表示されるため、16:9 のカメラを使用してシーンをレンダリングするコストは、(まったく同じ解像度であっても) 4:3 のカメラを使用する場合よりも高くなる可能性があります。また、16:9 のゲーム カメラは 4:3 のカメラよりも広いゲーム空間を画面に映し出すため、表示可能領域が拡大されることでゲームプレイにどのような影響があるかを認識しておく必要もあります。
16:9 のディスプレイで最適な出力結果を得るには、16:9 のバックバッファーにレンダリングする必要がありますが、その場合は当然ながら塗りつぶす必要のあるピクセル数が増えます。640 × 480 と比べて、720 × 480 ではピクセル数が約 38,400 個増えます (12.5% 増)。この追加の塗りつぶしコストに対応できる場合は、この方法を強くお勧めします。
タイトル セーフ領域
エンド ユーザーには、画像フレーム バッファー全体は表示されない可能性があります。多くの場合、外周ピクセルの一部はディスプレイのフロント ベゼルによって覆い隠されます。使用される可能性のあるさまざまな市販ディスプレイ ハードウェアで、重要な UI 要素が確実に表示されるようにするには、対象のディスプレイ モードに対する "タイトル セーフ領域" の要件を順守する必要があります。非 HDTV モードの場合は、タイトル セーフ領域はフレーム バッファーの内側 85% であり、HDTV モードの場合は、タイトル セーフ領域は内側 90% です。したがって、現在と将来のディスプレイ ハードウェアに対するゲームの互換性を最大限に高めるには、ゲームのすべての重要な UI 要素と警告表示インジケーターを、フレーム バッファーの内側 85% の領域に配置する必要があります。
NTSC に関する推奨事項
NTSC は、米国における市販ディスプレイ ハードウェア向けの最も一般的なビデオ標準であるため、出力画像について従うべきいくつかの指針について知っておくことが重要です。
- RGB 色成分の値を 16 ~ 235 の間に制限します。この範囲外の色も NTSC 方式のテレビに送信できますが、これらの範囲外の値はオーディオ データとして解釈される可能性があります。この現象は一般に "ブザー ノイズ" と呼ばれ、画像が白一色の背景上に表示される場合に特に顕著になります。出力色の制限はピクセル シェーダーで簡単に実装できます。
- よく似た RGB 色どうしは、NTSC 方式のディスプレイではまったく同じ色に見えることがあります。NTSC の色域は、標準的なコンピューター モニターと同じパレットをサポートしていないため、ゲーム プレイヤーが色を見分ける必要がある場面では、よく似た色どうしを組み合わせることは避けてください。
- はっきりしたコントラスト差は避けます。このガイドラインに常に従うことは現実的に難しい場合もありますが、UI の前景要素と背景要素に適切な色を選択することで、NTSC 方式ディスプレイ上のカラー ブリードの問題 (クロマ クロールとも呼ばれます) をある程度軽減できます。たとえば、色付きの背景上に白のテキストを表示すると、背景とテキストに対照色を使用する場合よりも良好な出力結果が得られます。
Windows XP Media Center Edition へのゲームのインストール
開発したアプリケーションに、Media Center インターフェイスから簡単にアクセスできるようにする方法には、次の 2 種類があります。
オプション 1:Web ページで提供するゲーム
Media Center の拡張性モデルを使用すると、Media Center との最も緊密な統合を実現できますが、そのゲームを Web ページ上で提供する必要があります。ゲーム タイトルに拡張性モデルを使用することで、Media Center UI に統合されたアプリケーションとして効果的に表示されると共に、プレイビュー エクスペリエンスのインターフェイスを使用することもできます。この方法がゲーム タイトルに適している場合は、Microsoft Windows XP Media Center Edition Software Development Kit (SDK) を参照してください。この SDK では、拡張性モデルについて解説しており、サンプル アプリケーションを使用してこのアプローチを示しています。
オプション 2:別プロセスの全画面ゲーム
インストールにいくつかの特別なファイルを追加することで、ゲームが別プロセスとして全画面モードで実行されるようにゲームをインストールすることもできます。これにより、ゲーム アプリケーションは Media Center UI を介して表示されるようになり、これはおそらく、Media Center バージョンでない Windows でプレイされることも想定しているゲームにとって最も実用的なオプションです。この方法アプローチでは、ゲーム自体がその終了時に Media Center UI を再起動する必要があります。
独立した exe ファイルを使用する標準的な全画面 Windows ゲームは、オプション 2 を使用します。全画面ゲームのプロセスの実践的な例については、この後の説明、および DirectX SDK の MediaCenterGame サンプルを参照してください。ゲームを適切にインストールして Media Center UI に登録するための手順は次のとおりです。
- ステップ 1 : MCL ファイルの作成
- ステップ 2 : MCL ファイルのインストール
- ステップ 3 : MCL ファイルからのゲームの起動
- ステップ 4 : Media Center UI の終了後の再起動
ステップ 1 : MCL ファイルの作成
ゲームを Media Center UI に表示させるには、まず MCL ファイルを作成する必要があります。これは、任意の名前に .mcl ファイル名拡張子が付いた XML ファイルです。次に、MediaCenterGame サンプルに含まれている MCL ファイルを示します。
<application
Title = "MediaCenterGame"
ID = ""
Run = ".\MCELauncher.lnk"
BGColor = "RGB(0,0,0)"
Name = "MediaCenterGame"
CompanyName = "Microsoft"
StartImage = ".\icon_128.jpg"
ThumbnailImage = ".\icon_128.jpg"
SharedViewport = ""
NowPlayingDirective = ""
>
<capabilitiesRequired
directX="True"
audio="False" <!-- Set false even if your game uses audio -->
video="False" <!-- Set false even if your game uses video -->
intensiveRendering="True"
console="False"
/>
</application>
最も重要なパラメーターは次のとおりです。
- Title は、アプリケーションのタイトルを指定する文字列です。
- Run は、ボタンがクリックされたときに起動するファイル名 (およびファイル パス) を指定する文字列です。この文字列の説明については、ステップ 3 を参照してください。
- Name は、Media Center ボタン内のボタンに表示されるラベルを指定する文字列です。
- StartImage は、ボタンにフォーカスがあるときに表示されるアイコンのファイル名 (およびファイル パス) を指定する文字列です。
- ThumbnailImage は、[他のプログラム] ページに表示されるアイコンのファイル名 (およびファイル パス) を指定する文字列です。
capabilitiesRequired セクションで指定されている値は、すべての Windows ゲームに適しています。application セクション内の他のすべての値は、無視しても問題ありません。
ステップ 2 : MCL ファイルのインストール
この MCL ファイルを Media Center UI に登録するには、MCL ファイルまたは MCL ファイルへのショートカットを既知のフォルダーの場所に配置する必要があります。
Windows XP の場合 :
CSIDL_COMMON_STARTMENU + "\Programs\Accessories\Media Center\Media Center Programs"
Windows Vista の場合 :
CSIDL_COMMON_APPDATA + "\Media Center Programs"
注 これらのパスで指定された場所は、https://msdn2.microsoft.com/en-us/library/bb762181.aspx によって返される場所を基準にした相対パスです。
インストール時には、ハードコーディングされたパスは使用しないでください。代わりに、https://msdn2.microsoft.com/en-us/library/bb762181.aspx API を使用して、オペレーティング システムに対して適切なフォルダー場所を問い合わせてください。たとえば、すべてのユーザーを対象にインストールする場合は (通常の場合に推奨されるインストール方法)、CSIDL_COMMON_STARTMENU の後ろに "Programs\Accessories\Media Center\Media Center Programs" という Unicode 文字列を付加して呼び出してください。現在のユーザーのみを対象にしてインストールする場合は、代わりに CSIDL_STARTMENU を使用します。
ステップ 3 : MCL ファイルからのゲームの起動
MCL ファイルの Run タグでは、Media Center UI 内でボタンがクリックされたときに起動するファイルを指定します。ゲームの .exe ファイルにコマンド ライン引数を渡す必要がある場合は、コマンド ライン引数が含まれたショートカットを MCL ファイルによって実行する必要があります。具体的には、Run タグで MyGame.lnk などのショートカットを指定して、この .lnk ファイル内に必要なコマンド ライン引数を記述します。
ゲームの初期化コードによっては、この操作を実行しようとする際にある重大な問題が発生する可能性があります。Media Center UI とゲームは同じ Direct3D デバイスの使用をめぐって競合する可能性があるため、Direct3D デバイスを作成しようとする際にエラーが発生する可能性があります。
Media Center UI のパフォーマンスと安定性を支えているのは、すべての画像を Direct3D を介してレンダリングしているためで、通常は全画面排他モードで表示します。このため、Media Center UI がその Direct3D ベースの UI 内から全画面ゲームを起動すると、ゲームも直ちに全画面排他モード デバイスを作成する可能性がありますが、Media Center UI がその Direct3D デバイスをまだ解放していない場合は、ゲームはこのデバイスの作成に失敗する場合があります。
デバイス作成の問題の解決には、次の 2 つの方法があります。
- ゲーム初期化コードを変更して、排他全画面デバイスが使用可能になるまで、ゲームがこのデバイスの作成を保留するようにします。
- 外部のランチャー アプリケーションを使用してこの処理を実行します。
外部ランチャーを使用する方が簡単な可能性がありますが (DirectX SDK に付属しているため)、ゲームによってこの初期の起動条件を円滑に処理する方が、エンド ユーザーの操作感が向上するため、望ましいやり方です。DXUT はこの状況を処理できるように更新されたため、DXUT を使用するすべてのアプリケーションは、"排他デバイスの作成試行を維持する" という動作を自動的に実行します。
外部ランチャーを使用することを選択した場合は、MCELauncher.exe (DirectX SDK に付属) は一定の時間だけ全画面デバイスの作成を試行し、作成できた場合は、コマンド ラインで指定されたゲームを起動します。この方法を使用する場合は、MCELauncher.exe がゲームと共にインストールされている必要があります。
ステップ 4 : Media Center UI の終了後の再起動
ゲームを終了したら、Media Center UI を復帰させる必要があります。ゲーム自体が次のコードを実行して MCE を再起動する必要があります。
bool ReLaunchMediaCenter()
{
// Skip if not running on a Media Center
if( GetSystemMetrics( SM_MEDIACENTER ) == 0 )
return false;
// Get the path to Media Center
WCHAR szExpandedPath[MAX_PATH];
if( !ExpandEnvironmentStrings( L"%SystemRoot%\\ehome\\ehshell.exe", szExpandedPath, MAX_PATH) )
return false;
// Skip if ehshell.exe doesn't exist
if( GetFileAttributes( szExpandedPath ) == 0xFFFFFFFF )
return false;
// Launch ehshell.exe
INT_PTR result = (INT_PTR)ShellExecute( NULL, TEXT("open"), szExpandedPath, NULL, NULL, SW_SHOWNORMAL);
return (result > 32);
}
DXUT を使用している場合は、上記の処理を実行する -relaunchmce というコマンド ライン パラメーターを追加するか、DXUTReLaunchMediaCenter() というヘルパー関数を使用することができます。
まとめ
ここでは、Windows ゲーム開発者の観点から 10 フィート エクスペリエンスを紹介しましたが、すべての情報は掲載できなかったため、Windows ゲームの開発者は (そのゲームが Media Center PC でのプレイを想定していない場合でも)、これらのトピックについてさらに詳しく調べることをお勧めします。確実なテスト方法として、開発したゲームをさまざまなビデオ ディスプレイで実行してみて、それぞれのディスプレイで快適にプレイできることを確認する方法があります。Windows ゲームの標準的な使用期間と Media Center 対応 PC の予想増加率から判断して、今からリリースされるゲームは、10 フィート エクスペリエンスの対象となることはほぼ間違いありません (少なくともユーザーは試すでしょう)。ユーザーがこれらのゲームをソファに座ってプレイできるのか、PC デスクの前に座ってプレイしなければならないのかは、主にゲーム開発者の選択にかかっています。