Skip to main content
PlayFab Game Saves는 플레이어가 게임 데이터를 저장, 동기화, 관리하는 방식을 추적하는 데 사용할 수 있는 PlayStream 이벤트를 내보냅니다. 이러한 이벤트를 사용하여 세이브 활동을 모니터링하고, 충돌을 감지하며, 플레이어 기반 전체에서 크로스 디바이스 사용 패턴을 이해할 수 있습니다. 모든 Game Saves 이벤트는 playfab.gamesave 네임스페이스에서 title_player_account 엔티티에 대해 내보내집니다.

이벤트

gamesave_version_finalized

게임 세이브 버전이 확정될 때마다 내보내집니다. 모든 파일이 업로드되고 버전이 완성됩니다. 이 이벤트는 세이브 활동을 추적하기 위한 기본 신호입니다. Conflict (중첩된 개체, 충돌 해결 중에만 존재):

gamesave_version_marked_known_good

게임 세이브 버전이 명시적으로 “알려진 정상(known good)“으로 표시될 때 내보내집니다. 알려진 정상 버전은 신뢰할 수 있는 복원 지점 역할을 합니다. 플레이어 또는 타이틀이 잘못된 세이브 상태에서 복구해야 할 때 시스템이 롤백하는 버전입니다.

시나리오

시나리오: 표준 크로스 디바이스 사용

일반적인 크로스 디바이스 흐름은 플레이어가 한 디바이스에서 저장하고 다른 디바이스에서 재개하는 것과 같습니다. PlayStream에서 이 패턴은 Version 번호가 증가하는 gamesave_version_finalized 이벤트의 시퀀스로 나타납니다. 보이는 것:
  • 플레이어가 저장할 때마다 gamesave_version_finalized 이벤트가 발생하며, DeviceTypePlayerIdentityProvider가 사용된 디바이스와 ID 공급자를 나타냅니다.
  • NewFileCountNewFilesSizeBytes는 이전 버전과 비교하여 얼마나 많은 데이터가 변경되었는지 보여줍니다. NewFileCount가 0인 버전은 플레이어가 새로운 파일 콘텐츠 없이 버전을 확정했음을 의미합니다(예: 메타데이터 전용 업데이트).
  • 일반 세이브의 경우 Conflictnull이고 IsGeneratedByRollbackfalse입니다.
주의해서 볼 사항:
  • 플레이어당 저장 빈도: 확정 이벤트의 비율을 추적하여 플레이어 참여도와 저장 행동을 이해합니다.
  • 시간 경과에 따른 세이브 크기: TotalSizeBytesNewFilesSizeBytes를 모니터링하여 저장 비용이나 동기화 시간에 영향을 미칠 수 있는 세이브 데이터의 예기치 않은 증가를 감지합니다.
  • 디바이스 분포: DeviceType을 집계하여 플레이어가 가장 자주 저장하는 플랫폼을 파악합니다.

시나리오: 충돌 해결

두 디바이스가 동일한 기본 버전에 대해 게임 세이브 버전을 확정할 때 충돌이 발생합니다. 예를 들어, 플레이어가 콘솔과 PC에서 동시에 오프라인으로 플레이한 다음 온라인 상태가 되었을 때 두 디바이스 모두 동기화를 시도할 수 있습니다. 보이는 것:
  • 충돌 해결 중 클라이언트는 항상 로컬 파일을 새 매니페스트에 업로드하고 매니페스트를 확정합니다. 이 프로세스는 null이 아닌 Conflict 개체를 가진 단일 gamesave_version_finalized 이벤트를 생성합니다. 기존 클라우드 버전(이전 이벤트에서 이미 확정됨)은 새 이벤트를 생성하지 않습니다.
  • Conflict.IsWinner는 플레이어의 로컬 변경 사항이 충돌에서 이겼는지 여부를 알려줍니다:
    • true — 플레이어가 로컬 유지를 선택했습니다. 새 매니페스트가 정규 버전이 되고, 이전 클라우드 버전은 대체됩니다.
    • false — 플레이어가 원격 유지를 선택했습니다. 새 매니페스트는 롤백 지점으로 보존되고(거부된 로컬 데이터를 포함), 기존 클라우드 버전이 정규 상태로 유지됩니다.
  • Conflict.ConflictingVersion은 충돌 중이던 기존 클라우드 버전을 가리킵니다.
주의해서 볼 사항:
  • 충돌율Conflict가 있는 gamesave_version_finalized 이벤트를 필터링합니다. 충돌율이 증가하면 플레이어가 동기화 없이 디바이스를 자주 전환하거나 타이틀의 세이브 케이던스가 불필요한 버전 충돌을 유발한다는 신호일 수 있습니다.
  • 로컬 대 원격 선호도IsWinner = true(로컬 유지) 대 IsWinner = false(원격 유지) 비율을 비교하여 플레이어가 충돌을 어떻게 해결하는지 이해합니다. 한쪽으로 강하게 치우친다면 충돌 프롬프트의 UX 문제를 나타낼 수 있습니다.
  • 크로스 디바이스 충돌 패턴 — 충돌 이벤트에서 DeviceTypePlayerIdentityProvider를 사용하여 어떤 플랫폼 조합이 충돌에 가장 취약한지 이해합니다.

시나리오: 알려진 정상 및 롤백

“알려진 정상” 메커니즘을 사용하면 특정 버전을 신뢰할 수 있는 복원 지점으로 표시할 수 있습니다. 플레이어의 세이브가 손상되었거나 복구해야 하는 경우, 시스템은 가장 최근의 알려진 정상 버전으로 롤백하고 이를 기반으로 새 버전을 생성할 수 있습니다. 보이는 것:
  • 버전을 복원 지점으로 지정할 때 Version 번호와 MarkedAt 타임스탬프가 포함된 gamesave_version_marked_known_good 이벤트가 발생합니다.
  • 롤백이 발생하면 시스템은 IsGeneratedByRollback = true인 새 gamesave_version_finalized 이벤트를 내보냅니다. 이 새 버전의 콘텐츠는 알려진 정상 버전을 기반으로 하지만, 새로운 증가된 버전 번호를 갖습니다.
  • 롤백이 충돌 해결의 일부로 트리거된 경우, 롤백으로 생성된 버전도 Conflict 데이터를 가질 수 있습니다.
주의해서 볼 사항:
  • 롤백 빈도IsGeneratedByRollback = truegamesave_version_finalized 이벤트를 추적합니다. 타이틀의 잦은 롤백은 세이브 손상 문제나 타이틀의 세이브 로직 문제를 나타낼 수 있습니다.
  • 알려진 정상 최신성gamesave_version_marked_known_goodVersion을 동일한 플레이어의 최신 확정된 Version과 비교합니다. 큰 격차는 롤백이 필요한 경우 플레이어가 상당한 진행 상황을 잃게 됨을 의미합니다.
  • 롤백과 충돌 상관관계 — 롤백으로 생성된 버전이 자주 충돌 데이터와 함께 나타난다면, 그 패턴은 충돌 해결 전략이 부작용으로 롤백을 트리거하고 있음을 시사할 수 있습니다.
마지막 수정일 2026년 8월 25일