Steam Cloud 세이브 충돌 줄이기, Auto-Cloud·교차 플랫폼·로그 점검법

자연광 아래 놓인 무브랜드 게임 컨트롤러와 분리된 저장 장치, 여러 기기 사이의 세이브 동기화를 상징하는 구성

AI를 활용하여 생성한 이미지입니다.

Steam Cloud 세이브가 꼬였을 때 “동기화를 켜고 끄기”만 반복하면 원인을 놓치기 쉬워요. Steam Cloud는 게임이 종료된 뒤 변경된 파일을 서버와 동기화하고, 다른 컴퓨터에서는 게임을 실행하기 전에 필요한 파일을 내려받는 방식으로 동작해요.[1] 충돌을 줄이려면 어떤 파일을 클라우드에 올리는지, 어느 플랫폼에서 같은 파일을 읽는지, 마지막 업로드가 끝났는지를 나눠서 봐야 해요.

Auto-Cloud와 Cloud API는 다르게 움직여요

방식 장점 주의할 점
Steam Auto-Cloud 코드 변경 없이 지정한 경로와 파일 그룹을 동기화해요.[1] 파일 범위와 OS별 경로를 잘못 지정하면 세이브가 빠지거나 분리돼요.
Steam Cloud API 게임 코드가 읽기·쓰기·삭제와 동기화 플랫폼을 직접 제어할 수 있어요.[1][2] 호출 순서와 파일명, 용량, 비동기 결과 처리를 직접 관리해야 해요.
공통 기기 변경 때 세이브를 내려받아 이어서 플레이할 수 있어요.[1] 대용량 파일이나 너무 많은 작은 파일은 대역폭과 종료 시간을 늘릴 수 있어요.[1]

게임을 사용하는 입장에서는 게임 속성의 업데이트 또는 Steam Cloud 설정에서 게임별 동기화가 꺼져 있지 않은지 먼저 확인해요. 계정 전체 설정에서 Cloud를 껐거나 특정 게임에서만 껐을 수 있어요.[1] 설정을 다시 켠 뒤에도 이미 로컬에 남은 파일과 서버 파일의 우선순위가 자동으로 원하는 방향으로 정리된다고 가정하면 안 돼요.

세이브 충돌이 생기는 전형적인 순서

  1. 기기 A에서 게임을 실행한 채 강제 종료하거나 Steam을 바로 종료해요.
  2. 변경된 세이브가 정상적으로 업로드되기 전에 기기 B에서 같은 게임을 열어요.
  3. 두 기기의 파일이 서로 다른데도 어느 쪽이 최신인지 확인하지 않고 선택해요.
  4. Auto-Cloud 경로 또는 플랫폼 분할 설정 때문에 실제 세이브 파일이 동기화 대상에서 빠져 있어요.

게임을 바꾸기 전에는 플레이를 정상 종료하고 Steam이 동기화를 끝낼 시간을 줘요. Steam Cloud 문서는 큰 파일이나 작은 파일이 너무 많으면 네트워크 사용량이 늘고 Steam 종료나 재실행이 늦어질 수 있다고 설명해요.[1] 세이브만 보관해야 하는데 스크린샷, 캐시, 설정 파일까지 한꺼번에 올리는 설계는 충돌 면에서도 불리해요.

교차 플랫폼 세이브를 확인하는 기준

Windows와 Linux 또는 SteamOS, macOS를 오가며 플레이한다면 파일 경로와 파일명부터 확인해야 해요. Cloud API를 직접 쓰는 경우 새 파일의 기본 동기화 대상은 모든 플랫폼이에요. 반면 Auto-Cloud는 Root Path에 지정한 OS 설정에 따라 파일이 플랫폼별로 나뉠 수 있어요.[1] 같은 세이브를 공유하려고 했는데 각 OS별 Root Path를 따로 만들어 두면, 동기화가 정상이어도 서로 다른 파일 묶음을 읽게 됩니다.

세이브 파일에는 그래픽 옵션이나 모니터 해상도처럼 기기마다 달라야 하는 값을 넣지 않는 편이 좋아요. Valve 문서도 교차 플랫폼 Cloud를 고려할 때 기계별 설정을 피하라고 안내해요.[1] 저장 포맷이 OS별 경로와 줄바꿈, 대소문자 처리에 의존하면 플랫폼 전환 때 파일은 내려와도 게임이 읽지 못할 수 있어요.

개발 중인 게임에서 확인할 지점

Cloud API를 쓰는 게임은 ISteamRemoteStorage에서 파일을 쓰고 읽는 흐름을 확인해요. 파일명은 지원하는 OS와 파일 시스템에서 모두 유효해야 하고, 할당량 초과나 잘못된 경로도 쓰기 실패 원인이 될 수 있어요.[2] 여러 파일을 한 번에 저장한다면 BeginFileWriteBatchEndFileWriteBatch를 사용해 Steam에 쓰기 묶음을 알려주는 것이 안정성에 도움이 될 수 있어요.[2]

세이브 저장 직전
1. 임시 파일에 저장
2. 저장 성공 여부 확인
3. Cloud 파일 쓰기 완료 확인
4. 게임 종료 시 동기화 대기
5. 다음 실행에서 읽은 파일의 버전 확인

저장 파일을 덮어쓸 때는 파일 내부에 게임 버전, 슬롯, 저장 시각 같은 검증 가능한 정보를 넣어두면 충돌 선택 화면을 만들기 쉬워요. 이것은 Steam이 최신 세이브를 대신 판정해 준다는 뜻이 아니라, 게임이 두 파일의 상태를 비교할 수 있게 만드는 설계예요.

동기화가 안 될 때 로그를 보는 순서

먼저 게임 설정과 계정 전체 설정에서 Cloud가 켜져 있는지 확인하고, 게임을 정상 종료한 뒤 다시 시작해요. 개발 중인 게임이라면 Steamworks 페이지에서 변경 내용을 저장하고 공개한 뒤 최대 10분 정도 기다리거나 Steam 클라이언트를 재시작해야 새 설정을 받을 수 있다고 문서가 안내해요.[1] 그 다음 Steam 설치 폴더의 logs/cloud_log.txt를 확인해 업로드·다운로드·파일 제외 기록을 살펴봐요.[1]

Steamworks API 자체가 실패하는 상황이라면 -console이나 -debug_steamapi 같은 개발용 실행 옵션과 Steam 콘솔 명령을 활용할 수 있어요. 공식 디버깅 문서는 API 경고 메시지 훅과 로그 폴더를 함께 확인하라고 설명해요.[3] 일반 사용자가 무심코 실행 옵션을 늘리는 것보다, 재현 시점의 로그와 어떤 파일이 바뀌었는지를 먼저 기록하는 편이 낫습니다.

사용자 입장에서의 복구 체크리스트

  • 게임을 실행 중인 다른 PC나 Steam Deck가 없는지 확인해요.
  • 가장 최근에 정상 종료한 기기의 로컬 세이브를 별도 복사해요.
  • 게임 속성에서 Cloud와 계정 전체 Cloud 설정을 각각 확인해요.
  • 동기화 경고가 뜨면 최신 날짜만 보지 말고 플레이 시간과 세이브 슬롯을 비교해요.
  • 복구 뒤 게임을 정상 종료하고 다른 기기에서 한 번만 내려받기 테스트를 해요.

이전 글에서 다룬 Steam Input 설정과는 별개로, Cloud 문제는 입력 매핑보다 파일의 소유권과 시점이 핵심이에요. 컨트롤러 레이아웃을 조정하는 방법은 Steam Input 게임별 설정 글에서 확인하고, 세이브 동기화는 파일 경로와 로그를 기준으로 따로 진단하세요.

Sources

  1. [1] Steam Cloud | Steamworks Documentation
  2. [2] ISteamRemoteStorage Interface | Steamworks Documentation
  3. [3] Debugging the Steamworks API | Steamworks Documentation

함께 읽을 글