다음을 통해 공유


Microsoft 게임 개발 키트란? (TL, DR)

Microsoft GDK(게임 개발 키트)는 다음과 같습니다.

  • 현재 게임 개발자가 현재의 PC를 대상으로 사용하고 있고, 현 세대의 Xbox 본체를 포함하여 모든 Microsoft 게임 끝점에서 사용할 수 있는 공용, 클래식 Windows API의 세트입니다.

  • 게임 개발자에 친숙한 프로그래밍 모델과 디자인을 통해 통합할 수 있도록 설계된 게임 서비스, 도구, 확장의 모음으로, 다음이 포함됩니다.

    • 표준 Win32 스타일 C API 또는 DX 스타일 C++ API
    • 오류 코드를 반환하고 예외를 발생시키지 않는 API
    • 친숙한 비동기 프로그래밍 패턴을 사용하는 API

Xbox에서 이는 다음을 의미합니다.

  • 게임 실행에 최적화된 작고 빠르며 안전한 OS
  • 게임에 사용할 수 있는 CPU, GPU, 메모리 리소스, I/O 속도를 명시적으로 보장하는 OS
  • 하드웨어 자체에 최적화되어 있으며 오늘과 내일의 Xbox 플랫폼에서 게임의 성능을 최대화 할 수 있는 Xbox용 확장(DX12x 등)
  • Game OS가 게임을 제공하는 모델로, 현재 Xbox가 제공하는 것과 버전 지정 모델
  • 타이틀 내에서의 메모리 사용을 이해하고 추적하는 데 도움이 되는 더 간단한 메모리 모델
  • "F5" 배포, 설치, 테스트 반복을 위한 큰 안정성 향상, Xbox One ERA 모델에서 볼 수 있었던 정품 인증 오류 제거
  • 기존 Windows 기반 코드를 Xbox로 가져오고 코드 재사용성 및 유지 보수성을 향상시키는 더 쉬운 방법

PC에서 이는 다음을 의미합니다.

  • 연결된 저장소, Xbox 서비스, 완전한 세트의 접근성 기능을 포함한 다양한 Microsoft 게임 서비스를 Xbox와 마찬가지로 개발, 테스트, 사용할 수 있는 능력
  • 이전에 Xbox 전용 패키징 및 수집 시스템을 사용하고, PC 게임을 Microsoft Store로 쉽게 배송하고, PC 게임 패스와 같은 Microsoft 게임 이니셔티브에 참여하는 방법

Microsoft GDK(게임 개발 키트) 프로그래밍 모델

Microsoft GDK(게임 개발 키트) 프로그래밍 모델

  • API는 다음 중 하나입니다.
    • 기본 C: 클래식 Win32 스타일의 C API
    • 단순한 C++: D3D 스타일의 C++ API
  • 오류 코드를 반환하고 예외를 발생시키지 않는 API
  • Xbox에서 문자열 값을 받는 모든 API에는 UTF-8이 기본입니다.
  • Xbox뿐만 아니라 PC에서도 UTF-8은 게임 런타임에 문자열 값을 받는 모든 API의 기본값입니다.
  • PC에서 핵심 Win32 게임 API는 구체적으로 게임 런타임의 일부가 아닌 모든 게임 관련 API에서 문자열 값에 대한 Windows API 규칙을 따릅니다.

중요 참고: Xbox에서 Microsoft GDK(게임 개발 키트)는 D3D12.x만 지원합니다.
D3D11.x는 지원되지 않습니다. D3D11.x를 사용하는 게임이 있는 경우 Microsoft GDK(게임 개발 키트)로 이동하는 과정의 일부로 D3D12.x로 이동해야 합니다. Windows PC에서는 D3D11과 D3D12가 모두 지원됩니다.

Microsoft GDK(게임 개발 키트) 프로그래밍 모델은 다음으로 구성됩니다.

  • 핵심 Win32 게임 API: Windows PC, Xbox, Xbox 게임 스트리밍(일부 Windows 버전 의존 부분 포함)에서 작동하는 게임을 위한 Win32 API의 공통 하위 집합입니다. 예를 들어 기존 Win32 파일 I/O(CreateFile, OpenFile, ReadFile, WriteFile), WinSock2, XInput, D3D12(또는 Xbox의 D3D12.x) API가 있습니다. 이러한 API는 PC Windows OS의 일부, Xbox의 Game OS의 일부로 제공됩니다.

  • 게임 런타임: 이 구성 요소 세트는 Microsoft 플랫폼에서 현대적인 장치 호환 게임을 구현하는 데 도움이 됩니다. 게임 런타임에는 MSIXVC 패키징, 설치 관리, 연결된 저장소(게임 저장), 접근성, 스토어 상거래에 대한 지원이 포함됩니다. Xbox 서비스 지원은 게임 런타임의 구성 요소에 의존합니다. Windows PC에서 게임 런타임은 별도의 Microsoft Store 서비스 패키지로 제공되어 PC가 활용할 수 있습니다. Xbox에서 게임 런타임은 Game OS의 일부로 제공됩니다.

    PC에서 게임 런타임을 사용하려면 Windows 10 19H1 릴리스가 필요합니다.

영역별 공용 프로그래밍 모델

영역 API
애플리케이션 모델 WinMain 및 Win32 메시지 루프
정품 인증이 해당 없음(정품 인증은 프로그래밍 모델의 일부가 아님)
RegisterAppStateChangeNotification API
RegisterForGameInvites API
네트워킹 WinSock2, WinHTTP
파일 I/O Win32 파일 I/O API
메모리 Xbox용 확장 포함 Win32 메모리 API(XMemAlloc권한 부여 필요)
그래픽 PC에서 D3D12 및 D3D11
Xbox에서 D3D12.x
오디오 Xbox에서 XAudio2권한 부여 필요XAudio2(확장 포함) 및 XMA 지원
WASAPI권한 부여 필요
ISpatialAudioClient권한 부여 필요
비디오 PC에서 ID3D11 비디오 API 및 Media Foundation 전체 지원
Xbox에서 MFSourceReader 및 관련 API(Xbox One ERA와 동일)
Xbox에서 인코딩 지원 없음
GameDVR/브로드캐스트 새로운 기본 C API: XAppCapture
입력 더 고급 사용 사례를 위한 GamePad 또는 GameInput용 XInput(새로운 단순한 C++ API)
연결된 저장소 새로운 기본 C API: XGameSave
표준 UI(TCUI) 새로운 기본 C API: XGameUI
패키징 및 스트리밍 설치 새로운 기본 C API: XPackage
XSAPI(Xbox 서비스 API) 새 플랫 C API: XSAPI 참조
Microsoft Store 새로운 기본 C API: XStore

Microsoft GDK(게임 개발 키트) 게임의 간단한 예

Microsoft GDK(게임 개발 키트) 게임이 "Win32" 게임임을 설명하기 위해 기본 SDK 프로젝트의 코드 조각을 포함합니다.

. . . .
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE, _In_ LPWSTR lpCmdLine, _In_ int) {
. . . .
  if (FAILED(XGameRuntimeInitialize())) return 1;
. . . .
  // Register class
  WNDCLASSEXA wcex = {};
  wcex.cbSize = sizeof(WNDCLASSEXA);
. . . .
  wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  if (!RegisterClassExA(&wcex)) return 1;

  // Create window
  HWND hwnd = CreateWindowExA(. . . .);
  if (!hwnd) return 1;

  ShowWindow(hwnd, nCmdShow);
  SetWindowLongPtr(hwnd, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(g_game.get()));
. . . .
  // Main message loop
  MSG msg = {};
  while (WM_QUIT != msg.message) {
    if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    } else {
      g_game->Tick();
    }
  }
. . . .
  XGameRuntimeUninitialize();
  return (int) msg.wParam;
}
. . . .
// Windows procedure
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
  auto game = reinterpret_cast<Game*>(GetWindowLongPtr(hWnd, GWLP_USERDATA));

  switch (message) {
    case WM_CREATE:
    break;
. . . .
  }

  return DefWindowProc(hWnd, message, wParam, lParam);
}

// Exit helper
void ExitGame() {
  PostQuitMessage(0);
}

여기에서 볼 수 있듯이 이는 wWinMain, 메시지 루프 및 WndProc을 사용하는 클래식 "Win32" 게임과 같이 보입니다. 차이점은 다음과 같습니다.

  • PC 또는 Xbox에서 게임 런타임(Xbox 라이브에 필요하기 때문에 Xbox의 요건)을 사용하고 있는 경우 XGameRuntimeInitializeXGameRuntimeUninitialize를 호출해야 합니다.
  • Xbox에는 Suspend, Constrain, Resume PLM 상태에 대한 콜백이 있습니다.
  • Xbox는 본체에서 의미가 있는 WM_* 메시지 일부만 지원합니다.

SDK

Microsoft GDK(게임 개발 키트) 게임을 빌드하려면 다음 SDK를 설치해야 합니다.

  • Windows SDK(소프트웨어 개발 키트)
    표준, 공용 20H1 Windows 10 SDK입니다. 여기에서 다운로드할 수 있습니다.

2023년 10월 릴리스를 기준으로 Windows 11 SDK가 대신 필요합니다. 여기에서 다운로드할 수 있습니다.

  • Microsoft 게임 개발 키트

    • Microsoft GDK(게임 개발 키트)는 새로운 "포괄적 SDK"입니다. 현재 여기에는 GRDK(게임 런타임 개발 키트)와 GXDK(게임 확장 개발 키트)가 포함됩니다. 나중에 추가로 다른 게임 SDK도 포함될 예정입니다.

    • GRDK(게임 런타임 개발 키트)에는 MSIXVC와 같이 게임 런타임 기능을 사용하는, PC Xbox용 게임을 개발하는 데 필요한 헤더, 라이브러리, 도구가 포함되어 있습니다. GRDK에는 게임 런타임의 PC 재배포 버전, 개발자 버전도 포함되어 있습니다.

    • GXDK(게임 확장 개발 키트)는 Xbox 개발 키트(XDK)의 Microsoft GDK(게임 개발 키트) 버전입니다. GXDK에는 Xbox용 Microsoft GDK(게임 개발 키트) 게임을 빌드하는 데 필요한 헤더, 라이브러리, 도구 및 Visual Studio 통합이 포함되어 있습니다. 예를 들어, D3D12.x 헤더와 xb* 원격 관리 도구는 GXDK의 일부입니다.

Microsoft GDK(게임 개발 키트)의 SDK 구조에 대한 중요 참고 사항
2020년 5월 GDK부터 Microsoft GDK(게임 개발 키트)에 포함된 업데이트된 Windows 헤더 및 라이브러리가 제거되었습니다. 기능이 이제 Windows SDK 19041 버전에 포함되어 있기 때문입니다. GDK를 사용하여 타이틀을 개발하려면 Windows 19041 SDK(여기서 다운로드할 수 있음) Microsoft GDK(게임 개발 키트)를 설치해야 합니다.

Visual Studio 지원

Microsoft GDK(게임 개발 키트)는 Visual Studio 2019권한 부여 필요 또는 Visual Studio 2022권한 부여 필요를 지원합니다.

개발을 위한 OS 요건

  • 개발 PC: 최근 버전의 Windows 10을 권장하지만 Windows 7 이상이면 개발 플랫폼으로 지원됩니다.

  • PC에서 게임 런타임을 사용하는 테스트 게임: Windows 19H1은 개발 및 소매 시나리오 모두에서 게임 런타임 기능을 사용하는 PC 게임의 최소 Windows OS 버전입니다.

  • Xbox에서 Game OS 및 게임 런타임을 사용하는 테스트 게임:
    Microsoft GDK(게임 개발 키트)를 지원하는 미리 보기 Xbox 복구가 Microsoft GDK(게임 개발 키트) 미리 보기 릴리스에 포함되어 있습니다. Microsoft GDK(게임 개발 키트) 게임은 현재 일반 공급되는 콘솔 릴리스에서 지원되지 않습니다.

Xbox용 Microsoft GDK(게임 개발 키트) 게임 빌드

Microsoft GDK(게임 개발 키트) 내에서 핵심 Win32 게임 API만 대상으로 하는 게임을 빌드하려면 다음을 확인합니다.

  1. Windows 헤더의 WINAPI_FAMILY_GAMES API 파티션을 컴파일하는 중이며 WINAPI_FAMILY_GAMES는 "#defined"입니다. 예를 들어 /D "WINAPI_FAMILY=WINAPI_FAMILY_GAMES"로 빌드합니다.

  2. xgameplatform.lib는 Microsoft GDK(게임 개발 키트)에서 지원하는 API만 포함하므로 표준 Win32 데스크톱 라이브러리(kernel32, user32, gdi32 등)가 아닌 xgameplatform.lib umbrella lib에 연결합니다. 추가로, 모든 기본 라이브러리를 제거하려면 /NODEFAULTLIB 링커 옵션을 지정합니다. 예를 들어, 기본 Xbox 프로젝트 템플릿은 pixevt.lib, d3d12_x.lib, xgameplatform.lib, xgameruntime.lib과 연결되며 /NODEFAULTLIB를 지정합니다.

이 단계를 따르지 않으면 Xbox의 게임 OS에서 작동하지 않는 API를 사용할 위험이 있습니다.

Microsoft GDK(게임 개발 키트)만 대상으로 하는 게임을 만드는 것에 대해 더 자세히 알아보려면 아래 PC용 게임 배송Xbox 본체용 게임 배송을 참조하세요.

자세한 내용은 GDK로 새 타이틀 개발을 참조하세요.

게임 런타임

게임 런타임은 Microsoft 플랫폼에서 현대적인 장치 호환 게임을 구현하는 데 도움이 되는 구성 요소 세트입니다. 게임 런타임에는 다음이 포함되어 있습니다.

구성 요소 역할
MSIXVC Xbox 본체와 PC를 모두 지원하는 Xbox 패키징 시스템에 대한 업데이트. MSIXVC에 대한 자세한 내용은 MSIXVC를 사용한 패키징을 참조하세요.
설치 관리 스트리밍 설치 및 지능형 제공
연결된 저장소 Microsoft GDK(게임 개발 키트)에서 "게임 저장"이라는 클라우드 기반 게임 저장
스토어 상거래 앱 내 구매 등
접근성 캡션, 텍스트 음성 변환, 음성 텍스트 변환
게임 초대 게이머가 이미 진행 중인 멀티 플레이어 세션에 참가할 수 있도록 설정
표준 게임 UI Xbox 서비스를 비롯한 일반적인 게임 워크플로에 대한 표준화된 UI

Windows PC:

  • 게임 런타임 사용은 선택 사항입니다. 현재 이 기능은 Microsoft Store에서 출시하는 게임에만 지원됩니다.

  • Microsoft Store에서 Win32 게임을 출시하려면 MSIXVC를 사용하여 패키징해야 하며, 이를 위해서는 게임 런타임이 필요합니다.

  • 게임 런타임의 다른 구성 요소를 활용할지는 개발자가 결정합니다. 예를 들어, 연결된 저장소를 사용하여 게임 진행 상황을 클라우드에 저장할 수 있습니다.

  • Gaming Runtime은 Microsoft Store에서 서비스 가능한 패키지로 출시됩니다. 이렇게 하면 Windows의 새 버전에 종속되지 않고 게임이 런타임을 사용할 수 있게 됩니다. 또한 게임 콘텐츠를 업데이트하지 않아도 런타임에 보안 수정 사항과 같은 중요 업데이트를 할 수 있다는 장점이 있습니다.

  • 게임 런타임에는 Windows 10 19H1 릴리스가 필요합니다. 게임 런타임에 새로운 기능을 추가할 때, 우리는 이후의 Windows 릴리스에 의존하지 않는 것을 목표로 삼았습니다.

Xbox:

  • Gaming Runtime을 사용해야 합니다. 연결된 저장소를 사용하여 MSIXVC로 패키징하고 Xbox 서비스에 대한 지원은 Xbox에서 게임을 릴리스하기 위한 요구 사항입니다.

  • 게임 런타임은 Game OS의 일부로 제공됩니다.

PC의 게임 런타임 아키텍처

PC의 게임 런타임 아키텍처

XGameRuntime.lib: 게임에 컴파일됩니다. 게임 런타임의 버전 경계입니다.

게임 런타임 클라이언트: 게임 프로세스에 로드됩니다. 게임 런타임 서비스와의 통신을 관리합니다. Windows PC에서는 Microsoft Store를 통해 제공됩니다. Xbox에서는 Game OS의 일부로 제공됩니다.

GRTS(게임 런타임 서비스): 별도 프로세스로 실행합니다. PC에서는 Microsoft Store를 통해 제공됩니다. Xbox에서는 Game OS의 일부로 제공됩니다.

게임 런타임 UI 앱: UI를 표시하도록 게임 런타임 클라이언트 또는 GRTS가 게임을 대신해 호출합니다. Windows PC에서는 Microsoft Store를 통해 제공됩니다. Xbox에서는 복구 과정의 일부로 제공됩니다.

Windows PC에는 게임 런타임 클라이언트, 게임 런타임 서비스의 설치된 한 가지 버전이 있습니다. GameRuntime UI 앱도 있습니다. 이는 게임과 독립적으로 업데이트되며 게임 런타임의 다른 버전에서 역 호환성을 유지합니다.

Xbox에서 게임 런타임 클라이언트와 게임 런타임 서비스는 Game OS의 일부로 제공되며 전달되며 Game OS와 버전이 지정됩니다. GameRuntime UI 앱은 복구 과정의 일부로 제공되고 복구와 함께 버전이 지정됩니다. Xbox의 버전 지정과 Game OS에 대한 자세한 내용은 Xbox 본체용 게임 배송을 참조하세요.

Windows PC용 게임 배송

Microsoft GDK(게임 개발 키트)는 게임 개발자가 PC와 Xbox 전체에서 부트스트랩 개발과 코드 재사용 극대화를 목표로 사용할 수 있는 WINAPI_FAMILY_GAMES API 하위 집합과 우산 라이브러리(xgameplatform.lib)를 제공합니다(예: 미들웨어 및 라이브러리). 하지만 어떤 PC 게임도 Microsoft GDK(게임 개발 키트) API 노출 영역에 제한되도록 만들 것을 요구하지는 않습니다.

PC 게임 개발자는 PC의 전체 능력을 자유롭게 활용할 수 있습니다. 여기에는 기존의 모든 Win32 API 및 타사 확장 라이브러리뿐만 아니라 커널 모드 드라이버에 의존하는 고급 서비스(예: 치트 방지)도 포함됩니다. 게임과 게임 개발자들이 PC에서 할 수 있는 것을 제한하는 것은 Microsoft GDK(게임 개발 키트)의 목표가 아니며 앞으로도 그렇지 않을 것입니다. 즉, 우리는 여러분이 항상 해왔던 것처럼 Win32 PC 게임을 계속 개발, 제작, 출시하기를 바랍니다.

우리는 단지 Win32 PC 게임과 미들웨어와 의존성을 더 쉽게 받아들이고, MSIXVC를 사용하여 패키징하고, Microsoft Store에 출시하는 것을 더 쉽게 만들려고 합니다. MSIXVC를 사용한 게임 패키징에 대한 자세한 내용은 MSIXVC를 사용한 패키징을 참조하세요. 그런 다음 Microsoft Store에서 PC 게임을 배송하는 경우 Desktop API 표면 영역의 전체 기능을 계속 사용할 수 있을 뿐만 아니라 Gaming Runtime의 기능도 활용할 수 있습니다. 스트리밍 설치, 연결된 저장소, 액세스 가능한 게임 구축 지원, Xbox 서비스에 대한 지원 통합을 통한 Xbox 소셜 네트워크 지원 등이 있습니다.

게임 런타임의 다른 기능을 사용하려면 창 디스플레이 모드 및 타이틀 호출 가능 사용자 인터페이스 대화 상자를 참조하여 대화 상자 환경이 게임과 상호 작용하는 방식을 이해하세요.

MSIXVC로 패키징된 Windows PC 게임

Xbox 본체용 게임 배송

Xbox에서 게임 개발자는 Microsoft GDK(게임 개발 키트) WINAPI_FAMILY_GAMES API 하위 집합을 목표로 하는 게임 버전을 제작해야 합니다. 그리고 현재의 Xbox One ERA와 마찬가지로 Direct3D 12(D3D12.x)와 Xbox 오디오, 미디어 확장을 위한 Xbox 확장을 대상으로 해야 합니다.

또한 현재의 Xbox One ERA와 마찬가지로 Microsoft GDK(게임 개발 키트) 게임은 게임에 최적화된 별도의 "Game OS"에서 실행되며, 게임에서 사용할 수 있는 GPU, CPU, 메모리 리소스가 보장되고, 모범 사례를 따를 경우 I/O 성능 비율도 보장됩니다.

Microsoft GDK(게임 개발 키트)의 버전 모델은 Xbox One ERA 모델과 유사합니다. 각 게임은 특정 버전의 Game OS에 연결됩니다.

Microsoft GDK(게임 개발 키트) 게임은 현재 세대와 미래 세대의 Xbox 본체에서 지원됩니다.

중요: Xbox에서 Microsoft GDK(Game Development Kit)는 D3D12.x만 지원합니다.
D3D11.x는 지원되지 않습니다. D3D11.x를 사용하는 게임이 있는 경우 Microsoft GDK(게임 개발 키트)로 이동하는 과정의 일부로 D3D12.x로 이동해야 합니다. Windows PC에서는 D3D11과 D3D12가 모두 지원됩니다.

XBOX ONE ERA 및 Microsoft GDK(게임 개발 키트)의 경우 D3D12.x에는 사소한 차이점만 있습니다. 따라서 이미 D3D12.x 게임이 있다면, 모든 그래픽 코드는 큰 변경 없이 Microsoft GDK(게임 개발 키트)로 전환할 수 있습니다. 즉, Microsoft GDK(게임 개발 키트)를 준비하는 가장 좋은 방법은 Xbox One ERA 게임을 D3D12.x로 이동하는 것입니다.

MSIXVC로 패키징된 Xbox 게임

Microsoft GDK(게임 개발 키트) 비동기 모델

Microsoft GDK(게임 개발 키트)는 비동기 API를 위한 새로운 패턴을 구현합니다. 게임 개발자로부터 받은 피드백을 처리하는 것이며 Xbox One ERA 프로그래밍 모델의 일부로 비동기 패턴을 구현한 것입니다. 이 새로운 패턴은 게임에 통합하기가 훨씬 쉽고, 사용자가 요청한 높은 수준으로 통제할 수 있습니다. 또한 다음이 지원됩니다.

  1. 완료 콜백 함수(또는 람다)를 사용하는 비동기
  2. 폴링을 사용하여 비동기 호출이 완료된 시점을 파악
  3. 완료될 때까지 비동기 호출을 차단
  4. 비동기 작업이 실행되는 시간 및 장소 제어
  5. 완료된 콜백이 실행되는 시간 및 장소 제어

콜백을 사용하는 새로운 비동기 패턴의 매우 간단한 예입니다.

  XAsyncBlock* b = new XAsyncBlock;
  ZeroMemory(b, sizeof(XAsyncBlock));
  b->context = this;
  b->queue = queue;
  b->callback = [](XAsyncBlock* async)
  {
    UpdateStatus status;
    if (SUCCEEDED(QueryUpdateStatusAsyncResult(async, &status)))
    {
      printf("Update Status : %d\r\n", status);
    }
    delete async;
  };
  QueryUpdateStatusAsync("foo", b);

새로운 비동기 패턴을 사용하여 차단 호출을 하는 간단한 예입니다.

  XAsyncBlock* b = new XAsyncBlock;
  ZeroMemory(b, sizeof(XAsyncBlock));

  if (SUCCEEDED(QueryUpdateStatusAsync("foo", b))) {

    //Block until the call returns
    if (SUCCEEDED(XAsyncGetStatus(b, true /*wait*/))) {

      UpdateStatus status;
      if (SUCCEEDED(QueryUpdateStatusAsyncResult(b, &status)))
      {
        printf("Update Status : %d\r\n", status);
      }
    }
  }

  delete b;

새로운 비동기 패턴에 대한 자세한 내용은 다음을 참조하세요.

Xbox의 Microsoft GDK(게임 개발 키트) 메모리 모델

현재 Xbox One ERA 메모리 관리자는 게임의 성능 요구를 충족하고, XMemAlloc권한 부여 필요 API는 메모리 할당을 추적하고 제어할 수 있습니다. 그러나 Xbox에서 게임의 메모리 사용을 최적화하는 데 도움이 되도록 향상시키고자 합니다.

피드백은 게임을 대신하여 Game OS에서 실행되는 시스템 프로세스에서 얼마나 많은 메모리가 사용될지 이해하고 예측하는 데 문제가 있음을 시사합니다. 사용되는 메모리의 양은 사전에 예측하기가 어렵고 Xbox One 소프트웨어 개발 키트 버전마다 다릅니다. 결과적으로 시스템 프로세스, 메모리 사용을 모델링하는 개발 시간을 소요해야 하고, Game OS에서 게임에 사용할 수 있는 메모리를 완전히 사용할 수 없습니다.

우리는 이 문제를 해결했을 뿐만 아니라, XMemAlloc권한 부여 필요 등을 통해 익숙한 Xbox One ERA 메모리 모델을 크게 바꾸지 않고서도 해결했습니다. 시스템 프로세스를 대신하여 진행하는 메모리 할당은 이제 고정된 크기를 가지며 게임에 주어진 메모리의 일부가 아닌 별도의 메모리 파티션으로 격리됩니다.

이제 게임에 사용할 수 있는 메모리의 양을 정확하게 예측할 수 있으며, 시스템 프로세스를 사용하기 위해 메모리 버퍼를 예약하지 않아도 할 수 있습니다. 이는 Game OS에서 게임에 사용할 수 있는 메모리를 완전히 사용할 수 있도록 도와줍니다.

새로운 메모리 모델에 대한 자세한 내용은 메모리 개요권한 부여 필요를 참조하세요.

MSIXVC를 사용한 패키징

MSIXVC는 이전에 Xbox용으로 제작된 패키징 시스템의 업데이트로, Windows 10의 PC 게임에도 사용할 수 있습니다. MSIXVC에는 스트리밍 설치, 지능형 전달, 차등 콘텐츠 업데이트와 같이 현재 지원되는 모든 Xbox 기능이 포함되어 있습니다. 이는 다음을 의미합니다.

  • Xbox Game 개발자의 경우 기술과 도구가 동일하므로 필요한 변경 사항이 없습니다. 하던 일을 계속하세요!
  • PC 게임 개발자의 경우 Xbox용으로 만든 기능에 더해, PC 게임이 C 런타임, D3D 재배포 패키지, 맞춤형 게임 시작 프로그램, 게임 편집기 도구, 치트 방지 소프트웨어와 같은 재배포 가능 구성 요소를 설치할 수 있게 하는 새로운 기능도 이용할 수 있습니다.

PC에서는 아주 간단하게 기존 Win32 게임을 가져와 MSIXVC를 사용하여 패키징할 수 있습니다.

  1. 파트너 센터에서 제품 ID를 가져옵니다. 시작하려면 Windows 앱 및 게임 퍼블리싱을 참조하세요.
  2. MicrosoftGame.config를 만들고, 게임 실행 파일과 함께 루트 폴더에 넣습니다.
  3. 게임의 Visual C/C++ 런타임 의존성을 확인하고, 존재한다면 MicrosoftGame.config에 나열합니다.
  4. Microsoft GDK(게임 개발 키트)의 makepkg 도구를 사용하여 MSIXVC 패키지를 만듭니다.
  5. Microsoft GDK(게임 개발 키트)의 wdapp 도구를 사용하여 Windows 19H1 PC에서 패키지를 배포하고 테스트합니다.
  6. 패키지를 파트너 센터에 제출합니다.

자세한 내용은 패키징을 참조하세요.

Microsoft GDK(게임 개발 키트) 개발자 도구

Xbox 개발을 위해 다음과 같이 현재 지원하는 것과 동일한 도구 세트를 지원합니다.

  • xb* 원격 관리 명령줄 도구, Xbox 관리자, xbWatson권한 부여 필요
  • Visual Studio 2019 및 Visual Studio 2022
  • 게임 성능 조정을 위한 Xbox용 PIX

우리의 중점은 신뢰성 향상에 있습니다. 특히 Visual Studio에서 게임 시작과 속도의 신뢰성과 "F5"의 신뢰성에 중점을 두었습니다. 또한 임의로 오랜 시간 동안 타이밍 캡처를 취하는 새로운 능력을 포함하여 PIX에 대한 중요한 기능 개선을 했습니다.

PC 게임 개발을 위해 지금 쓰는 것과 정확히 같은 도구와 기술을 사용할 수 있을 것으로 기대하고 있습니다.

  • MSIXVC 패키지를 만들고 테스트하는 데 지원해주는 “PC에 새로운” 도구들이(makepkg, wdapp) 있습니다.

  • 장기 실행 타이밍 캡처 개선을 포함하여 Windows용 PIX를 계속 향상시킬 것입니다.

  • VRS(가변 속도 셰이딩), 하드웨어 광선 추적, 기타 최첨단 D3D12 기능도 계속 지원할 것입니다.

나아가 우리는 Win32 게임 개발 도구의 활발한 에코시스템에 의존하고 있습니다.