|
この文書は、http://forums.xna.com/forums/t/19525.aspx で公開されている「The Evil Checklist for playtest/peer review」の参考訳です。MVP の投稿を参考資料として翻訳したもので、日本のクリエーターの便宜のため提供するものであり翻訳の正確さを保証するものではありません。また、その記載内容についてマイクロソフトは一切保証しません。原文が更新された場合など、参考訳と原文の意味が異なる場合は常に原文が優先します。
|
併せて、「差し戻しの理由にはならない事例に関するチェックリスト」(http://forums.xna.com/forums/t/37294.aspx) および、「フォーラムやピア レビューにおける法的な問題に対するアドバイス」(http://forums.xna.com/forums/t/37259.aspx) も参照してください。
ここでは、Xbox LIVE コミュニティー ゲーム(現 Xbox LIVE インディーズ ゲーム)の提出が始まった最初の数か月で、提出されたゲームがピア レビューで差し戻しとなった最も多い理由の一覧と、これらの問題を洗い出すためのテスト ケースの一覧を示します。この一覧は、ピア レビューに提出する前に自分で作成したゲームをテストしようと考えているクリエーターと、ピア レビューに参加するクリエーター(以下、レビューアー)の双方を対象としており、ピア レビューに提出されたゲームのテスト方法と、考慮すべきケースの提案が記載されています。
ピア レビューで差し戻しと判断される最も多い理由
- ゲームに、マイクロソフトが規定するレビュー規則によって定義されている禁止されているコンテンツが何らか含まれている。
- ゲームがどこかでクラッシュする (はっきりしない状況でのクラッシュも、レビューアーによって発見された場合は差し戻しとなる)
- ゲームがハングする、またはハングしたように見える (はっきりしない状況で発生する場合も差し戻しとなる)、もしくは、その他のゲームの不具合が生じる
- ゲームをプレイできないコントローラーがある (たとえば、コントローラー #1 でしかプレイできない、またはコントローラー #2 でゲームを開始してメニューを操作できるが、ゲーム内ではそのコントローラーからの入力に反応しないなど)
- 使用しているフォントが小さ過ぎて、(一部のテレビで) テキストの重要な部分が読み取れない
- セーフ領域が設定されておらず、(一部のテレビで) 重要な情報やゲーム プレイの重要な部分が画面からはみ出してしまう
- ゲームや宣伝の素材の表示が不適切で、あらゆる年齢層にふさわしいと言えない (スクリーン ショット、パッケージ画像など)
テスト ケース
以下に示すテスト ケースは、上記のような問題を洗い出すためのものです。これらのテスト ケースは、各自が行うテスト手順の参考となるよう、ガイドラインやヒントとしてのみ提供するものです。これらは、絶対に従わなければならないものでも、完全なテスト ケースの一覧でもありません。ここに示されているすべてのテストで問題が発見されなくても、もし、レビューアーが他の問題を発見した場合は、ピア レビューでゲームが差し戻しになることは十分考えられますのでご注意ください。そのため、以下のテスト ケースを実施する際は、各自工夫して、この一覧のみに頼らないようにしてください。
基本的なテスト
<テスト ケース 1> 複数コントローラーの対応
2 つ目 (または3 つ目/4 つ目) のコントローラーでゲームを開始します。様々な状況でゲームがプレイできることを確認します。以下は、想定される状況の一例です。
- テスト中に、サインインしているプロフィールがない状態でコントローラー #1 を抜きます (コントローラー #2 はサインインしている状態)
- テスト中に、サインインしているプロフィールがない状態でコントローラー #1 を差し込みます (コントローラー #2 はサインインしている状態)
- コントローラー #1 を差し込み、サインインします。その際、コントローラー #2 はサインインしていない状態とします。この状況で、ゲームがコントローラー #2 に対して無反応であってはならず、引き続きコントローラー #2 でプレイできなければなりません (ただし、最初にコントローラー #2 でサインインするように求めても良い)。
- その他に想定される複数コントローラーを使用した状況に可能な限り対応してください。
(クリエーターへのヒント: ゲーム中にコントローラーが差し替えられる状況への対応は、必須ではありません。通常、プレイヤーは、"START ボタンを押してください" または "メイン メニュー" が表示されている状態で、アクティブなコントローラーを明示的に指定します。)
マルチプレイヤー ゲームにおける複数コントローラーへの対応 :
- さまざまなコントローラーの組み合わせで、マルチプレイヤー ゲームがプレイできることを確認します (例えばプレイヤー 1 と 2 がコントローラー 1 と 2 を使用していると想定しない)。
- 複数のプレイヤーによる同時プレイに対応しているゲームの場合は、追加のコントローラーを接続したままにして (このコントローラーでサインインした状態とサインインしていない状態の両方をテストします)、必要最低限のプレイヤー数でゲームをプレイします。ゲームで、この追加のコントローラーのゲームへの参加が強制されないことを確認します。
(クリエーターへのヒント: プレイヤーが単にゲームを観覧していたい場合や、有線のギターやドラム キットなどが接続されたままになっている場合があります。そのため、アクティブなコントローラーを選択するために、"参加させる場合は [A]、参加させない場合は [B]、プレイする場合は [START] を押してください" というようにユーザー インターフェイスを実装し、プレイするコントローラーを選択できるようにすることをおすすめします。ゲームプレイを実際に開始したコントローラーでプレイすると想定しても問題はないため、そのように実装してもかまいません。)
<テスト ケース 2> サインアウト
1 つ目のコントローラーで、サインインし、2 つ目のコントローラーで、別のゲーマータグを使用してサインインします。(注)
2 つ目のコントローラーを使用して、ゲームをプレイします。次に、ゲーム内のさまざまな場所 (メイン メニューやゲーム プレイの最中など) で、2 つ目のコントローラーのガイド ボタンを使用して、2 つ目のコントローラーからサインアウトします。ゲームがサインアウトを適切に処理していることを確認します。ゲーム内のさまざまな場所でサインアウトを繰り返し確認したほうがよい場合もあります。
<テスト ケース 3> ストレージ デバイスの対応
- ストレージ デバイスとしてハード ディスクとメモリー ユニットの両方を接続した状態でゲームを開始し、ガイドに表示される指示に従い、いずれかを選択します。その後、ゲームが正しく実行されることを確認します
- 問題なくゲームが実行されたら、もう一度ゲームを実行し直します。その際、ストレージの選択を行う画面で [B] ボタンを押してキャンセルします。 (つまり、ストレージ デバイスを選択しません)。ゲームがこの操作を適切に処理することを確認します。たとえば、デバイスを選択する必要があるというメッセージが示され、選択画面が再度表示されるか、または保存せずにゲームが続行します (当然ながら、クラッシュしてはいけません)
高度なテスト: 選択画面をキャンセルした後にゲームで何らかのメッセージが表示される場合、このメッセージが、接続しているすべてのコントローラーの入力に応答することを確認します。
<テスト ケース 4> ストレージ デバイスの取り外し
テスト ケース 3 で問題が発生しない場合は、ストレージ デバイスとしてメモリー ユニットを選択し、ゲームの途中でメモリー ユニットを取り外します。次に、セーブ データの書き込みやユーザー データの読み込みなどが行われる操作を実行し、ストレージ デバイスが取り外されたことによって生じたエラーが、適切に処理されることを確認します。
<テスト ケース 5> 画面設定、フォント サイズおよびセーフ領域
テレビでサポートされているさまざまな画面設定でゲームを開始します。ゲームがクラッシュしたり、ゲームのプレイに必要な情報がセーフ領域外に描画されていないことを確認します (重要な情報がセーフ領域の外側に描画される、フォントが小さ過ぎて読み取れないなど)。
<テスト ケース 6> マーケットプレース
Xbox LIVE にサインインしていない場合(もしくはオフラインのプロフィールでサインインしている場合)、ゲームの完全版を購入するためにマーケットプレースのページを表示しようとすると、例外が発生します。この例外が適切に処理されていない場合、ゲームがクラッシュします。例外処理が正しく行われていることをテストするには、オフラインのプロフィールでサインインするか、プロフィールを使用せずにサインインして (ゲームで許可されている場合)、お試し版の模擬モードでゲームを実行します。その後、完全版を購入するためのメニューが非表示になっていること、または、もし、そのメニューを選択してもクラッシュしないことを確認します。
注意 : このテストでは、保護者による制限などによって権限が制限されているプロフィール (お子様の Xbox LIVE アカウントなど) は使用しないでください。このようなアカウントでは、このテストで誘発しようとしている例外やクラッシュは発生しません。
<テスト ケース 7> ゲーム起動時の Xbox ガイド表示
ゲームを開始してすぐに Xbox ガイドを開きます (たとえば、ダッシュボードのゲーム ライブラリーからゲームを選択して実行し、そのゲームの起動中に、すぐにコントローラーのガイド ボタンを押します)。画面に表示されたガイドが何度かちらつきますが、ゲームの起動中に表示される Xbox LIVE インディーズ ゲームの説明画面(青地の画面)からゲームの画面に切り替わった時点で、Xbox ガイドを閉じます。これによってクラッシュが発生するか確認します。
(自分で作成したゲームをテストしていて、実際にクラッシュが発生する場合は、これを回避する方法についてのやり取りが示されているスレッド (http://forums.xna.com/forums/p/19874/103843.aspx) を参照してください。※ このスレッドは英文です)
高度/特殊なテスト
<テスト ケース 8> SpriteFont の問題
ゲームで、プレイヤーが何らかのテキストを入力する仕組みが用意されている場合 (ハイスコア リスト用にプレイヤー名を入力する場合など) は、非標準の記号や外国語の文字を入力してみてください。クリエーターが選択したフォントがこの記号や文字をサポートしていない場合は、クラッシュする場合があります。
(クリエーターへのヒント: SpriteFont.Characters.Contains(char) を使用して、プレイヤーが入力したすべての文字が使用しているフォントでサポートされているかどうかを確認します。)
<テスト ケース 9> 国や地域の問題
Xbox 360 のダッシュボードが英語以外の言語に設定されている状態で、ゲームを開始またはプレイして、特定の国や地域に固有のバグがないかどうかを確認します。
- 浮動小数点値の小数点記号として、言語および国や地域を英語/米国としている場合に使用される "." ではなく "," が使用される国や地域に関連付けられている言語に Xbox 360 を設定します。こうすることで、浮動小数点解析のバグがないかどうかを確認できます (下記の「注意事項 1」を参照)。このバグによって影響を受けるゲームは、さまざまな奇妙な動作を示します (たとえば、適切にゲームが起動しない、データの読み込み中のある時点でハングする、適切でないサイズですべてが描画されるなどの問題が発生しています)。
このテストに使用できる言語は、スペイン語、フランス語、ドイツ語などです。
- ゲームで、桁区切り記号を使用する書式設定された形式で数値が出力される場合は、桁区切り記号として、言語および国や地域を英語/米国としている場合に使用される "," ではなく、改行しないスペースが使用される国や地域に関連付けられている言語に Xbox 360 を設定します (たとえば "1,234,567" は "1 234 567" と表示されます)。次に、桁区切り記号が必要となるようにゲームで 1000 以上の数値が出力されるような操作を実行します。これによって、ゲームがクラッシュしないことを確認します (下記の「注意事項 4」を参照)。
改行しないスペースを区切り記号として使用すると思われる言語は、ロシア語、ポーランド語、およびフランス語です。
<テスト ケース 10> ネットワーク/マルチプレイヤーの問題
Xbox LIVE に対応したマルチプレイヤー ゲームの場合の特殊なケースです。マルチプレイヤー ネットワーク セッションを確立した状態でゲームのポーズを試してみます (ゲーム独自のポーズ機能がある場合はそれを使用する方法と、それに加えて Xbox ガイドを開く方法の両方)。ゲームが、これらの操作を適切に処理できているか確認します。ゲームが実際にポーズする (ガイドが表示中にバックグラウンドでも続行されないケースも含む) 場合は、これが (少なくとも予期しない形で) 他のプレイヤーの妨げになってはなりません。さらに、しばらくの間ゲームをポーズ状態のままにした場合に、ネットワークのタイムアウトが発生することがあってはなりません (ネットワークのタイムアウトは、ゲームのポーズ中にネットワーク セッションの更新を忘れた場合に発生します)。
<テスト ケース 11> ゲームに実装されている機能の確認
ゲームを提出する際に、クリエーターはゲームに実装されている一連の機能を申告します。たとえば、ゲームが対応しているプレイヤー数、協力プレイへの対応、最大解像度、カスタム サウンドトラックの対応などが該当します。可能な限りこれらの主張されている機能がすべてそのとおりに実装され、機能しているかどうかを確認してください。
(ヒント: 実際に"カスタム サウンドトラック"に対応しているかどうかを確認するには、ゲームの実行中に Xbox 360 で(CD や音楽ライブラリなどから)音楽を再生してみます。ゲームの音楽が自動的にオフになり、サウンド エフェクトのみが再生されなければなりません。)
<テスト ケース 12> 画面の解像度
ゲームが、ベスト プラクティス ガイド (日本語)に従っていて、解像度が 1280x720 に設定される場合は、問題が報告されることはありません。ただし、ゲームで 1920x1080 (1080p) が使用されている場合は、コードに 640x480 を処理する特別なコード パスが含まれている必要があります。これは、Xbox では、1080p をそのサイズにまで縮小できないためです。また、VGA ケーブルを使用しているユーザーは、特殊なアスペクト比でさまざまな解像度を設定できる点に注意してください。クリエーターが、画面のサイズに応じて動作を変更するコードを記述した場合は、いずれかの VGA 解像度がテストされていない可能性があります (実際のケースについては http://forums.xbox.com/28011158/ShowPost.aspx (英文)を参照してください)。テストするには、ダッシュボードで 640x480 やその他の特殊な解像度に設定します。解像度とアスペクト比については、http://hardware.teamxbox.com/reviews/xbox-360/40/Xbox-360-VGA-HD-AV-Cable/p1/ (英文)を参照してください。
<テスト ケース 13> 使用が制限されている用語
マイクロソフトは、混乱を避けるために「実績 (Achivement)」や「リーダーボード (Leaderboard)」という用語をゲームに実装されている同様の機能に対して使用しないことをクリエーターに求めています。(訳注:これらの用語が表す機能を Xbox 360 向けのゲームが一般的に実装しているのに対して Xbox LIVE インディーズ ゲームではこれらの機能を実装できないため)
詳細については、http://blogs.msdn.com/xna/archive/2008/12/12/creators-club-communiqu-11.aspx (英文) を参照してください。また、代用できる用語については http://forums.xna.com/forums/t/21124.aspx (得分) のスレッドで行われている議論も参考になります。
ぜひ、作成中のゲームやゲームの説明文、スクリーンショット、予告編映像などにこれらの用語が含まれていないことを確認してください。
(注) "テスト ケース 2" のテストを容易にするために、2 つ目のプロフィールは (Xbox Live 対応ではない) オフライン プロフィールを使用するか または、XNA クリエーターズ クラブ オンラインのプレミアム メンバーシップを購入する際に使用したプロフィール (ゲーマータグ)を使用する必要があります。これは、2 つ目のプロフィールがプレミアム メンバーシップが紐付いていないプロフィールだった場合、ゲームを開始できないためです。どうしてもこのようなプロフィールを使用したい場合は、最初に 2 つ目のプロフィールをサインアウトして状態にしてから、1 つ目のプロフィールを使用してゲームを開始する「時間差サインイン」を行う必要があるため、手順が煩雑になります。(ゲームが既に開始されている場合) まず、「START ボタンを押して開始してください」というゲームの開始画面が表示されたら、2 つ目のコントローラーを使用して、ここでようやく 2 つ目のプロフィールでサインインします。その後、2 つ目のコントローラーで [START] ボタンを押して、そのコントローラーでゲームをプレイします。
注意 : この "時間差サインイン" が必要となるのは、2 つ目のプロフィールがプレミアム メンバーシップが紐付いていないプロフィールだった場合のみです。オフラインのプロフィールまたはプレミアム メンバーシップが紐付いているプロフィールの場合は、この "時間差サインイン" は不要です。
開発上の注意事項
以下の注意事項は、レビューアー向けのテスト ケースというよりは、実際にクリエーターが遭遇してきた様々な事象を注意事項としてまとめたものです。これらの事象によって、ピア レビューの間に、修正が必要なバグが発覚したり、何らかの理由で再提出が必要になることがありました。よって、これらの注意事項は、レビューアーに向けたものというよりは、このチェックリストを使用して、ゲームの公開前にテストを行うクリエーターに向けたものです。これらの注意事項だけではなく、インディーズ ゲームのベスト プラクティス ガイド (日本語) も併せて確認してください。
<注意事項 1> 浮動小数点数の変換
ゲームのセーブ データ (ゲーム データまたはセーブ ゲーム) にテキスト形式で表記した浮動小数点数を使用しており、読み込み時にテキスト表記から浮動小数点値に変換する必要がある場合は、言語および国や地域の設定に起因する問題が発生しないように注意する必要があります (上記の「テスト ケース 9」は、これによって生じるバグを見つけ出そうとするものです)。
予備知識: 国や地域によってさまざまな文字が小数点記号として使用されています。たとえば、米国と英国では、ドット "." が使用されています (例 : "1.5") が、スペインやドイツでは、カンマ "," が使用されています (例 : "1,5")
"value.ToString()" を使用して浮動小数を文字列に変換する場合、または、"float.Parse(text)" を使用してテキストを浮動小数に変換する場合、.NET Framework では、常に、国や地域の設定に対応する小数点記号を使用します。Xbox 360 では、国や地域は Xbox 360 のダッシュボードで設定されている言語によって定義されます。1/2 (1÷2) という計算式に対して "value.ToString()" を実行した場合、英語に設定されている Xbox 360 では、結果の文字列は "0.5" になりますが、スペイン語に設定されている Xbox では、結果の文字列は "0,5" になります。同様に、"float.Parse(text)" でも、現在の言語に対応する小数点記号が想定されるため、例えば、スペイン語に設定されている Xbox 360 (小数記号として "," が想定される) でテキスト "0.5" が解析された場合も、結果は不正確になります。
これは、かなりの確率でバグを引き起こします。自分が作成したゲームで "." を使用するデータを実装していて、そのゲームがスペイン語に設定された Xbox でプレイされると仮定してみてください。データの読み込みに失敗するか、少なくとも予期しない結果が発生します。または、自分が作成したゲームを、プレイヤーがスペイン語に設定された Xbox 360 でプレイし、そのゲームを保存すると仮定してみてください。セーブ ゲームでは、"," が小数点記号として使用されます。ここで、プレイヤーが、Xbox 360 の言語設定を英語に変更してゲームを再起動するとします。セーブ ゲームが読み込まれるときに、パーサーは、実際にデータに含まれている "," と対応しない "." を小数点記号として想定するため、結果として読み込みエラーが発生します。
そのため、value.ToString() および float.Parse(text) だけの呼び出しは、いかなる状況でも実行しないようにする必要があります。
代わりに、浮動小数をテキストに変換する必要がある場合は必ず value.ToString(CultureInfo.InvariantCulture) オーバーロードを使用し、取得したテキストを浮動小数に変換する必要がある場合は必ず float.Parse(text, CultureInfo.InvariantCulture) オーバーロードを使用してください。
こうすると、常にドット "." が小数点記号として使用されて、データが意図したとおりに記述および変換されるという結果を期待できます。
この場合、当然ながら、ゲームで実装するすべてのデータでも、ドット "." を小数点記号として使用するようにする必要があります。
(注意) 文字列と浮動小数の "+" 演算子による結合は value.ToString() の使用に相当します。そのため、データの保存時には、"テキスト" + floatValue + "テキスト" のようにしないようにする必要があります。代わりに、"テキスト" + floatValue.ToString(CultureInfo.InvariantCulture) + "テキスト" を使用します。
また、当然のことながら、上記はデータの保存時にのみ当てはまります。画面に表示するために浮動小数をテキストに変換する場合は、引き続き通常の value.ToString() を使用し、各プレイヤーに、それぞれの国と地域に応じた正しい小数点記号を使用して値が表示されるようにする必要があります。
また、XMLSerializer は、この問題の影響を受けない点に注意してください。これは、浮動小数点値を手動で記述および解析する場合にのみ配慮する必要がある注意点です。
<注意事項 2> 保存されたデータが破損する (既存のファイルを、より短いデータで上書きした後に余分な容量を切り捨てなかった場合)
データを記述するために FileMode.OpenOrCreate を使用してファイルを開いたときに、そのファイルが既に存在している場合、そのファイルのデータは切り捨てられず、単にそのファイルが開くだけです。その後、このファイルに記述したデータが、ファイルに既に含まれていたデータよりも短い場合、ファイルの終わりには、前のデータが残ったままになります。保存形式によっては、その後のデータの読み込み時に、残っていた "古い" データによって読み込みエラーが発生した場合、保存されたデータが破損する可能性があります。たとえば、セーブ データがシリアル化された XML の場合などに発生します (実際の新しい XML データの末尾以降に、古いデータの余分な XML タグが残るため)。実は、XNA Game Studio のドキュメント内の XML シリアル化の例で、FileMode.OpenOrCreate を使用するように説明されていますが、残念ながら、上記の問題が発生するためお勧めできません。代わりに、FileMode.Create を使用する必要があります (これにより、ファイルが存在しない場合はファイルが作成され、既に存在している場合はデータが切り捨てられるため、データを記述した後は、新しいデータのみがファイルに残るようになります)。ここ (英文) での Shawn 氏の意見によれば、Xbox と Zune のプログラミングではこれで十分です。別の場所 (英文)で推奨されている方法である "safe save" は必須ではありませんが、Windows でのプログラミングの場合は、この方法をお勧めします。
(この注意事項に関連したバグを見つける方法を説明できる最適なテスト ケースはありません。これについてテストする場合は、ゲームで強制的にデータの保存と呼び出しを繰り返す方法をお勧めします。たとえば、保存が必要になる何らかの操作を実行し、ゲームを再起動して読み込みを強制する処理を何度か繰り返します。)
<注意事項 3> ストレージ デバイスの処理
不適切なストレージ デバイスの選択処理は、ゲームがピア レビューで差し戻しになる主な理由の 1 つです。クリエーターは、ストレージ デバイスの選択について、以下の事実を認識しておく必要があります。
- デバイスの選択画面は、複数のストレージ デバイス (ハード ディスクと MU など) がある Xbox 360 でのみ表示されます。Xbox 360 にストレージ デバイスが 1 つしかない場合、画面は表示されず、そのデバイスが自動的に選択されます。そのため、さまざまな選択画面に固有の状況をテストするには、実際に MU が必要になります。
- プレイヤーは、[B] ボタンでデバイスの選択画面をキャンセルできます。つまり、デバイスが選択されずにゲームを進めることができます。ゲームは、このような状況を正しく処理する必要があります。適切に処理されない場合、読み込みまたは保存を実行しようとした際にゲームがクラッシュします。
- プレイヤーが MU を選択した場合、ゲームの途中でその MU を取り外すことができます。ゲームがこのような状況を正しく処理できない場合、このデバイスからの読み込みまたは保存を実行しようとした際にゲームがクラッシュします。
<注意事項 4> 桁区切り記号を使用した数値の出力
1000 以上の数値を、桁区切り記号を含む形式で出力しようとしたときに、Xbox 360で現在設定されている国や地域で使用されている桁区切り記号が SpriteFont に含まれていない場合、ゲームがクラッシュする可能性があります。
(予備知識) この注意事項は、数値形式における国や地域ごとの相違によって生じるという点に限って言えば、注意事項 1 と関連しています。Xbox 360 の国や地域の設定によっては、桁区切り記号の文字が、言語を英語、国や地域を米国に設定した際に使用される "," とは異なる場合があります。一部の国や地域では、改行しないスペースが桁区切り記号として使用されることもあります。これは、通常のスペースのように見えますが、ASCII 値は 32 (0x20) ではなく、160 (0xa0) です。そのため、言語と国や地域の設定が英語/米国の場合に "1,234,567" と示される数値が、別の国や地域では "1 234 567" と示される場合があります。ここで、SpriteFont に改行しないスペースが含まれていない場合 (SpriteFont の作成時に、文字範囲を 128 までしか指定しなかったために、ASCII 値 160 が含まれていない場合など)、このような国や地域に設定された Xbox 360で 1000 以上の書式設定された数値を描画しようとすると、ゲームがクラッシュします。この問題を回避するには、SpriteFont に必要な文字 (160/0xa0) を含めるか、または、数値の書式設定時に、描画の際に使用する SpriteFont でサポートされている文字のみを生成する形式を使用するようにします。 (もしくはこの両方の方法を適用します)
<注意事項 5> PlayerIndex を検出する前の Guide.BeginShowMessageBox の使用
Guide.BeginShowMessageBox の呼び出しには、PlayerIndex を指定する必要があります。これは、指定されたインデックスのコントローラーでしか、表示されるメッセージ ボックスを制御できないことを意味しています。さらに、正しい PlayerIndex を検出しておかないと、このメソッドを使用してメッセージ ボックスを開けないことも意味しています。通常、このような検出は、"START ボタンを押してプレイを開始してください" 画面などを介して実行されます。そのため、ゲームを制御しているコントローラーのインデックスを把握していない場合、Guide.BeginShowMessageBox に渡す引数を判別できないため、使用しないでください。また、間違ったインデックスを指定した場合、プレイヤーはメッセージ ボックスを制御できなくなります (ゲームが入力に応答しなくなり、ハングしたように見えます)。
この問題は、次のような場合に確認できます。最初にストレージの選択画面が表示され (このストレージ選択画面はプレイヤーのインデックスを区別しません)、プレイヤーがキャンセルすると、ゲームはメッセージ ボックスを表示しようすると仮定しましょう (たとえば、ゲームをそのまま進行した場合セーブ機能は無効であること、またはゲームを進行するためにはデバイスを選択する必要があることを通知するため、もしくはデバイスを選択するか、保存せずに続行するかをプレイヤーに尋ねるため)。PlayerIndex が検出される前にこれらのようなメッセージ ボックスを表示しているのであれば、ほとんどの場合 PlayerIndex.One が指定されており、コントローラー #1 以外からの入力に対し、メッセージ ボックスが応答しなくなります。