次の方法で共有


Windows ハンドヘルド デバイス用 GDK ゲームのチェックリスト

ハンドヘルド デバイス上でゲームをスムーズに機能させる方法については、同じゲームの PC デスクトップ環境での動作と比較する際、考慮事項にいくつかの項目を追加する必要があります。 ハンドヘルド デバイス上で実行されるゲームは PC ゲームと同じものですが、ハンドヘルド環境でうまく機能させるには、表示画面が小さいこと、ユーザーの目との距離が 12 インチ程度の近さであること、入力デバイスがマウスとキーボードではなくゲームパッドであることの意味を検討する必要があります。

開発者の考慮事項は、5 つのチェック項目に大きく分けられます。 このドキュメントでは、それら 5 つのチェック項目の概要を説明し、ゲーム開発者がそれらの条件を満たす方法のガイダンスを提供します。

チェック 1: 設定を変更しなくても快適に使える既定値

ゲーマーは、ゲーム専用コンソールと同じように快適なエクスペリエンスをハンドヘルドにも期待します。 設定メニューを見つけてゲームをハンドヘルド モードに切り替えるといった操作を要求することは、ゲーマーの期待に反しています。 ゲームに含まれるすべての要素間の移動は、コントローラー操作のみで実行できるようにすべきです。 カスタマイズやレンダリング オプション (黒レベル、シャドウ、性能と品質) を変更できることも必要ですが、ゲーマーは、やはり既定のエクスペリエンスが快適であることを期待します。

既定値のままで "快適に使える" ようにするには、現在の動作環境がハンドヘルドであるかどうかを認識することが重要です。 ゲームの動作環境がゲーム用ハンドヘルド端末であるかどうかは、以下のコードで判断できます。

#ifndef DEVICEFAMILYDEVICEFORM_GAMING_HANDHELD
#define DEVICEFAMILYDEVICEFORM_GAMING_HANDHELD    0x0000002E 
#endif
  
DWORD DeviceForm; 
RtlGetDeviceFamilyInfoEnum(nullptr, nullptr, &DeviceForm); 
  
if (DeviceForm == DEVICEFAMILYDEVICEFORM_GAMING_HANDHELD) 
{ 
   // Do stuff for a handheld 
} 

ゲームが起動されたときに、そのデバイスがゲーム用ハンドヘルドであるかどうかをチェックします。 ゲーム用ハンドヘルドの場合には、そのゲームを快適にプレイできるよう、以下のような既定値を設定します。

  • 一般的なハンドヘルド端末の機能に適した解像度と設定を選択します。
  • 既定の入力デバイスはゲームパッドであるという想定に変更し、テキスト入力が必要なときは仮想キーボードをポップアップ表示します。
  • フォントを大きくします (詳細については、下の 「チェック 4: UI の読みやすさ」セクションを参照してください)。

ハンドヘルド デバイス向けの開発では、単にゲームの動作環境がハンドヘルド端末であることを検出するだけでなく、その先を考慮することが重要です。 マウスとキーボードではなくゲームパッドを主な入力デバイスにすることが、プレイヤー エクスペリエンスに及ぼす影響について検討しましょう。 影響が及ぶ対象には、インターフェイス内を動き回る時の操作や、フォーカスの管理方法などがあります。

また、ゲームパッドではマウスのような高精度の操作がしにくいという事情など、入力の難しさへの対処が必要になる場合もあります。 これを補うには、エイム アシストのような機能が役立つ可能性があります。

ハンドヘルド上で確実に "既定値のままで快適に使える" 状態を実現するにあたっては、以下のアクセシビリティ ガイドが非常に良い参考リソースとなります。

チェック 2: アイコンなどの情報表示

画面に表示するアイコンなどのヒントは、ゲーム内の移動操作やプレイ方法について、ゲーマーの理解を助けるものです。 ハンドヘルド環境でネイティブに利用することができない入力方法について、利用できるかのように見える表示を出さないように注意しましょう。

チェック 3: テキスト入力

PC 用のゲームは、通常、マウスとキーボードが接続されていることを想定して作成されています。 しかし、ゲーム用ハンドヘルドの場合はゲームパッドが既定の入力デバイスになります。 ゲーム内のテキスト入力については、ゲーマーが仮想キーボードとゲームパッドだけを使用してテキストを入力できるようになっている必要があります。

テキスト入力が必要なすべての場面に、仮想キーボードをトリガーするしくみを用意しましょう。 その一般的なやり方は 2 つあります。テキスト ボックスの "タッチ" 操作を検出したときに仮想キーボードを表示する方法と、テキスト ボックスに "入力フォーカス" があるときに "A" ボタンが押されたら仮想キーボードを表示する方法です。

ゲームの場合、独自の仮想キーボードを開発して提供するか、 Windows に組み込まれている仮想キーボードを利用するかは自由に選択できます。 以下のコードは、ゲームの起動後、ゲームパッド モードで Windows 仮想キーボードを非表示にする方法を示しています。

#include <winrt/windows.ui.viewmanagement.core.h>
using namespace winrt::Windows::UI::ViewManagement::Core;

// CoreInputViewKind::Gamepad enum requires headers from 26100.3624 Windows SDK or greater
// Otherwise, use static_cast<CoreInputViewKind>(7) for earlier SDKs

CoreInputView::GetForCurrentView().TryShow(CoreInputViewKind::Gamepad));

CoreInputView::GetForCurrentView().TryHide();

適切な ICoreInputView3 インターフェイスを取得し、新しいゲームパッド対応の仮想キーボードを表す識別子を渡して TryShow メソッドを呼び出しています。 TryHide は、現在キーボードが表示されている場合にキーボードを非表示にします。

注意

TryShow メソッドは、キーボードを表示することが適切であると Windows によって判断された場合にのみ、キーボードを表示します。 たとえば、物理キーボードが接続されている (および、その他の特性を備えている) デバイスでは、このメソッドを呼び出しても仮想キーボードは表示されない場合があります。 タッチスクリーン装備のハンドヘルド デバイスでは、この呼び出しは期待どおりに機能します。

注意

上記のこの API は、GDK に依存しません。 これは、Windows 10 にバージョン 10.0.17763.0 (2018 年 10 月リリース) で導入された Windows API ですが、CoreInputViewKind::Gamepad 列挙を使用するには Windows SDK 10.0.26100.3624 以降が必要です。

チェック 4: UI の読みやすさ

ゲーム用ハンドヘルドでは、7 インチ サイズの小さい画面が一般的です。 こうした小さい画面では、ゲーム内のテキスト UI を読み取ることは難しい場合があります。 以下に、小さい画面に関するゲーム開発者向けガイダンスを示します。

  • 画面が 1280 x 720 の場合、テキストのピクセル単位の高さは少なくとも 9 ピクセルとし、高さ 12 ピクセル以上にすることをおすすめします。
  • 画面が 1920 x 1080 の場合、テキストのピクセル単位の高さは少なくとも 16 ピクセルとし、高さ 18 ピクセル以上にすることをおすすめします。

テキストの読みやすさは、アクセシビリティの問題を引き起こす大きな要因の 1 つです。 多くのゲームには、そのことを意識して、フォント サイズのゲーム内設定項目があります。 テキストの読みやすさを確保する簡単な方法としては、ゲームがハンドヘルド デバイスで実行されていることを検出した時点で、これらの大きいテキスト サイズのいずれかを既定値として自動設定することが考えられます。

ほとんどのゲームにはビットマップ フォントが採用されていますが、ビットマップ フォントでは、画面サイズ、DPI、またはその他の Windows 設定に基づく自動的なサイズ調整は行われません。 ビットマップ フォントを使用する場合は大きいテキスト サイズの選択肢を用意しましょう。

ゲーム内で TrueType フォントを使用する場合は、テキスト表示に DirectWrite を使用できます。 DirectWrite では、フォントのサイズ調整、DPI、その他の Windows 設定などの主要な Windows 機能を利用できます。

チェック 5: サポートされているディスプレイ

ゲームでは、画面の貴重なスペースを活用して優れたエクスペリエンスを提供します。 極端な横長表示や、ゲームプレイに支障が出るような縦横比でのレンダリングは避けましょう。 一般的なゲーム用ハンドヘルドの小さい画面では、極端な横長表示を使用すると表示領域がいっそう狭くなり、ゲームプレイに支障が出る可能性があります。

その他の考慮事項

このリストに示した 5 つのチェック項目に加え、「ハンドヘルド Windows デバイス用の GDK ゲームを開発するときのその他の考慮事項」も参照してください。