진단 매트릭스: 세이브 파일 손상 증상과 복구 가능성 분석
오랜 시간 플레이한 게임에서 갑작스럽게 "세이브 데이터가 손상되었습니다"라는 경고가 발생했을 때, 파일 시스템 내부 구조를 파악하면 높은 확률로 데이터를 살려낼 수 있습니다.
| 손상 증상 및 오류 | 근본 원인 | 파일 시스템 상태 | 복구 확률 및 대책 |
|---|---|---|---|
| 로딩 중 "손상된 파일" 오류 팝업 발생 | 저장 중 정전 또는 튕김으로 체크섬 바이트 누락 | 데이터 본문은 존재하나 파일 꼬리부 절단 | 매우 높음 (동일 폴더 내 .bak 백업 복구) |
| 세이브 파일 용량이 정확히 0 KB로 표시됨 | 파일 생성 후 실제 데이터 플러시 전 시스템 종료 | 파일 엔트리만 있고 실제 블록 데이터 전무 | 중간 (Windows 볼륨 섀도 복사본 추출) |
| 클라우드 동기화 충돌로 구버전 덮어쓰기 발생 | 타임스탬프 불일치로 최신 세이브 강제 삭제 | 최신 데이터가 덮어써졌으나 로컬 캐시 잔존 | 매우 높음 (Steam userdata 캐시에서 구조) |
| 로드는 되나 맵 밖으로 추락하거나 퀘스트 꼬임 | 엔진 내부 스크립트 변수의 논리적 파손 | 바이너리 파일은 정상이나 데이터 상태 손상 | 낮음 (전문 세이브 에디터로 수동 교정) |
원자적 기록(Atomic Write)과 숨은 백업본의 구조
대다수 현대 게임 엔진은 세이브 시 기존 파일을 직접 덮어쓰지 않고 다음과 같은 임시 파일 교체 원리를 사용합니다:
- 임시 파일(
save.dat.tmp)에 데이터를 먼저 완전히 기록합니다. - 기록 성공 확인 후, 기존 정상 세이브를
save.dat.bak으로 백업 변경합니다. - 임시 파일의 이름을 최종 세이브 파일명으로 확정합니다.
저장 중 컴퓨터가 튕겼을 때 본 파일은 깨져 있더라도, 직전까지 멀쩡했던 원본 세이브가 .bak 또는 .old 확장자로 같은 폴더에 그대로 남아 있는 경우가 대부분입니다.
세이브 데이터 긴급 구조 3단계
1단계: 숨은 백업 파일(.bak) 탐색 및 교체
- 대표적인 세이브 저장 경로를 확인합니다:
%USERPROFILE%\Saved Games\(저장된 게임)%LOCALAPPDATA%\[게임이름]\Saved\SaveGames\- Steam 클라우드 로컬 폴더:
[Steam설치경로]\userdata\[ID]\[AppID]\remote\
- 폴더 옵션에서 파일 확장자 표시를 켠 뒤 수정 날짜순으로 정렬합니다.
- 용량이 정상적인
.bak또는.old파일을 찾습니다. 폴더 전체를 다른 곳에 복사해 둔 뒤, 깨진 본래 파일을 제거하고.bak파일의 확장자를 정식 세이브 확장자로 변경합니다.
2단계: Windows 이전 버전(볼륨 섀도 복사본) 복구
파일이 0 KB로 날아간 경우:
- 세이브 폴더를 우클릭하고 속성을 엽니다.
- 이전 버전 탭으로 이동합니다.
- 시스템 보호 기능이 생성해 둔 사고 발생 이전의 복원 지점을 선택하여 복사 복원합니다.
3단계: Hex 에디터로 바이너리 헤더 검사
무료 Hex 에디터인 HxD로 파일을 열어 첫 16바이트를 검사합니다. 언리얼 엔진의 GVAS 등 고유 엔진 헤더가 온전히 남아 있다면 데이터 핵심부는 살아있는 상태입니다.