Xbox에서 디자인한 핸드헬드 호환성 프로그램은 게임 핸드헬드에서 게임이 잘 작동할 것이라는 확신을 플레이어에게 제공하는 데 도움이 됩니다. 핸드헬드에서 게임을 제대로 작동하려면 PC 데스크톱 환경에서 동일한 게임이 어떻게 동작하는지 비교할 때 몇 가지 추가 고려 사항이 필요합니다. 핸드헬드의 게임은 PC 게임일 뿐이지만, 핸드헬드에서 잘 작동하려면 게임에서 마우스와 키보드가 아닌 게임 패드에서 입력이 제공되는 눈에서 12인치로 유지되는 작은 화면에서 배송하는 것이 무엇을 의미하는지 고려해야 합니다.
개발자가 고려해야 할 다섯 가지 주요 지침이 있습니다. 이 문서에서는 이러한 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용으로 작성된 게임은 일반적으로 마우스와 키보드가 있다고 가정합니다. 게임 핸드헬드에서 기본 입력은 게임 패드입니다. 게임에 텍스트를 입력할 때 개발자는 게이머가 가상 키보드가 있는 게임 패드만 사용하여 텍스트를 입력할 수 있는지 확인해야 합니다.
텍스트 입력을 입력해야 할 때마다 가상 키보드가 트리거되어야 합니다. 두 가지 일반적인 방법은 텍스트 상자에서 "터치"가 감지되거나 텍스트 상자에 "입력 포커스"가 있고 "A" 단추를 누를 때 가상 키보드를 시작하는 것입니다.
게임은 자체 가상 키보드를 자유롭게 만들 수 있습니다. 또한 Windows의 일부인 가상 키보드를 활용할 수도 있습니다. 다음 코드에서는 게임이 게임 패드 모드에서 Windows 가상 키보드를 시작하고 숨기는 방법을 보여 있습니다.
#include <winrt/windows.ui.viewmanagement.core.h>
using namespace winrt::Windows::UI::ViewManagement::Core;
#pragma comment(lib,"windowsapp.lib")
// 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에 대한 종속성이 없습니다. 2018년 10월에 릴리스된 버전 10.0.17763.0에서 Windows 10 도입된 Windows API이지만 열 CoreInputViewKind::Gamepad 거형에는 Windows SDK 10.0.26100.3624 이상이 필요합니다.
지침 4: UI 가독성
7" 너비의 작은 화면은 게임 핸드헬드에서 일반적입니다. 이러한 작은 화면은 게임에서 텍스트 UI를 읽기 어렵게 만들 수 있습니다. 이러한 작은 화면에 대한 게임 개발자의 지침은 다음과 같습니다.
- 화면이 1280 x 720인 경우 텍스트의 픽셀 높이가 9픽셀 이상이어야 합니다. 높이가 12픽셀 이상인 것이 좋습니다.
- 화면이 1920 x 1080인 경우 텍스트의 픽셀 높이가 14픽셀 이상이어야 합니다. 높이가 18픽셀 이상인 것이 좋습니다.
텍스트 가독성은 접근성 문제의 주요 소스입니다. 많은 게임에서 이를 인식하고 글꼴 크기에 대한 게임 내 설정을 가지고 있습니다. 텍스트 가독성을 충족하는 쉬운 방법은 게임이 핸드헬드 장치에서 실행 중임을 감지할 때 이러한 더 큰 텍스트 크기 중 하나를 기본값으로 자동으로 설정하는 것입니다.
대부분의 게임에서 비트맵 글꼴을 사용하지만 비트맵 글꼴은 화면 크기, DPI 또는 기타 Windows 설정에 따라 자동으로 확장되지 않습니다. 비트맵 글꼴을 사용하는 경우 더 큰 텍스트 크기에 대한 선택 항목을 포함해야 합니다.
개발자가 게임에서 TrueType 글꼴을 사용하는 경우 텍스트에 DirectWrite 사용할 수 있습니다.
DirectWrite 는 글꼴 크기 조정, DPI 및 기타 Windows 설정과 같은 주요 Windows 기능을 활용할 수 있습니다.
지침 5: 지원되는 디스플레이
게임은 화면 부동산을 사용하여 훌륭한 경험을 제공합니다. 게임은 게임 플레이를 왜곡하는 가로 세로 비율로 실질적으로 문자 상자로 표시되거나 렌더링되어서는 안 됩니다. 게임 핸드헬드에 일반적인 작은 화면으로, 상당한 문자 권투는 게임 플레이에 영향을 미치는 작은 화면을 더 작게 만들 수 있습니다.
기타 고려 사항
나열된 5가지 지침 외에도 핸드헬드 Windows 디바이스용 GDK 게임을 개발할 때 추가 고려 사항을 참조하세요.