이 가이드에서는 2025년 10월 GDK(버전 2510)를 사용하여 PlayFab Game Saves를 구현하는 방법에 대해 설명합니다. Game Saves를 처음 사용하든 이전 구현에서 마이그레이션하든 이 문서는 Steam Deck 지원에 특별한 주의를 기울여 필수 요구 사항 및 설정 지침을 제공합니다.
구현 요구 사항 개요
2025년 10월 GDK로 PlayFab Game Saves를 구현할 때 네 가지 주요 구성 요소를 이해해야 합니다.- 새 GDK 폴더 레이아웃: 플랫폼 중심의 SDK 디렉터리 구조
- XGameRuntime 통합: 특정 배포 요구 사항이 있는 교차 플랫폼 런타임
- PlayFab Unified SDK: 모든 PlayFab 구성 요소를 위한 최신 SDK 아키텍처
- 기타 Unified SDK 구성 요소: 업데이트된 Party 및 Multiplayer 구성 요소(사용된 경우)
Game Saves를 처음 사용하시나요? Game Saves 개요 및 빠른 시작 가이드로 시작하여 기본을 이해한 다음 2025년 10월 GDK 관련 구현 세부 정보를 위해 여기로 돌아오세요.
- GDK 폴더 레이아웃 및 경로 구성
현재 GDK 구조
2025년 10월 GDK는 플랫 플랫폼 중심의 디렉터리 구조를 사용합니다. 이 레이아웃을 이해하는 것은 빌드 시스템을 올바르게 설정하는 데 필수적입니다. 2025년 10월 GDK 레이아웃:$(GDK)\GRDK\ 및 $(GDK)\GXDK\)가 교체되었습니다. 이에 따라 빌드 스크립트를 업데이트하세요.
빌드 시스템 설정
필수 경로 구성
올바른 플랫폼별 경로를 사용하도록 빌드 시스템을 구성합니다.빌드 시스템 구성 예제
CMake 설정:Gaming.Desktop.x64 플랫폼 대신 기본 x64 플랫폼, CMake 또는 다른 빌드 시스템을 사용하여 Windows용으로 빌드하는 경우
_GAMING_DESKTOP을 직접 정의해야 합니다. Gaming.Desktop.x64 플랫폼은 이를 자동으로 정의합니다. 이 정의가 없으면 SDK 헤더가 GDK가 아닌 Windows 플랫폼용으로 컴파일되어 PFInitialize와 같은 함수가 선언되지 않으며, 이로 인해 C3861: 'PFInitialize': identifier not found와 같은 오류가 발생합니다. 자세한 내용은 Microsoft Game Development Kit (GDK)와 함께 x64 플랫폼 사용을 참조하세요.플랫폼 지원 세부 정보
- XBOX: 최근 XBOX 콘솔 세대 모두에 대해
xbox폴더를 사용합니다. - Windows: 모든 Windows 플랫폼(PC, Steam PC, Steam Deck-Proton)은
windows폴더를 사용합니다. - Steam Deck: SteamOS에서 실행되지만 Proton 에뮬레이션과의 호환성을 위해
windows폴더를 사용합니다.
구현 단계
-
빌드 시스템 구성
- 새 GDK 구조를 사용하여 포함 및 라이브러리 경로 설정
- 여러 플랫폼을 대상으로 하는 경우 플랫폼 감지 논리 추가
- 모든 대상 플랫폼에서 컴파일 테스트
-
Game Saves 통합 유효성 검사
- 필요한 모든 라이브러리가 올바르게 연결되는지 확인
- 대상 플랫폼에서 기능 테스트
- PlayFab 서비스 연결 확인
- XGameRuntime 통합
XGameRuntime 이해
XGameRuntime은 모든 플랫폼에서 XBOX Live 서비스 및 Game Saves 기능의 기반을 제공합니다. 알아야 할 사항은 다음과 같습니다.핵심 구성 요소
xgameruntime.lib(가져오기 라이브러리)- 컴파일 시 게임 프로젝트에 연결됨
- 런타임 DLL을 자동으로 찾아 로드
- 서비스 검색 처리(로컬 대 시스템)
- XBOX Live 및 Game Saves 기능 구현
- 위치:
{GDK}\windows\bin\xgameruntime.dll - Steam 빌드에 중요: 게임과 함께 배포되어야 함
구현 요구 사항
- 기본 통합
모든 Game Saves 구현에는 XGameRuntime 초기화가 필요합니다.
- Steam 플랫폼 요구 사항
Steam 빌드에 필수:
Steam용으로 빌드할 때 게임 디렉터리에 xgameruntime.dll을 반드시 포함해야 합니다. 이 DLL이 없으면 Steam Deck에서 실행할 때 다음과 같은 문제가 발생합니다.
- XBOX Live 인증이 실패합니다.
- Game Saves 기능을 사용할 수 없습니다.
Microsoft Store 빌드는 시스템에서 XGameRuntime을 자동으로 로드하고 DLL 배포가 필요하지 않습니다.
- 자동화된 DLL 배포
CMake 구성:
플랫폼별 런타임 동작
Steam Deck 지원은 특히 로컬 DLL 배포를 필요로 합니다. 시스템은 다른 플랫폼처럼 시스템 서비스로 되돌릴 수 없습니다. 또한 동기화 엔진이 프로세스 내부에서 실행되므로 게임은 종료 전에 중요한 저장 데이터가 동기화되었는지 확인해야 합니다.
- PlayFab Unified SDK 통합
PlayFab Unified SDK란 무엇인가요?
PlayFab Unified SDK는 모든 PlayFab 구성 요소를 단일 아키텍처로 통합하는 최신 통합 SDK입니다. Game Saves는 이제 이 통합 시스템의 일부로서 다음을 제공합니다. Game Saves 개발의 이점:- 모든 PlayFab 구성 요소에 걸친 통합 메모리 관리
- 일관된 비동기 작업 패턴
- 통합된 추적 및 진단
- 모듈식 구성 요소 로드(필요한 것만 포함)
필수 SDK 구성 요소
Game Saves 구현에는 다음 Unified SDK 구성 요소가 필요합니다. 필수 구성 요소:- libHttpClient: 교차 플랫폼 HTTP/WebSocket 통신
- PlayFab Core: 인증, 엔터티 관리 및 구성
- PlayFab GameSave: Game Saves 특정 기능
- PlayFab Services: LiveOps, 계정 관리 및 기타 진행 시스템용 공유 서비스(다른 PlayFab 서비스를 사용하는 경우 권장)
라이브러리 및 DLL 요구 사항
링크에 필요한 라이브러리
배포에 필요한 DLL
빌드 시스템 구성
MSBuild 설정
Unified SDK에 연결하도록 Visual Studio 프로젝트를 구성합니다.$(GDK)\GRDK\...\include와 같은 이전 경로를 위에 표시된 새 구조로 바꿉니다.
CMake 설정
CMake 기반 프로젝트의 경우 종속성 및 배포를 구성합니다.코드 구현
필수 헤더
프로젝트에 필요한 Unified SDK 헤더를 포함합니다.초기화 순서
적절한 Game Saves 설정을 위해 다음 초기화 순서를 따르세요.적절한 정리 순서
애플리케이션을 종료할 때 리소스를 역순으로 정리합니다.PlayFab Services 및 Core의 적절한 리소스 해제를 위해 항상 비동기 정리 패턴을 사용하세요.
- 기타 PlayFab Unified SDK 구성 요소
Party 및 Multiplayer API 변경 사항
Game Saves 기능에 직접적으로 필요하지는 않지만, 2025년 10월 GDK에는 Unified SDK의 일부로 PlayFab Party 및 PlayFab Multiplayer 구성 요소의 업데이트된 버전도 포함됩니다. 이러한 구성 요소에는 통합 인증 시스템과 더 잘 통합되는 새로운 API가 있습니다.독립형 SDK에서 주요 변경 사항
인증 통합:- 레거시 패턴: 이전에는 독립형 Party/Multiplayer SDK를 사용하는 타이틀은 PlayFab 로그인 결과에서
EntityID및EntityToken을 수동으로 관리하고 Party/Multiplayer API에 전달해야 했습니다. - Unified SDK 패턴: Party 및 Multiplayer는 이제
PFEntityHandle을 직접 수락하여 수동 토큰 관리를 없앱니다.
- Party: 사용자 인증을 위해
PFEntityHandle을 수락하는 새 API - Multiplayer: 로비 및 매치메이킹 작업을 위해
PFEntityHandle을 수락하는 새 API
- 자동 토큰 새로 고침이 포함된 단순화된 인증 흐름
- 모든 PlayFab 구성 요소에서 일관된 오류 처리 패턴
- 통합 메모리 관리 및 비동기 작업 패턴
Party 및 Multiplayer 구성 요소: 게임에서 PlayFab Party 또는 Multiplayer를 사용하는 경우 통합을 개선하기 위해
PFEntityHandle을 직접 수락하는 새 통합 API로의 마이그레이션을 고려하세요. 하지만 이는 Game Saves 기능에는 필요하지 않습니다. Game Saves만 사용하는 경우 섹션 4를 건너뛸 수 있습니다.
- Steam Deck 구현
PlayFab Game Saves용 Steam Deck 지원에는 사용자 지정 인증 흐름, 포괄적인 UI 콜백 및 신중한 동기화 전략을 포함하여 표준 PC 빌드를 넘어서는 상당한 추가 구현이 필요합니다.
Steam Deck 구현 복잡성: Steam Deck 통합에는 사용자 지정 인증 흐름, UI 콜백 구현 및 중요한 동기화 동작 차이가 포함됩니다. 구현 요구 사항의 복잡성과 길이로 인해 Steam Deck 구현은 자체 전용 가이드로 되어 있습니다.
주요 Steam Deck 고려 사항
중요한 동기화 동작 차이:- Windows PC: Game Saves는 프로세스 외부에서 실행되며 게임 종료 후에도 계속 동기화할 수 있습니다.
- Steam Deck: Game Saves는 프로세스 내부에서만 실행되며 게임이 종료되면 동기화가 중지됩니다.
- 모든 Unified SDK DLL을 Steam 빌드와 함께 배포해야 함
- UI 콜백이 포함된 사용자 지정 XUser 인증 흐름
- 비 소매 샌드박스 테스트를 위한 레지스트리 구성
- 데이터 손실을 방지하기 위한 잦은 동기화 패턴
- 저장 데이터를 자주 동기화(각 레벨, 체크포인트 또는 중요한 진행 후)
- “게임 종료” 확인을 표시하기 전에 항상 동기화
- 게임 플레이 전환 중 백그라운드 동기화 고려
- 종료 전 완료를 보장하기 위해 동기화 진행률 표시기 구현
전체 Steam Deck 구현
다음을 포함한 포괄적인 Steam Deck 구현 세부 정보:- 자세한 인증 흐름 설정
- 전체 UI 콜백 구현
- 단계별 초기화 순서
- 문제 해결 가이드
- 샘플 코드 참조
- 구현 검사 목록
시작하기(새 구현)
- 2025년 10월 GDK 설정 및 설치 확인
- 올바른 GDK 경로 및 라이브러리 참조로 빌드 시스템 구성
- 프로젝트 링크 구성에 Unified SDK 라이브러리 추가
- 소스 코드에 필수 헤더 포함
- Unified SDK 패턴에 따라 초기화 순서 구현
- Steam 빌드용 DLL 배포 설정(필수 4개 DLL, 선택 1개)
- 대상 플랫폼에서 기본 기능 테스트
마이그레이션(기존 구현)
- 이전 GDK 구조에서 새 레이아웃으로 빌드 시스템 경로 업데이트
- 독립형 라이브러리를 Unified SDK 구성 요소로 교체
- 새 Unified SDK 헤더를 사용하도록 헤더 포함 업데이트
- 새 Unified SDK API를 사용하도록 초기화 순서 수정
- 적절한 비동기 정리 패턴으로 정리 순서 업데이트
- Steam 배포에 추가 DLL 추가(1개 DLL → 4-5개 DLL)
- 마이그레이션 후 기능이 유지되는지 확인
빌드 시스템 구성
- 포함 경로:
$(GDK)\windows\include(또는 플랫폼 상응)로 설정 - 라이브러리 경로:
$(GDK)\windows\lib\x64(또는 플랫폼 상응)로 설정 - 링크 라이브러리: 링커 종속성에 필요한 .lib 파일 추가(필수 4개, 선택 1개)
- DLL 배포: Steam 빌드용 자동 복사 구성
- 플랫폼 감지: 여러 플랫폼용으로 빌드하는 경우 논리 추가
코드 구현 작업
- 헤더: 필요한 모든 Unified SDK 헤더 포함
- 초기화: 적절한 5단계 초기화 순서 구현
- 오류 처리: 각 초기화 단계에 대한 적절한 오류 확인 추가
- 정리: 비동기 패턴으로 역순 정리 구현
- 구성: 하드코딩된 값을 PlayFab 타이틀 ID 및 엔드포인트로 교체
테스트 요구 사항
- Windows PC: Game Saves 기능 확인
- Steam Deck: Steam Deck 구현 가이드를 사용한 전체 구현
- Microsoft Store: 기능 회귀 없음 확인
- 교차 플랫폼: 모든 플랫폼(PC, Steam Deck, XBOX) 간의 저장 동기화 테스트
- 리소스 및 지원
문서 링크
샘플 코드 참조
- Windows Game Saves 샘플: PlayFabGameSaveSample-Windows
GameSaveIntegration.cpp/.h- 핵심 Game Saves 통합SteamIntegration.cpp/.h- Steam Deck 특정 구현(Steam Deck 가이드 참조)GameSaveIntegrationUI.cpp/.h- UI 콜백 구현(Steam Deck 가이드 참조)
