XNA Creators Club Online

チュートリアルの詳細

Xbox LIVE インディーズ ゲームのベスト プラクティス ガイド
チュートリアル
掲載日
2008/10/10

 

Xbox LIVE インディーズ ゲームの作成に関心がある場合は、ゲームをダウンロードし、プレイする何百万人ものゲーマーの期待と、ゲームの外観、雰囲気、およびプレイを最高のものにするためのベスト プラクティスについて、このガイドを通じて理解してください。

このガイドでは XNA Game Studio 3.0 以降の機能について解説しています。Xbox LIVE インディーズ ゲームを開発する場合は、XNA Game Studio 3.0 以降を使用する必要があります。

次にいくつかの注意事項を示します。

  • このガイドのセクションは優先度の高い順に紹介していますが、すべてのセクションが重要です。必ずすべてのセクションを読み、ゲームの開発にあたり、提示されている課題について考慮していることを確認してください。

  • これらのベスト プラクティスは推奨事項であり、必要条件ではありませんが、多くの場合、これらに従わないとゲームはプレイできないケースが発生します。開発したゲームは、ピア レビューをパスさせるためにこれらのベスト プラクティスを遵守する必要はないかもしれません。つまり、これらのガイドラインはピア レビューでは直接使用しないでください。クリエーターの視点から唯一覚えておく必要があることは、レビューアーはプレイできないゲームを差し戻す場合があるということです。
  • creators.xna.com で利用可能なプレイテストの機能を活用して、何百万人ものゲーマーがプレイする前に、ゲームが抱えている問題の発見を、他の XNA クリエーターズ クラブのメンバーに手伝ってもらいましょう。


ゲーマーはどのようなテレビでもゲームが "正常に動作する" ことを期待する

背景 : Xbox 360 本体は、さまざまな解像度や縦横比などを備えた、すべてのタイプのテレビに接続できます。解像度が適切に処理されていない場合、オーバースキャン (ビューポート全体を描画しないテレビ画面の外周部)、ゲームの表示部の引き伸ばし、さらにはクラッシュが発生する可能性があります。

対応方法 :

  • すべてのテレビで動作するように、ゲームの解像度を 1280 x 720 (720p) に設定しましょう。これにより、すべてのアート コンテンツを単一の解像度へ対応させるよう、注力できます。
  • シーン全体をビューポートのサイズに描画しますが、重要なゲームプレイ機能 (HUD、メイン キャラクターなど) を Viewport.TitleSafeArea 内の領域に描画しましょう。
  • • テキストを使用する場合は、標準画質映像のみに対応しているテレビ (SDTV) で読むことができるように 14 ポイント以上のフォントを使用しましょう。併せて SpriteFont をフル サイズで描画しましょう。

関連情報 :

*       Xbox 360 プログラミングに関する考慮事項

*       Safe Area サンプル

*       表示、クライアント境界、ビューポート、およびバック バッファー




ゲーマーは有効なお試し版モードを期待する

背景 : 多くのゲーマーが購入前に試用を希望するので、すべての Xbox LIVE インディーズ ゲームでは、プレイヤーがゲームを購入する前に一定の時間制限が設けられたお試し版をプレイすることができるようになっています。設けられている時間制限に達すると、お試し版の実行は終了し、プレイヤーには完全版を購入するか、購入せずに終了するかを選択できる画面が表示されます。お試し版モードで追加される唯一の制限は Xbox LIVE マッチメイキングが使用できないことです。お試し版モードを通じて、ゲームの中で最も特徴的だと思う部分をユーザーに示す機会が得られます。

対応方法 :

  • Guide.IsTrialMode プロパティが true かどうかをチェックし、ゲームがお試し版モードで実行中かどうかを確認しましょう。このプロパティは常に true で開始され、ゲームが起動したすぐ後、または新しいプレイヤーのサインインの後、あるいはゲーム内で完全版の購入後に変更します。起動時に 1 回だけチェックするのではなく、必ずフレームごとに 1 回ずつチェックしてください。

  • お試し版が利用可能な制限時間内に、プレイヤーに最高のエクスペリエンスを提供する方法を検討しましょう。例として、タイトル画面やストーリーの解説を省き、できる限り早くゲームプレイに入ることなどが推奨されます。お試し版モードの制限時間は現在 8 分間に設定されていますが、将来変更される可能性があることを留意してください。
  • 完全版の購入画面が表示されると、Xbox LIVE インディーズ ゲームは Game.IsActivefalse に設定します。プレイヤーがゲームの購入を選択し、購入が正常に行われると、ゲームが再開され、Guide.IsTrialMode が false に設定されます。希望する場合は、Guide.ShowMarketplace を呼び出すことで、制限時間に達する前に、手動で購入画面を表示することができます。ゲームは、再起動せずに IsTrialMode の変更を処理できる必要があります。これは、フラグが変更されたときに、メニュー、ゲームプレイ、またはゲームのその他の部分を "リアルタイム" で再読み込みまたは再初期化する必要があることを意味します。
  • Guide.IsTrialMode プロパティが true の場合、ゲームを終了する際に、Guide.ShowMarketplace API を使用して完全版を購入するマーケットプレースの画面を表示させるオプションを提供することを検討しましょう。
  • ゲームが Xbox LIVE マルチプレイヤーのサポートを備えている場合、ゲームがお試し版モードで動作しているときは、メニューなどでこのオプションを無効にしましょう。プレイヤーがこのオプションを選択した場合、Guide.ShowMarketplace を呼び出すことで対処するのが良いかもしれません。ゲーム中に Guide.IsTrialMode フラグが false に変更された場合、マルチプレイヤーの機能を必ず有効にすることを忘れないでください。
  • Guide.SimulateTrialModetrue に設定するか、[お試し版で遊ぶ] オプションを使用して Xbox ダッシュボードからゲームを起動することで、お試し版モードをテストしましょう。これにより、Guide.IsTrialMode フラグが強制的に true に設定されます。ゲームでは通常使用しないコントローラーのボタンを使って、ゲームのプレイ中に Guide.SimulateTrialModefalse に変更することで、ゲームをお試し版モードから完全版モードに移行させる処理をテストすることもできます。このようにして、ユーザーがゲームを購入した際に、ゲームを再起動せずに正常に動作することを確認します。

関連情報 :

*       ネットワーク ゲームの状態管理 サンプル




ゲーマーは使い慣れたメニューと制御システムを期待する

背景 : ゲームは基本的に一定のサイクルによって構成されます。つまり、ゲーマーは [メインメニュー] (および [オプション] または [ヘルプ] などの代替メニュー) から、ゲーム セッションに入り、プレイし、プレイが終了したらメイン メニューに戻ることを想定しています。もし、このサイクルから逸脱したサイクルを実装する場合は、そのサイクルが直感的で、覚えやすいものとする必要があります。

メニューの移動はスティックと方向パッドの両方を使用できるように期待しています。"決定" または "次に進む" の機能は A ボタンに割り当てられていることを期待しています。"キャンセル" または "前に戻る" の機能は B および Back ボタンに割り当てられていることを期待しています。

メニューの操作に成功した場合と失敗した場合の両方とも、グラフィックおよびオーディオによる方法でユーザーに操作結果を通達しましょう。エラーが発生した場合、対処方法を簡潔に通達しましょう。

対応方法 :

  • 「ゲームの状態の管理 サンプル」にあるようなメニュー システムを使用しましょう。

  • スティックと方向パッドを使用してメニュー カーソルを移動し、A および B / Back を使用して選択しているメニュー項目の決定またはキャンセルを行いましょう。メニューの移動にスティックを使用する場合は、メニュー カーソルの移動が速くなりすぎないように遅延を使ってポーリングします。
  • アクティブなメニュー項目は他のメニュー項目と視覚的に区別できるようにしましょう。パターン、アニメーション、または他のグラフィカルな手法を用いて、色覚異常のプレイヤーに対応しましょう。
  • 確認 (セーブデータの上書き保存など) とエラーの内容はプレイヤーにはっきりと表示されるようにしましょう。
  • 既定では警告なしでゲームを終了する、コントローラー上の Back ボタンの処理を変更しましょう。プレイヤーが本当にゲームを終了するかどうかを確かめる確認ダイアログを提供するか、またはメイン メニューからゲームを明示的に終了する項目を提供して、Back ボタンによる終了機能を完全に削除しましょう。
  • アクティブなコントローラーが取り外されている場合、またはプレイヤーが START ボタンを押した場合、ゲームは一時停止メニューを表示しましょう。
  • ネットワーク ゲームでポーズ メニューを実装する場合は、ローカル プレイヤーの入力がゲームプレイに反映されなくても、ゲームプレイは一時停止メニューの背後で続行されるようにしましょう。
  • ゲームが Game.IsActive の状態を遵守するようにしましょう。ゲーム上にガイドが表示されている場合など、false に設定されているときには、必要に応じてゲームを一時停止させましょう。

関連情報 :

*       ゲームの状態の管理 サンプル

*       方法 : ゲームの一時停止

*       方法 : コントローラーが取り外されているかどうかの判定




プレイヤーは単一の Xbox 360 コントローラーを使用する

背景 : プレイヤーは Xbox 360 コントローラー (キーボードまたはチャットパッドなどは除く) を使用することだけではなく、Xbox 360 本体に接続されている複数のコントローラーの中から任意に選択したコントローラーが、ゲーム セッション全体を通じてゲームに認識されることを想定します。

対応方法 :

  • プレイヤーが PlayerIndex.One に割り当てられたコントローラーを使用するとは限らないことに注意してください。プレイヤーが使用するコントローラーを検出するには、プレイヤーに A または START を押すように求めるスプラッシュ スクリーンまたは初期メニューを作成しましょう。該当するボタンを押してゲームを開始した PlayerIndex を検出し、これをアクティブなコントローラーとして使用しましょう。次にコード例を示します。

PlayerIndex controllingPlayer = PlayerIndex.One;
             
for (PlayerIndex index = PlayerIndex.One; index <= PlayerIndex.Four; index++)
{
   if (GamePad.GetState(index).Buttons.Start == ButtonState.Pressed)
   {
      controllingPlayer = index;
      break;
   }
}



  • ゲームにプレイヤーのプロフィールでのサインインが必要な場合、選択された PlayerIndex のプロフィールの詳細を調べるか、現在そのインデックスでサインインしているプロフィールが存在しない場合、Guide.ShowSignIn を呼び出してプレイヤーにサインインするプロフィールを選択させましょう。次にコード例を示します。

SignedInGamer gamer = Gamer.SignedInGamers[controllingPlayer];
  
if (gamer != null)
{
   playerName = gamer.Gamertag;
}
else
{
   Guide.ShowSignIn(1, false);
}


  • キーボードによる入力を必須条件にしないでください。
  • コントローラーがアクティブでない場合でも (ゲームを赤外線リモコンで起動した場合など)、ゲームは正常に起動し、メニューやアトラクト モードが進行するようにしましょう。
  • Guide.ShowSignIn を使用して、複数のプレイヤーのローカル マルチプレイヤー ゲームへのサインインをサポートしましょう。

関連情報 :

*       ゲームの状態の管理 サンプル

*       ネットワーク ゲームの状態管理 サンプル



オーディオに留意する

背景 : オーディオは非常にシンプルなテクノロジのように思われがちです。サウンドを落とし込み、要求されたときに再生する程度の処理だと思われているかもしれません。しかし、オーディオ システムはテレビと同じように多様です。音量、位置、および周波数範囲は、システムごとに異なる場合があります。

プレイヤーが手動でテレビの音量を上げたり、下げたりしなければならないような大幅に異なる音量でサウンドを再生しないようにしましょう。

また、一部のゲーマーはゲームに含まれている音楽を好まず、これをオフにしたり、または Xbox 360 ガイドを使用して、独自の BGM に置き換えたりする場合があります。

対応方法 :

  • できる限り多くのオーディオ構成 (ステレオ、モノラル、5.1、ヘッドホンなど) 上でゲーム オーディオをテストしてください。

  • プレイヤーがゲームのプレイ中にテレビやオーディオ機器などのマスター ボリュームを変更せざるを得ないような、極端なサウンド間の音量差は避けましょう。ゲーム全体のオーディオ レベルをリファレンスとなる標準サウンドに合わせて調整しましょう。Xbox 360 のスタートアップ サウンドが良いリファレンスになります。Xbox 360 のスタートアップ サウンドの音量が適度に大きくなるようにスピーカーの音量を調整し、ゲームのサウンドをそのレベルに合うように調整します。
  • ゲームで音楽を再生する場合は、該当するサウンドに対して適切なタグを付けましょう。XACT を使用している場合は、音楽に該当するサウンドを [Music] カテゴリに割り当てましょう。SoundEffect API を使用する場合は、音楽または BGM に該当するファイルを Song オブジェクトとして読み込み、MediaPlayer.Play を使って再生してください。これらの方法により、プレイヤーは Xbox 360 ガイドを介してゲームに含まれる音楽を、自分の好きな音楽で置き換えることができます。
  • XACT を使用している場合に、ゲームのバイナリ サイズを縮小するためのヒントを示します。それは、WaveBank に対して XMA 圧縮を有効にする方法です。[Compression Presets] ノードに任意の XMA 圧縮のプリセットを追加し、WaveBank のプロパティを編集して XMA 圧縮を有効にしましょう。
  • Xbox 360 上の MediaPlayer.Play は非同期であること、つまり曲はすぐに再生を開始しないことに注意してください。実際、MediaPlayer.Play を呼び出した次のフレームを確認しても、曲はそれまでにはほぼ間違いなく再生を開始しておらず、MediaPlayer.State はまだ MediaState.Stopped のままでしょう。古い曲が終了した時点で新しい曲を開始し、フレームごとに現在の曲が完了したことを確認する場合、注意しないとフレームごとに曲を変えてしまう場合があります。代わりに、MediaPlayer.ActiveSongChanged イベントに対してイベント ハンドラーを設定し、このイベントが発生したときに、MediaPlayer.State == MediaState.Stopped の条件をチェックして現在の曲が完了したことの確認を行えます。.
  • XNA Framework SoundEffect API のコンテンツ プロセッサは、既定で高圧縮に設定されます。オーディオの品質と対比して、ゲームの全体サイズと読み込み時間に与える圧縮の影響を考慮しましょう。


ゲーマー プロフィールを活用する

背景 : ゲーマーは自分のプロフィールの設定に対して多くの時間を費やします。Xbox LIVE に接続されていない場合であっても、プロフィールはサインインしているプレイヤーを識別することによって、ゲームの進行状況を保存したり、ハイ スコア リスト内で特定のプレイヤーを識別したり、場合によってはコントローラー感度などのゲームのデフォルト設定を保存するためにゲーム内で使用されます。プロフィールに関連付けられている情報を活用して、プレイヤーに対して、カスタマイズされたエクスペリエンスを提供しましょう。

対応方法 :

  • • プロフィールを活用するためには GamerServicesComponent を登録する必要があります。このコンポーネントを Game クラスのコンポーネント リストに追加することによって、ゲーマー プロフィールの操作が可能になります。

  • ゲームを開始したときに、Gamer.SignedInGamers をチェックして、アクティブなコントローラーでサインインしているプロフィールの有無を確認しましょう。サインインしているプロフィールがない場合は、ゲーマーにサインインを促すために Xbox 360 ガイドを表示したり、匿名でプレイすることを許可したりすることができます。残念ながら、匿名のプレイではゲームの進行状況を保存するストレージ コンテナーを開いたり、プレイヤーの名前 (ハイ スコア チャートなどで) を検索したりすることはできません。
  • ゲーマーの名前を使用しましょう。SignedInGamer.Gamertag をチェックし、それをゲーム内のステータス バー、ハイ スコア チャートなどで使用しましょう。
  • SignedInGamer クラスは、ゲームの制御スキームや難易度を自動的に調整するのに役立つ GameDefaults プロパティなどのプレイヤーに関するさまざまな情報を保持します。GameDefaults.InvertYAxis プロパティは 3D ゲームにとって特に興味深いものです。
  • SignedInGamer.GetProfile の内部には、ゲーマー アイコンなど、さらに多くのデータが存在します。これは自己の判断で使用することができます。
  • アクティブなコントローラーの PlayerIndexSignedInGamer.SignedOut イベントが発生した際には適切に処理しましょう。ほとんどのゲームでは、メイン メニューに戻ります。

関連情報 :

*       ネットワーク ゲームの状態管理 サンプル

*       ゲーマー サービスの概要

*       Microsoft.Xna.Framework.GamerServices 名前空間



ゲームを有効に展示する

背景 : ゲームの技術的な開発作業を終了した後には、Xbox LIVE マーケットプレースにゲームを販売するにあたり、有効にショーケースするよう心がけましょう。サムネイル、ボックス アート、スクリーンショット、ビデオ、およびリッチ プレゼンスは、Xbox 360 上でゲームが適切に展示させるためのキー コンポーネントです。

対応方法 :

  • • サムネイルを使用しましょう。XNA クリエーターズ クラブ オンラインのウェブサイトにゲームを投稿する際に、64x64 のサムネイルを併せて投稿しましょう。
  • • XNA クリエーターズ クラブ オンラインのウェブサイトにゲームを投稿する際に、ゲームを有効に展示する方法を他にも多数用意しています。4 種類のスクリーンショット、ビデオ トレーラー、そして何よりもボックス アートなどがあります。時間を割いて、これらのアセットを作成してください。これらのアセットは Xbox LIVE の世界でゲームをショーケースする有効な手段です。
  • • リッチ プレゼンスは、ゲームがプレイされている間に、ゲームを Xbox LIVE 上にブロードキャストする方法です。各 SignedInGamer がゲームをプレイしている場合、特定の瞬間にゲーマーがゲームで何を実行しているかに基づいて、Presence.PresenceMode を設定し、必要に応じて PresenceValue を設定します。これによって特定のゲーマーがあなたのゲームをどのように楽しんでいるかが誰にでもわかります。

 
読み込みと保存をシームレスに実行する

背景 : プレイヤーがゲームを開始してから終了するまで、常にプレイヤーとゲームの間でインタラクティブなやりとりが行われるようにしましょう。少なくとも、プレイヤーが目視で確認できるインタラクティブな画面を表示するようにしましょう。

ほとんどのゲームは起動時に大量の読み込みを行うので、この時間中に真っ暗な画面ではなく、より興味深い画面を表示するようにしてください。ゲームを保存する場合は、ゲームプレイを一時停止したり、フリーズしたりしないで、保存に必要な I/O 操作をバックグラウンドで行ってください。

プレイヤーがメモリー ユニット (MU) を使用し、そこにゲームを保存する場合があります。ストレージ API を非同期で使用して、ユーザーが MU を使用している場合にロックが発生しないようにする必要があります。MU を接続した場合としない場合の両方でゲームをテストしましょう。

対応方法 :

  • ランタイムでコンテンツを読み込む際には、アニメーション表示されたローディング画面を使用しましょう。これはプレイヤーに、ゲームがクラッシュ、もしくはロックしたと思われないようにします。

  • ハードディスクとメモリー ユニットの両方を使用している場合、またはメモリー ユニットを 2 つ使用している場合など、複数のメモリー デバイスが存在する場合にゲームが動作するかどうかテストしましょう。
  • プレイヤーのゲーム データを初めて保存したり、読み込んだりする場合は、Guide.BeginShowStorageDeviceSelector を非同期に呼び出してロックを防止します。
  • ストレージの選択画面を繰り返し表示しないようにしましょう。プレイヤーをいらいらさせるおそれがあります。
  • 自動保存を実装する場合は、プレイヤーに自動保存の処理中であることと、Xbox 360 本体をオフにしないように指示する UI を表示しましょう。
  • ゲームのセーブ データはプロフィールに関連付けましょう。逆にハイ スコアはプロフィールに関連付けないようにしてください。こうすれば、Xbox LIVE を通して誰もがハイ スコアを確認できるようになるからです。
  • テキスト形式によるデータの保存と読み込みは、Xbox 360 が設定されている地域によっては問題となる可能性があります。Xbox 360 がドイツに設定されているときに、保存中に浮動小数点数値を文字列に変換すると、たとえば、1.234 と想定していた数値が 1,234 と表示される場合があります。このような文字列への数値変換およびその逆の変換がすべての地域で同じ値を生成するようにするには、文化的に不変の方法で数値を格納するか、テキストの代わりにバイナリ形式を使用する必要があります。

関連情報 :

*       方法 : StorageDevice を非同期に取得

*       BeginShowStorageDeviceSelector メソッド

*       ネットワーク ゲームの状態管理 サンプル (マルチスレッド ローディング画面のデモの場合)




Xbox LIVE マルチプレイヤー : フルに機能を発揮させる

背景 : マルチプレイヤーは、ゲームに実装できる重要な機能です。世界中のゲーマーと接続するようになり、結果的には繰り返しプレイするための付加価値が望めます。ただし、ネットワークのパフォーマンスが最適化されず、結果的に処理落ちが多い場合、ユーザーは逆に失望する可能性があります。ゲームにマルチプレイヤーの機能を実装する場合は、Xbox LIVE でのゲームプレイが快適で素晴らしいものに仕上がるよう努力しましょう。

対応方法 :

  • • 招待をサポートしましょう。ネットワーク ゲームのエクスペリエンスを向上させ、フレンド同士によるゲームプレイがより簡易にセットアップできます。具体的には、NetworkSession.InviteAccepted イベントに応答して、プレイヤーがその時点で参加しているセッションを終了し、NetworkSession.JoinInvited を呼び出して招待されたセッションに参加します。招待を受けたプレイヤーには、必要に応じてゲームを購入するオプションが表示されたり、進行中のゲーム セッションに参加したりすることができます。
  • • クイック マッチ機能を実装して、プレイヤーが参加するゲームを手動で参加しなくていいようにしましょう。バックグラウンドでマッチング処理を実行し、参加可能な最良のセッションに参加するようにしましょう。クイック マッチをデフォルトに設定して、ゲーマーが Xbox LIVE サービスを介して他のプレイヤーを検出する確率を改善しましょう。
  • • レベルおよびルールなどのいくつかのパラメーターを指定できるカスタム マッチ機能を有効にしましょう。プレイヤーが選択しやすいように、返されるセッションの数を制限しましょう。
  • • プリゲーム ロビーを備えている場合は、ロビーに入るプレイヤーがセッションの設定を把握できるように、マッチ設定を表示しましょう。
  • • 特に最適化が重要です。XNA Framework はパケットの遅延と損失をシミュレートできます。テスト時に両方を必ずオンにしてください。ネットワーク ゲームが持つ帯域幅のターゲットを 8 KB にしましょう。この条件を満たせば、Xbox LIVE に接続している 90% の Xbox 360 本体をカバーします。ゲームが 500 ミリ秒の遅延が発生する状況でも、適切にプレイを続行できるようにする必要もあります。詳細については、下記の Gamefest 2008 の講演へのリンクを参照してください。
  • • Xbox LIVE を使用したマルチプレイヤー ゲーム セッションの作成および参加は、ゲームを購入した場合であっても、Xbox LIVE シルバー メンバーシップおよび一部の Xbox LIVE の子供用アカウントでは利用できません。SignedInGamer クラスの Privileges.AllowOnlineSessions フラグが true に設定されていることを確認することで、特定のゲーマーが Xbox LIVE セッションに参加できるかどうかを判定することができます。次に例を示します。

                    if (Gamer.SignedInGamers[activeController].Privileges.AllowOnlineSessions) ...

  • • リッチ プレゼンスを使用して、ゲームがプレイ中であることを他のゲーマーがわかるようにしましょう。リッチ プレゼンスの文字列を使用して、プレイヤーがゲーム内で、どのような状態にあるかを知ることができます。リッチ プレゼンスには、SignedInGamerPlayerIndex が必要なので、起動時にこの情報をポーリングする必要がある別の理由となります。次に例を示します。

                    Gamer.SignedInGamers[activeController].Presence.PresenceMode = GamerPresenceMode.AtMenu;*        

For Reference, See:

*       ネットワーク アーキテクチャ: ピア ツー ピア サンプル

*       ネットワーク アーキテクチャ: クライアント/サーバー サンプル

*       ネットワーク ロビーおよびチャット用アイコン サンプル

*       ネットワーク予測 サンプル

*       ネットワーク ゲームの状態管理 サンプル

*       Shawn Hargreaves' Gamefest 2008: Network Game Optimization

*       招待 サンプル




ゲーマーが特殊なコントローラーを使用する可能性がある

背景 : XNA Framework では、さまざまなタイプのコントローラーがサポートされます。これらのコントローラーは、フライト スティックからダンス パッドにわたり、すべて GamePadState クラス内に値を返します。これらのコントローラーを所持するゲーマーは、従来から使用されてきたタイプのゲームで動作するものと期待します。

ゲームで使用される特殊なタイプに関係なく、常に既定の Xbox 360 ゲームパッドをサポートする必要があり、プレイを可能にするために特殊なコントローラーが要求されないようにしましょう。

対応方法 :

  • レーシング ゲームではホイールをサポートし、フライング ゲームではフライト スティックをサポートするなど、ゲームに最適なコントローラーのタイプを決定しましょう。
  • プレイヤーがゲームを開始し、使用しているコントローラーがわかっている場合は、GamePad.GetCapabilities を呼び出し、GamePadCapabilities.GamePadType の戻り値を確認して、プレイヤーが使用するコントローラーのタイプを把握します。
  • このタイプに最も適合するように制御スキームを変更して、特殊なコントローラーのタイプに対応します。たとえば、Xbox 360 コントローラーのトリガーは、フライト スティックには最適ではない可能性があります。Input Reporter Utility (下記のリンクを参照) を使用して、特殊なタイプのコントローラーをテストして、その入力を把握しましょう。

関連情報 :

*       入力レポーター

var gDomain='m.webtrends.com'; var gDcsId='dcschd84w10000w4lw9hcqmsz_8n3x'; var gTrackEvents=1; var gFpc='WT_FPC'; /*<\/scr"+"ipt>");} /*]]>*/
DCSIMG