일반적인 게임 저장 오류 시나리오
잘못 구성된 서비스 구성 식별자
XGameSaveFilesGetFolderWithUiAsync를 호출할 때 오류 0x80830002(E_GS_NO_ACCESS)가 발생하면 소스 코드의 서비스 구성 식별자(SCID)가 잘못되었을 가능성이 큽니다. SCID가 Microsoft 파트너 센터에 표시된 것과 일치하는지 확인합니다. 다음 시스템 오류 메시지가 나타날 수 있습니다.게임 바인딩 관련 사항
타이틀에서 게임 바인딩을 사용하고 나중에 Microsoft Game Development Kit(GDK)의 PC 버전을 추가하는 경우, 기본 제품의 Microsoft 계정(MSA) AppID(MSAppID)를 사용해야 합니다. 보조 제품의 MSAAppID를 사용하면 0x80830002 오류가 발생합니다.잘못 구성된 파트너 센터 설정
잘못 구성된 파트너 센터 설정이 게임 저장 오류의 일반적인 원인일 수 있습니다. 사용자 게임 저장이 클라우드에 동기화되고 클라우드에서 동기화되려면 파트너 센터의 게임 플레이 설정 > 타이틀 스토리지에서 연결된 스토리지 옵션을 선택합니다. 다음 이미지는 게임 저장이 클라우드에 그리고 클라우드에서 제대로 동기화될 수 있도록 하는 데 필요한 파트너 센터 연결된 스토리지 구성 설정을 보여 줍니다.핸들 정리
게임 저장의 클라우드 동기화는 여러 핸들로 관리됩니다. 이러한 핸들의 수명이 올바르게 관리되지 않으면 클라우드와의 동기화 시 정의되지 않은 동작이 발생할 수 있습니다.XGameSaveFiles:
- 타이틀이 실행되고 재개될 때 XGameSaveFilesGetFolderWithUiAsync를 호출합니다. 이 호출은 암시적으로 게임 저장 공급자 핸들을 만듭니다. 타이틀이 일시 중단되거나 종료되면 OS가 이를 폐기합니다.
XGameSave:
- 업데이트의 성공 여부와 관계없이 XGameSaveSubmitUpdate 호출 후
XGameSaveUpdateHandle을 삭제합니다. - 타이틀이 일시 중단되거나 종료되면
XGameSaveContainerHandle을 삭제합니다. - 타이틀이 일시 중단되거나 종료되면
XGameSaveProviderHandle을 삭제합니다.
게임 저장 확인
게임 저장이 클라우드에 업로드되고 있는지 확인하려면 타이틀이 잠금을 해제하는 프로세스를 시작한 다음 데이터 업로드를 시작해야 합니다. 게임 저장 네트워크 트래픽 검사를 사용하여 Fiddler로 이 트래픽을 확인할 수 있습니다. 게임 저장 동기화 흐름에 대한 자세한 내용은 게임 저장 동기화 흐름 이해를 참조하세요.일반적인 오류
동기화 시도가 거부되면 파일 경로가 로컬로 쓰이도록
XGameSaveFilesGetFolderWithUI를 다시 호출합니다. 이 호출은 S_OK를 반환합니다.
이 오류는 오래된 공급자로 XGameSaveFilesGetFolderWithUIResult를 호출할 때도 발생합니다. 이 오류는 또한 게이밍 런타임 서비스(GRTS)가 타이틀을 일시 중단하거나 다른 시스템 관리 이벤트가 발생할 때 게임 저장 공급자를 초기화 취소할 때도 발생합니다. 타이틀이 재개되면 XGameSaveFilesGetFolderWithUiAsync를 호출하여 공급자를 다시 초기화하고 저장된 데이터가 최신 상태인지 확인합니다. 타이틀이 이 호출 없이 재개되면 공급자는 초기화되지 않은 상태로 유지됩니다. 게임 저장 작업이 실패합니다.| | 0x8007000E | E_OUTOFMEMORY | 요청을 처리할 남은 메모리가 없습니다. | 이 오류는 일반적으로 여러 가지 이유로 발생합니다. PIX로 메모리 할당을 캡처하고 메모리 누수를 확인할 수 있습니다. 다음 사항에 유의하세요.
1. 핸들은 참조 카운트됩니다. 핸들 누수를 확인하세요. 성공적이든 실패든 업데이트 후 업데이트된 핸들을 닫습니다. 대기 중인 업데이트를 많이 두지 마세요.
2.
XMemTransferMemory를 해결 방법으로 사용하여 일부 메모리를 시스템 파티션으로 전송하세요.3. 심각한 메모리 조각화. | | 0x80070057 | E_INVALIDARG | 잘못된 인수가 제공되었습니다. 매개 변수가 잘못되었습니다. | 이 오류는 PC의
XGameSaveFilesGetFolderWithUI에 사용된 SCID가 유효한 GUID가 아닐 때 발생할 수 있습니다. | | --- | --- | XGameSaveFilesGetFolderWithUI가 무한정 중지되거나 산발적으로 실패합니다. | 실행 중인 컴퓨터에 열려 있는 게임 저장 시스템 대화상자가 없거나 사용자의 다른 콘솔에 대화상자가 나타나지 않는지 확인하세요. 로그인 또는 동기화용 열려 있는 대화상자를 무시하면 정의되지 않은 동작이 발생할 수 있습니다. | 0x80830006 | E_QUOTA_EXCEEDED | 게임이 게임의 사용자당 할당량을 초과했습니다. 기본적으로 이 할당량은 256MB입니다. | 게임 저장 데이터 관리를 위해 다음 모범 사례를 사용하세요. 1. 컨테이너 간에 종속 데이터를 저장하지 마세요.
2. 성능 향상을 위해 컨테이너에서 더 적은 blob을 사용하세요.
자세한 내용은 스토리지 시스템 제한 및 할당량을 참조하세요. | | 0x80830005 | E_GS_UPDATE_TOO_BIG | 저장 업데이트의 크기가 너무 큽니다. |
XGameSave 업데이트의 총 크기는 업데이트 컨텍스트의 전체 blob 수와 관계없이 GS_MAX_BLOB_SIZE(16MB)보다 작아야 합니다. | | 0x8924010c | E_GAMERUNTIME_INVALID_HANDLE | 이 핸들 값은 더 이상 유효하지 않습니다. | 이 오류는 이전 사용자의 닫히지 않은 핸들을 다시 사용하려고 할 때 발생합니다. 더 이상 사용하지 않는 핸들은 닫으세요. | | 0x80830001 | E_GS_INVALID_CONTAINER_NAME | 컨테이너 이름이 잘못되었습니다. | 경로 부분(마지막 슬래시 포함까지)에 유효한 문자에는 대문자(A-Z), 소문자(a-z), 숫자(0-9), 밑줄(_), 슬래시(/)가 포함됩니다. 경로 부분은 비어 있을 수 있습니다.파일 이름 부분(마지막 슬래시 이후 모두)에 유효한 문자에는 대문자(A-Z), 소문자(a-z), 숫자(0-9), 밑줄(_), 마침표(.), 하이픈(-)이 포함됩니다. 파일 이름은 비어 있거나 마침표로 끝나거나 두 개의 연속된 마침표를 포함할 수 없습니다. | | 0x80830003 | E_GS_OUT_OF_LOCAL_STORAGE | 디바이스에 게임을 저장할 저장 공간이 부족합니다. | 사용자는 디바이스에서 게임 저장 저장 공간을 사용할 수 있게 해야 합니다. 이 오류는 사용자당 할당량을 초과하지 않은 경우에도 발생할 수 있습니다.
자세한 내용은 디바이스를 통한 게임 저장 관리를 참조하세요. | | 0x80830007 | E_GS_PROVIDED_BUFFER_TOO_SMALL | API에 제공된 버퍼가 너무 작습니다. | 이 오류는 호출자가 읽는 blob 데이터 크기보다 작은 버퍼를 게임 저장 API에 전달할 때 발생합니다. 올바른 버퍼 크기가 사용되고 있는지 확인하기 위해
Async 호출을 사용하는 경우 XAsyncGetResultSize를 호출하세요. | | 0x80830008 | E_GS_BLOB_NOT_FOUND | 지정한 blob을 찾을 수 없습니다. | blob이 존재하는지 확인하려면 xbstorage 또는 gamesaveutil 도구를 사용하여 blob을 다운로드하세요. 정의되지 않은 동작을 방지하기 위해 타이틀이 잠금을 해제한 후(종료되거나 일시 중단될 때) 이 단계를 수행하세요.자세한 내용은 게임 저장 도구를 참조하세요. | | 0x80830009 | E_GS_NO_SERVICE_CONFIGURATION | 타이틀이 연결된 스토리지에 대해 올바르게 구성되지 않았습니다. | 이 오류는 SCID가 잘못되었거나 타이틀이 파트너 센터에서 올바르게 구성되지 않았을 때 발생합니다.
자세한 내용은 파트너 센터 구성을 참조하세요. | | 0x8083000A | E_GS_CONTAINER_NOT_IN_SYNC | 컨테이너가 아직 동기화되지 않았습니다. | 업데이트를 제출하기 전에 XGameSave 컨테이너가 동기화되었는지 확인하세요. | | 0x8083000B | E_GS_CONTAINER_SYNC_FAILED | 컨테이너 동기화에 실패했습니다. | 클라우드에서 데이터를 동기화할 때 인터넷 연결이 안정적인지 확인하세요. | | 0x8083000C | E_GS_USER_NOT_REGISTERED_IN_SERVICE | 사용자의 MSA가 아직 XBOX 서비스 계정이 아님을 나타냅니다. | 사용하는 사용자가 파트너 센터에 올바르게 등록되어 있는지 확인하세요. | | 0x8083000D | E_GS_HANDLE_EXPIRED | 함수에서 사용한 핸들이 만료되어 다시 획득해야 합니다. |
XGameSaveUpdateHandle은 제출 후 또는 타이틀이 일시 중단되었을 때 다시 사용할 수 없습니다. | | 0x8083000E | E_GS_ASYNC_FUNCTION_REQUIRED | 함수가 시간에 민감한 스레드에서 호출되어 교착 상태의 위험이 있습니다. | 대신 비동기 구현을 사용하세요. | | 0x8083000F | E_GS_PROVIDER_MISMATCH | 게임이 XGameSave와 XGameSaveFiles 호출을 혼용하고 있으며, 이는 지원되지 않습니다. | 타이틀 내에서 한 번에 한 유형의 게임 저장 API만 초기화할 수 있습니다. 또한 타이틀에는 하나의 게임 저장 API를 사용하세요. 여러 타이틀을 다루는 경우 서로 다른 API 간 상호 운용성을 위한 메서드가 있습니다. 자세한 내용은 XGameSave와 XGamesaveFiles 간 상호 운용성을 참조하세요. | | 0x80831001 | E_GS_TERMINATEDTITLE_STALE_DATA
또는
TerminateApplicationAfterSuspend| 이 정보는 사용자용 API를 통해 노출되지 않습니다. 이 동작은 예상된 것입니다. 프로세스 수명 관리(PLM)는 오래된 데이터를 감지하고 디바이스가 인터넷에 다시 연결되면 타이틀을 중지합니다. 일시 중단 이벤트 후 애플리케이션이 닫힙니다. | 이 디버그 출력은 버그가 아닙니다. 초기화 시 게임 저장 잠금을 놓치기 때문에 게임이 종료될 때(예: 오프라인 플레이 또는 충돌 대화상자 선택 중), 다음 시작 상태를 깨끗하게 유지하기 위해 OS가 일시 중단 시 게임을 종료합니다. |
Win32 NTSTATUS 코드
XGameSaveFiles에서 다음 상태 코드가 나타날 수 있습니다.
