Oneshot Gems
지금 플레이

게임 개발자용

이전 저장 형태를 의도적으로 마이그레이션

저장 상태 테스트에서는 의도한 값이 지속되는지 여부를 묻습니다. 버전 관리는 다른 질문에 답합니다. 최신 게임 빌드가 이전 빌드에서 작성된 데이터를 읽으면 어떻게 되나요? 버전 1이 최고 점수를 숫자로 저장하고 버전 2가 프로필 개체를 저장하는 경우 이전 모양을 새로운 것처럼 읽으면 메뉴가 중단되거나 진행 상황이 자동으로 취소될 수 있습니다. 저장된 데이터 옆에 버전을 배치하고 알려진 이전 형태에 대한 명시적 마이그레이션을 작성합니다.

이 페이지의 내용

값을 작고 버전이 지정된 데이터 객체에 저장하세요

240과 같은 단순한 점수를 저장하는 대신 { version: 2, bestScore: 240, settings: { sound: true } }와 같은 JSON 개체를 저장하세요. 로드 시 텍스트를 구문 분석하고, 개체인지 확인하고, 필드를 사용하기 전에 해당 버전을 검사하세요. JSON.parse는 잘못된 JSON에 대해 SyntaxError를 발생시킬 수 있으므로 플레이어가 시작되기 전에 시작이 중지되도록 허용하는 대신 정의된 폴백을 사용하여 잘못된 형식의 텍스트를 처리하세요.

데이터 객체를 간결하게 유지하고 각 버전의 의미를 문서화하세요. 버전 번호만으로 유효성이 보장된다고 여기지 마세요. 버전 2로 표시된 값도 불완전하거나 유형이 잘못되었을 수 있습니다. 현재 빌드가 실제로 사용하는 필드를 검사하세요. 예를 들어 bestScore는 유한한 음이 아닌 숫자여야 하고, 사운드 설정은 불리언 값이어야 합니다.

지원하는 각 이전 형식에 대한 마이그레이션을 작성하세요

버전 1 마이그레이션은 이전 숫자를 새 데이터 객체로 변환하고 기본 설정을 채운 뒤 버전 2 형식으로 저장할 수 있습니다. 여러 과거 버전을 지원한다면 버전 1에서 2로, 이어서 2에서 3으로 순차적으로 마이그레이션하세요. 키 누락, 잘못된 JSON, 알 수 없는 미래 버전, 부분적으로 기록된 값을 포함해 각 테스트 사례를 독립적으로 확인하세요. 알 수 없는 데이터를 보존, 무시, 초기화 중 어떻게 처리할지 정하고 필요한 경우 복구 메시지를 표시하세요.

브라우저 저장소의 한계를 고려하세요

MDN은 localStorage를 브라우저 세션을 넘어 유지될 수 있는 출처별 데이터라고 설명합니다. 그러나 저장소를 사용할 수 있는지, 어떤 내용이 남는지는 계정 백업으로 보장되지 않습니다. 비밀이나 신뢰가 필요한 결정을 저장하지 마세요. 게임이 저장 데이터를 읽지 못하면 정의된 새 게임 상태를 허용하고, 매번 시작할 때 같은 실패한 마이그레이션을 다시 시도하지 마세요.

⁨localStorage 게임 데이터 버전 관리⁩ 관련 질문

형식이 변경되면 모든 저장 내용을 지워야 합니까?

그것이 명시적인 제품 결정인 경우에만 가능합니다. 중요한 값을 안전하게 매핑할 수 있는 경우 소규모 테스트 마이그레이션을 통해 해당 값을 보존할 수 있습니다. 그렇지 않으면 명확한 대체를 정의하고 재설정을 설명하십시오.

버전 필드가 localStorage 데이터를 안정적으로 만들어 주나요?

아니요. 게임이 이를 마이그레이션하거나 거부할 수 있도록 예상되는 모양을 식별합니다. 데이터가 여전히 누락되거나, 형식이 잘못되었거나, 오래되었거나, 사용할 수 없을 수 있으므로 사용하기 전에 유효성을 검사하십시오.

추가 읽을거리

오래된 정보를 발견하셨나요? 수정 사항 제보

계속 즐겨요.

언제든 즐길 수 있는 무료 브라우저 게임. 마음에 드는 게임을 찾아 다음 최애로 만들어 보세요.

궁금한 것을 더 찾아보세요