타이틀 시작
타이틀이 실행되면 첫 번째 단계는 게임 저장이 관리되는 대상 사용자를 결정하는 것입니다. 사용자가 다른 디바이스에서 활성 게임 세션이 있는 경우, 시스템 대화상자가 사용자에게 디바이스를 전환하도록 요청합니다. 사용자가 전환하면 다른 디바이스가 최신 로컬 게임 저장 데이터를 새 디바이스에 동기화합니다. 데이터를 로컬로 유지하고 디바이스에 바인딩하려는 경우 머신 전용 공급자를 사용할 수 있습니다. 이 옵션은 게임 저장 API에null 사용자 핸들을 전달합니다.
타이틀이 사용자를 선택한 후 해당 사용자의 핸들로 게임 저장을 초기화합니다. 초기화 중에 게임 저장은 사용자의 저장 공간을 준비하기 위해 XBOX 네트워크에 연결됩니다.
관련 시스템 대화상자:
사용자 모델 및 사용자 관리에 대한 자세한 내용은 사용자 모델을 참조하세요.
스토리지에 대한 자세한 내용은 게임 저장 스토리지 시스템을 참조하세요.
연결 확인
다음으로, 타이틀은 클라우드로의 동기화가 가능한지 확인하기 위해 XBOX 네트워크에 연결할 수 있는지 결정합니다. 타이틀이 연결할 수 없으면 사용자에게 다시 시도하거나 오프라인 모드에서 타이틀을 재개할 수 있는 옵션이 제공됩니다. 게임 저장은 오프라인 모드에서 실행할 수 있습니다. 관련 시스템 대화상자:
오프라인 동작
데이터 소유권 확인
연결이 확인된 후 타이틀은 디바이스가 데이터를 수정할 권한이 있는지 결정합니다. 있다면 타이틀에 대한 잠금을 획득할 수 있습니다. 타이틀이 잠금을 얻고 해제하려면 타이틀에 XBOX 서비스에 대한 접근이 필요합니다. 타이틀은 사용자의 데이터에 대한 잠금을 유지하는 다른 디바이스가 있는지 확인합니다. 이 디바이스는 다음과 같은 이유로 여전히 잠금을 유지하고 있을 수 있습니다.- XBOX 네트워크에서 연결이 끊어져 디바이스가
WebReleaseLock을 호출할 수 없음. - 다른 디바이스가 큰 게임 저장을 업로드 중이며
WebReleaseLock을 호출할 수 없음.
- 다른 디바이스에서 잠금을 강제로 획득합니다. 이 경우 다른 디바이스의 세션 데이터가 손실됩니다.
- 정상적으로 잠금 획득을 다시 시도합니다.
- 잠금 획득을 취소합니다.
클라우드와 데이터 동기화
타이틀이 사용자의 데이터에 대한 잠금을 획득한 후 해당 데이터를 클라우드와 동기화합니다. 그런 다음 타이틀은 다음 작업 중 하나를 수행할지 결정합니다.- 로컬 게임 저장 데이터를 업로드합니다.
- 클라우드 데이터를 다운로드하여 로컬 게임 저장 데이터를 업데이트합니다.
- 아무 작업도 하지 않습니다.
- 데이터 충돌을 해결합니다.
- 로컬 저장 시간: 이 디바이스가 마지막으로 저장을 쓴 시간
- 클라우드 저장 시간: 클라우드 사본이 마지막으로 업데이트된 시간
네 가지 동기화 결과
클라우드에서 다운로드가 발생하면 다음에 대한 데이터 동기화 중 …이라는 동기화 대화상자가 나타납니다. 사용자가 이 대화상자를 사용하여 게임 저장을 취소하면 타이틀은 오프라인 모드로 계속됩니다.
변경 및 저장 상태
이 시나리오에서는 사용자가 두 디바이스, 즉 디바이스 A와 디바이스 B에서 플레이한다고 가정합니다. 로컬 변경됨 사용자가 디바이스 A에서 오프라인 상태에서 진행 상황을 만들었습니다. 예를 들어, 사용자가 인터넷 연결 없이 디바이스 A에서 레벨 126까지 올렸습니다. 클라우드 변경됨 사용자가 마지막으로 디바이스 A를 동기화한 이후 디바이스 B에서 진행 상황이 업로드되었습니다. 예를 들어, 사용자가 디바이스 B에서 레벨 99까지 올리고 클라우드에 업로드했습니다. 둘 다 변경됨 사용자가 디바이스 A에서 오프라인으로 플레이했습니다. 또한 사용자가 마지막으로 디바이스 A를 동기화한 이후 디바이스 B에서도 플레이했습니다. 예를 들어, 디바이스 A는 레벨 126입니다. 클라우드는 레벨 99입니다. 충돌이 있는 경우 시스템은 어느 것을 사용하시겠습니까? 대화상자로 사용자에게 이를 해결하도록 요청합니다.원자성
게임 저장은 컨테이너(폴더) 수준에서 원자적입니다. 클라우드 폴더에 일치하는 로컬 폴더에 없는 blob이 포함되어 있으면 시스템은 두 폴더를 별개로 처리합니다. 이 차이가 충돌을 만듭니다.게임 플레이 루프
_게임 플레이 루프_는 게임 세션의 활성 부분입니다. 타이틀이 클라우드와 저장 데이터 동기화를 마친 후 시작됩니다. 활성 게임 세션 동안 타이틀은 저장 데이터를 로컬로 읽고 씁니다. 이 기간 동안 생성되거나 업데이트된 모든 데이터는 시스템이 클라우드 동기화를 수행할 때까지 게임 저장 로컬 스토리지에 남아 있습니다. 콘솔 또는 PC에 대해 다음 조건 중 하나가 참이면 사용자의 게임 세션이 종료될 때 게임 플레이 루프가 종료됩니다. 콘솔이나 PC가 일시 중단, 종료, 사인아웃 또는 다른 시스템 이벤트와 같은 상태 변경을 트리거하면 세션이 종료됩니다.클라우드로의 주기적 동기화
30분마다 타이틀은 자동으로 클라우드에 동기화를 시도합니다. 이 동작은 다음 시나리오를 기반으로 합니다.세션 종료
게임 세션이 종료된 후 타이틀은 새 데이터를 클라우드에 업로드합니다. 디바이스는 연결이 있을 때 클라우드에 데이터 업로드를 시도합니다. 데이터가 업로드된 후 잠금이 해제됩니다. 디버깅을 위해 XBOX 네트워크에서 잠금 해제를 확인하려면 게임 저장 네트워크 트래픽 검사를 참조하세요.연결 손실 및 잠금 시나리오
연결 손실 중에 쓰인 데이터는 게임 저장 로컬 스토리지에 저장되며 연결이 재개된 후 업로드됩니다. 그러나 사용자가 다른 디바이스를 사용하려고 시도하면 현재 디바이스는 연결이 끊어졌기 때문에 잠금을 해제할 수 없습니다. 사용자는 잠금을 다른 디바이스로 강제 전송할 수 있습니다. 이러한 잠금 전송이 언제 발생하는지에 따라 타이틀은 다른 동작을 경험할 수 있습니다.타이틀 시작 전 연결 손실
시기: 사용자가 연결 없이 타이틀을 실행합니다.연결이 없기 때문에 타이틀은 사용자에게 오프라인 모드로 실행할 수 있는 옵션을 제공합니다. 디바이스가 XBOX 네트워크에 다시 연결되고 클라우드에 최신 데이터가 있으면 타이틀은 로컬 데이터를 오래된 것으로 처리합니다. 이 경우 타이틀은 일시 중단 작업으로 앱을 종료하여 게임 세션을 종료합니다. 관련 시스템 대화상자: 이 게임 또는 앱을 닫아야 합니다
게임 플레이 루프 중 연결 손실
시기: 사용자가 활성 게임 세션에 있으며 타이틀이 여전히 잠금을 유지하고 있습니다. 특정 시점에 연결이 끊어집니다. 그런 다음 타이틀은 이 손실 동안 게임 플레이를 허용합니다.
세션 종료(종료 또는 일시 중단) 전 연결 손실
시기: 플레이어가 디바이스가 연결이 끊긴 상태에서 타이틀을 종료/일시 중단합니다. 디바이스에는 여전히 동기화되지 않은 로컬 데이터가 있습니다.
