[Unity] 세이브 슬롯 시스템
일화
현재 진행 중인 프로젝트에서 세이브 슬롯 시스템을 만들기로 했다. 팀원과 나 둘 다 "세이브 슬롯을 만들자"는 데는 동의했지만 세부적으로 이야기해보니 각자 그리고 있던 그림이 달랐다.
나는 게임 런(run) 데이터만 저장하는 슬롯을 생각했다. 이번 판의 진행 상황, 배치한 것들, 현재 상태 정도. 슬롯을 고른다는 건 "저장해둔 판을 이어서 한다"는 의미였다.
팀원은 유저 데이터를 저장하는 슬롯을 생각하고 있었다. 개인 설정, 도감 진행 상황, 누적 기록까지 슬롯 단위로 나뉘는 그림. 슬롯을 고른다는 건 "이 사용자로 플레이한다"에 가까웠다.
같은 단어를 썼는데 다른 시스템을 상상하고 있었던 거다. 이 김에 세이브 슬롯이라는 말이 어떤 층위로 나뉘는지 정리해봤다.
세이브 슬롯이라는 말의 두 층위
결국 차이는 "슬롯이 무엇을 담느냐"였다.
- 세이브 슬롯 (Save Slot) — 좁은 의미: 독립된 저장 칸. 안에 무엇을 담을지는 열려 있다. 내가 생각한 게임 런 저장이 여기 가깝다.
- 유저 프로필 (User Profile): 슬롯에 "사용자" 개념이 붙은 상위 표현. 개인 설정, 도감, 누적 기록처럼 여러 판을 관통하는 데이터까지 슬롯 단위로 묶는다. 팀원이 생각한 쪽이다.
옛날 닌텐도의 가족 공유(File A / File B / File C)가 이 경계에 걸쳐 있다. 계정 개념이 없어 "저장 칸"을 나눈 거지만, 각자의 설정과 진행도가 통째로 나뉘었다는 점에선 유저 프로필에 가까운 역할을 했다.
게임 런 저장 vs 유저 데이터 저장
두 개를 다른 시스템처럼 느꼈던 이유는 저장하는 데이터의 생명주기가 다르기 때문이다.
게임 런 데이터는 한 판에 종속된다. 판이 끝나면 리셋되거나 의미가 사라진다. 로그라이크로 치면 이번 회차의 상태다.
유저 데이터는 판을 관통해서 누적된다. 판이 끝나도 남는다.
- 개인 설정 (사운드, 조작, 언어 등)
- 도감 진행 상황
- 누적 통계, 해금 요소, 업적
즉 유저 데이터 슬롯은 게임 런 저장을 포함하면서 그 위에 판을 넘어 남는 데이터를 더 얹은 구조다. 별개가 아니라 하나가 다른 하나를 감싸는 관계였다. 최종 기획은 유저 데이터를 저장하는 슬롯으로 정했다.
데이터를 어떻게 나눌까
슬롯이 담을 게 정해졌으면, 데이터를 어떻게 나눠 담을지가 다음 문제다.
1. 파일명으로 분리
슬롯마다 별도 파일(save_0, save_1...). 구조가 단순하고 슬롯 하나가 깨져도 나머지는 멀쩡하다. 가장 무난하다.
2. 한 파일 안에 배열로 모든 슬롯을 파일 하나에 담는다. 관리는 단순하지만 그 파일이 깨지면 전체가 날아간다.
3. 폴더로 분리 슬롯마다 폴더를 두고 여러 파일(세이브 데이터, 설정, 스크린샷 등)을 담는다. 담을 게 많을 때 유리하다.
유저 데이터(설정 + 도감 + 런 데이터)를 함께 담아야 하는 경우엔 슬롯당 담기는 게 많으니, 폴더 분리나 잘 구조화된 파일명 분리가 어울린다.
마무리
이번 일에서 얻은 건 기술보다 커뮤니케이션 쪽이었다. "세이브 슬롯"이라는 익숙한 단어를 서로 안다고 생각했지만 담으려던 데이터의 범위가 달라서 다른 시스템을 상상하고 있었다.
기획 단계에서 "슬롯에 정확히 뭐가 들어가는가"를 짚었다면 어긋날 일이 없었을 것 같다.


![[Unity] PC 세이브 데이터 Android로 옮기기](https://data.develog.develrocket.com/upload/develog/muchan/1792206352286-hd4xz4/_____2026-10-17_114953.png)
![[Unity] 제네릭 박싱 예방](https://data.develog.develrocket.com/upload/develog/gmumdev/1792123312021-bhxx2i/_____.png)