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