> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GDK 초기화

> Steamworks에서 GDK로 타이틀을 포팅할 때 MicrosoftGame.config를 설정하고, Gaming Runtime과 XSAPI를 초기화하고, 사용자를 XBOX Live에 로그인시키세요.

Steamworks를 게임의 프로젝트에 추가한 후 사용을 시작하려면 API를 초기화하기 위해 `SteamAPI_Init` 함수를 호출해야 합니다. 선택적으로 `SteamAPI_RestartAppIfNecessary`를 호출해 필요한 경우 앱을 Steam을 통해 다시 실행할 수 있습니다. XBOX Game Development Kit(GDK)의 초기화는 조금 더 관여도가 높습니다. Steam처럼 게임을 실행하고 다양한 게이밍 서비스와 통신하는 통합 앱이 없기 때문입니다.

XBOX Game Development Kit(GDK)의 API 사용을 시작하려면 다음 단계를 사용해야 합니다.

1. 프로젝트에 *MicrosoftGame.config* 파일을 추가합니다.
2. Gaming Runtime 서비스를 초기화합니다.
3. 사용자 신원, 클라우드 저장, 업적 등을 위해 XBOX Live로 호출하기 위해 XBOX Services API를 초기화합니다.
4. 사용자를 XBOX Live에 로그인시킵니다. 로그인 성공 후 반환된 핸들과 XBOX User ID(XUID)를 향후 사용을 위해 저장합니다.

<Note>
  Steam에서는 Steam 런처가 게임이 실행될 때 사용자의 계정 정보를 자동으로 주입하므로 로드 시점에 사용자의 Steam ID와 모든 API에 접근할 수 있습니다. XBOX Live API는 여러 런처에서 사용하는 게임에서 사용되므로, 이러한 것을 무료로 얻을 수 없습니다. 실행 시 사용자를 수동으로 로그인시켜야 합니다.
</Note>

1단계를 수행하는 방법에 대한 정보는 [MicrosoftGame.config 개요](/build/core-features/common/game-config/MicrosoftGameConfig-Overview)를 참조하세요.

2\~4단계를 수행하는 방법은 [XBOX Live API 시작하기](/services/xbox-services/index)에서 확인할 수 있으며(또는 다음과 같이 요약됨), 그 항목의 XSAPI 정리 섹션에서 설명하는 동작도 반드시 구현하세요. Gaming Runtime과 XBOX Services API가 초기화된 후 사용자를 XBOX Live에 로그인시킬 수 있습니다. 비워두면 자동으로 생성되므로 `XTaskQueue`를 생성할 필요는 없습니다.

```cpp theme={null}
#include <XGameRuntimeInit.h>
#include <XTaskQueue.h>
#include <xsapi-c/services_c.h>

// ...

void InitializeXboxLive()
{
    // ...
    HRESULT hr = XGameRuntimeInitialize();
    if (FAILED(hr))
    {
        // 오류 처리: Gaming Runtime 서비스를 초기화할 수 없음.
    }

    XblInitArgs xblArgs = {};
    xblArgs.scid = "00000000-0000-0000-0000-000000000000"; // Partner Center 웹 포털에서 얻은 SCID를 여기에 추가하세요.

    HRESULT hr = XblInitialize(&xblArgs);
    if (FAILED(hr))
    {
        // 오류 처리: XBOX Live를 초기화할 수 없음.
    }
    // ...
}
```

## 사용자를 XBOX Live에 로그인시키기

[XUserAddAsync API](/build/core-features/common/user/xuser_howto_best_practice_signing_in)를 사용해 사용자를 XBOX Live에 로그인시킵니다. 게임에 처음 로그인하는 경우 게임이 요청하는 권한 목록이 표시됩니다. XBOX Live 계정에 접근하려면 이 권한을 명시적으로 승인해야 합니다.

로그인에 성공한 후에는 [`XUserAddResult`](/reference/system/xuser/xuser_members) 함수에 전달한 `XUserHandle` 참조를 사용할 수 있습니다. 이는 게이머태그, 게이머 사진, 로그인 상태, 연령 그룹, 권한과 같은 해당 XBOX Live 사용자에 대한 정보를 얻는 데 사용할 수 있습니다.

사용자가 처음 로그인한 후에는 마지막으로 게임을 실행한 이후로 해결해야 할 UI 프롬프트(예: 새 개인정보 처리방침)가 없다면 사용자의 어떠한 조치 없이(즉, 조용히) 성공적으로 로그인할 수 있어야 합니다. 그러나 신원 접근을 얻으려면 여전히 이러한 API 호출을 해야 합니다.

XBOX Live API를 호출하려면 `XblContextHandle`이 필요합니다. [XblContextCreateHandle](/reference/live/xsapi-c/xbox_live_context_c/xbox_live_context_c_members) 함수를 사용해 `XUserHandle`로 `XblContextHandle`을 얻을 수 있습니다.


## Related topics

- [Steam 포팅 가이드 개요](/ko/build/steam-porting-guide/overview.md)
- [네트워크 초기화 상태 감지](/ko/build/console-features/networking/initialization-connectivity-networking.md)
- [대상 세션 초기화 및 QoS](/ko/services/xbox-services/multiplayer/matchmaking/concepts/live-matchmaking-target-session.md)
- [XGameStreaming](/ko/reference/system/xgamestreaming/xgamestreaming_members.md)
- [GDK를 커스텀 C/C++ 엔진에 통합](/ko/build/gdk-and-engines/custom-engine.md)
