다음을 통해 공유


PC를 위한 코드 없는 클라우드 저장

PC Game Pass로 이식되는 일부 게임에는 코드 없는 클라우드 저장 솔루션이 필요할 수 있습니다. 이에 대한 좋은 예는 다음과 같습니다.

  • 게임은 x86이며 패키징 외부에서 GDK를 직접 사용할 수 없습니다.
  • Unreal이 포함된 Blueprint 또는 Unity가 포함된 Bolt와 유사한 것을 사용하여 개발자 없이 게임이 생성되었을 수 있습니다.

코드 없는 클라우드 저장을 사용하면 게임이 표준 Win32 파일 IO API를 사용하여 원하는 저장 디렉토리에서 읽고 쓰기만 하면 동기화가 자동으로 처리됩니다. 게임은 동기화 및 업로드를 처리하기 위해 특별한 코드를 작성할 필요가 없습니다. 동기화는 게임 실행 전에 발생합니다.

PC의 게임이 더 이상 활성화되지 않으면 코드 없는 클라우드 저장이 업로드됩니다. 업로드는 다음과 같은 경우에 발생합니다.

  • 게임이 종료되었습니다
  • 저장이 추적되는 사용자가 로그아웃되었습니다.
  • PC에서 전원 상태 변경이 발생합니다.
  • 게임이 백그라운드에 있거나 게임이 지정된 저장 영역에 새로운 쓰기를 수행하지 않은 경우 30분이 경과했습니다.

코드 없는 클라우드 저장 솔루션은 XGameSaveFiles를 기반으로 구축되었으며 파일 크기 및 사용자별 저장 공간 제한과 관련된 모든 제한 사항을 공유합니다. 파일은 64MB(XGameSave 또는 Connected Storage 간에 상호 운용이 필요한 경우 16MB)로 제한됩니다. 기본적으로 사용자당 스토리지는 256MB로 제한됩니다. 더 큰 사용자별 스토리지 제한이 필요한 게임은 DPM과 함께 작동하여 예외를 요청할 수 있습니다.

참고 항목

디렉터리 및 파일 이름에 대한 특정 명명 규칙 및 문자 제한이 있습니다. 자세한 내용은 XGameSaveFiles를 참조하세요.

코드 없는 클라우드 저장은 PC에서만 지원됩니다. 사용자가 게임을 시작하기 전에 항상 로그인하도록 하려면 게임에서 단순화된 사용자 모델(NDA 항목)권한 부여 필요도 선택해야 합니다. 사용자가 게임에 로그인할 수 없으면 게임을 실행할 수 없습니다. 사용자가 게임 플레이 중 로그아웃하면 게임이 종료됩니다.

코드 없는 클라우드 저장 활성화

코드 없는 클라우드 저장을 활성화하려면 개발자가 microsoftgame.config를 수정해야 합니다. 그들은 단순화된 사용자 모델을 활성화하고, 저장 파일을 쓰고 읽을 루트 폴더를 지정하고, 게임의 해당 SCID를 제공해야 합니다.

<Game configVersion="1">
   <Identity Name="SampleNameOne" Publisher="CN=NoPublisher"/>
   <SaveGameStorage>
      <NoCodePCRoot RelativeTo="SavedGames">test\path</NoCodePCRoot>
      <SCID>DF9D8061-4790-4B84-86B4-CD060B00B4DD</SCID>
      <MaxUserQuota>256</MaxUserQuota>
   </SaveGameStorage>
   <!-- much content removed -->
   
   <!-- Must also opt into requiring a default user at launch -->
   <AdvancedUserModel>false</AdvancedUserModel>
</Game>

NoCodePCRoot로 지정된 루트 폴더는 작은 옵션 컬렉션 중 하나를 기준으로 해야 합니다.

RelativeTo PC의 폴더 위치
AppData 환경 변수 %APPDATA%에 매핑
공개 환경 변수 %PUBLIC%에 매핑
LocalAppData 환경 변수 %LOCALAPPDATA%에 매핑
LocalAppDataLow %USERPROFILE%AppDataLocalLow에 매핑
ProgramData 환경 변수 %PROGAMDATA%에 매핑
SavedGames %USERPROFILE%저장된 게임에 매핑
UserProfile 환경 변수 %USERPROFILE%에 매핑

파일은 루트 디렉터리에 직접 배치할 수 없습니다. 루트 폴더에서 하나 이상의 하위 폴더 내에 중첩되어야 합니다. 예를 들어 와 같은 <NoCodePCRoot RelativeTo="SavedGames">savegame1.sav</NoCodePCRoot>파일 이름을 직접 사용하는 것은 savegame1.sav 무시되기 때문에 유효하지 않습니다. <NoCodePCRoot> 는 특정 파일이 아닌 디렉터리 경로를 정의하기 위한 것입니다.

참고 항목

게임 저장