
Xbox LIVE インディーズ ゲームの作成に関心がある場合は、ゲームをダウンロードし、プレイする何百万人ものゲーマーの期待と、ゲームの外観、雰囲気、およびプレイを最高のものにするためのベスト プラクティスについて、このガイドを通じて理解してください。
このガイドでは XNA Game Studio 3.0 以降の機能について解説しています。Xbox LIVE インディーズ ゲームを開発する場合は、XNA Game Studio 3.0 以降を使用する必要があります。
次にいくつかの注意事項を示します。
このガイドのセクションは優先度の高い順に紹介していますが、すべてのセクションが重要です。必ずすべてのセクションを読み、ゲームの開発にあたり、提示されている課題について考慮していることを確認してください。
ゲーマーはどのようなテレビでもゲームが "正常に動作する" ことを期待する
背景 : Xbox 360 本体は、さまざまな解像度や縦横比などを備えた、すべてのタイプのテレビに接続できます。解像度が適切に処理されていない場合、オーバースキャン (ビューポート全体を描画しないテレビ画面の外周部)、ゲームの表示部の引き伸ばし、さらにはクラッシュが発生する可能性があります。
対応方法 :
関連情報 :
表示、クライアント境界、ビューポート、およびバック バッファー
ゲーマーは有効なお試し版モードを期待する
背景 : 多くのゲーマーが購入前に試用を希望するので、すべての Xbox LIVE インディーズ ゲームでは、プレイヤーがゲームを購入する前に一定の時間制限が設けられたお試し版をプレイすることができるようになっています。設けられている時間制限に達すると、お試し版の実行は終了し、プレイヤーには完全版を購入するか、購入せずに終了するかを選択できる画面が表示されます。お試し版モードで追加される唯一の制限は Xbox LIVE マッチメイキングが使用できないことです。お試し版モードを通じて、ゲームの中で最も特徴的だと思う部分をユーザーに示す機会が得られます。
対応方法 :
Guide.IsTrialMode プロパティが true かどうかをチェックし、ゲームがお試し版モードで実行中かどうかを確認しましょう。このプロパティは常に true で開始され、ゲームが起動したすぐ後、または新しいプレイヤーのサインインの後、あるいはゲーム内で完全版の購入後に変更します。起動時に 1 回だけチェックするのではなく、必ずフレームごとに 1 回ずつチェックしてください。
関連情報 :
ゲーマーは使い慣れたメニューと制御システムを期待する
背景 : ゲームは基本的に一定のサイクルによって構成されます。つまり、ゲーマーは [メインメニュー] (および [オプション] または [ヘルプ] などの代替メニュー) から、ゲーム セッションに入り、プレイし、プレイが終了したらメイン メニューに戻ることを想定しています。もし、このサイクルから逸脱したサイクルを実装する場合は、そのサイクルが直感的で、覚えやすいものとする必要があります。
メニューの移動はスティックと方向パッドの両方を使用できるように期待しています。"決定" または "次に進む" の機能は A ボタンに割り当てられていることを期待しています。"キャンセル" または "前に戻る" の機能は B および Back ボタンに割り当てられていることを期待しています。
メニューの操作に成功した場合と失敗した場合の両方とも、グラフィックおよびオーディオによる方法でユーザーに操作結果を通達しましょう。エラーが発生した場合、対処方法を簡潔に通達しましょう。
対応方法 :
「ゲームの状態の管理 サンプル」にあるようなメニュー システムを使用しましょう。
関連情報 :
プレイヤーは単一の 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;
}
}
SignedInGamer gamer = Gamer.SignedInGamers[controllingPlayer];
if (gamer != null)
{
playerName = gamer.Gamertag;
}
else
{
Guide.ShowSignIn(1, false);
}
関連情報 :
オーディオに留意する
背景 : オーディオは非常にシンプルなテクノロジのように思われがちです。サウンドを落とし込み、要求されたときに再生する程度の処理だと思われているかもしれません。しかし、オーディオ システムはテレビと同じように多様です。音量、位置、および周波数範囲は、システムごとに異なる場合があります。
プレイヤーが手動でテレビの音量を上げたり、下げたりしなければならないような大幅に異なる音量でサウンドを再生しないようにしましょう。
また、一部のゲーマーはゲームに含まれている音楽を好まず、これをオフにしたり、または Xbox 360 ガイドを使用して、独自の BGM に置き換えたりする場合があります。
対応方法 :
できる限り多くのオーディオ構成 (ステレオ、モノラル、5.1、ヘッドホンなど) 上でゲーム オーディオをテストしてください。
ゲーマー プロフィールを活用する
背景 : ゲーマーは自分のプロフィールの設定に対して多くの時間を費やします。Xbox LIVE に接続されていない場合であっても、プロフィールはサインインしているプレイヤーを識別することによって、ゲームの進行状況を保存したり、ハイ スコア リスト内で特定のプレイヤーを識別したり、場合によってはコントローラー感度などのゲームのデフォルト設定を保存するためにゲーム内で使用されます。プロフィールに関連付けられている情報を活用して、プレイヤーに対して、カスタマイズされたエクスペリエンスを提供しましょう。
対応方法 :
• プロフィールを活用するためには GamerServicesComponent を登録する必要があります。このコンポーネントを Game クラスのコンポーネント リストに追加することによって、ゲーマー プロフィールの操作が可能になります。
関連情報 :
Microsoft.Xna.Framework.GamerServices 名前空間
ゲームを有効に展示する
背景 : ゲームの技術的な開発作業を終了した後には、Xbox LIVE マーケットプレースにゲームを販売するにあたり、有効にショーケースするよう心がけましょう。サムネイル、ボックス アート、スクリーンショット、ビデオ、およびリッチ プレゼンスは、Xbox 360 上でゲームが適切に展示させるためのキー コンポーネントです。
対応方法 :
読み込みと保存をシームレスに実行する
背景 : プレイヤーがゲームを開始してから終了するまで、常にプレイヤーとゲームの間でインタラクティブなやりとりが行われるようにしましょう。少なくとも、プレイヤーが目視で確認できるインタラクティブな画面を表示するようにしましょう。
ほとんどのゲームは起動時に大量の読み込みを行うので、この時間中に真っ暗な画面ではなく、より興味深い画面を表示するようにしてください。ゲームを保存する場合は、ゲームプレイを一時停止したり、フリーズしたりしないで、保存に必要な I/O 操作をバックグラウンドで行ってください。
プレイヤーがメモリー ユニット (MU) を使用し、そこにゲームを保存する場合があります。ストレージ API を非同期で使用して、ユーザーが MU を使用している場合にロックが発生しないようにする必要があります。MU を接続した場合としない場合の両方でゲームをテストしましょう。
対応方法 :
ランタイムでコンテンツを読み込む際には、アニメーション表示されたローディング画面を使用しましょう。これはプレイヤーに、ゲームがクラッシュ、もしくはロックしたと思われないようにします。
関連情報 :
BeginShowStorageDeviceSelector メソッド
ネットワーク ゲームの状態管理 サンプル (マルチスレッド ローディング画面のデモの場合)
Xbox LIVE マルチプレイヤー : フルに機能を発揮させる
背景 : マルチプレイヤーは、ゲームに実装できる重要な機能です。世界中のゲーマーと接続するようになり、結果的には繰り返しプレイするための付加価値が望めます。ただし、ネットワークのパフォーマンスが最適化されず、結果的に処理落ちが多い場合、ユーザーは逆に失望する可能性があります。ゲームにマルチプレイヤーの機能を実装する場合は、Xbox LIVE でのゲームプレイが快適で素晴らしいものに仕上がるよう努力しましょう。
対応方法 :
if (Gamer.SignedInGamers[activeController].Privileges.AllowOnlineSessions) ...
Gamer.SignedInGamers[activeController].Presence.PresenceMode = GamerPresenceMode.AtMenu;
For Reference, See:
ネットワーク アーキテクチャ: クライアント/サーバー サンプル
Shawn Hargreaves' Gamefest 2008: Network Game Optimization
ゲーマーが特殊なコントローラーを使用する可能性がある
背景 : XNA Framework では、さまざまなタイプのコントローラーがサポートされます。これらのコントローラーは、フライト スティックからダンス パッドにわたり、すべて GamePadState クラス内に値を返します。これらのコントローラーを所持するゲーマーは、従来から使用されてきたタイプのゲームで動作するものと期待します。
ゲームで使用される特殊なタイプに関係なく、常に既定の Xbox 360 ゲームパッドをサポートする必要があり、プレイを可能にするために特殊なコントローラーが要求されないようにしましょう。
対応方法 :
関連情報 :
var gDomain='m.webtrends.com'; var gDcsId='dcschd84w10000w4lw9hcqmsz_8n3x'; var gTrackEvents=1; var gFpc='WT_FPC'; /*<\/scr"+"ipt>");} /*]]>*/