해결된 질문
작성
·
112
·
수정됨
답변 3
1
안녕하세요! BurningCarrot입니다.
질문해 주셨던 2,3번 내용에 대한 보충 강의를 업로드 해 드렸습니다. [섹션8. 보충]을 확인하시길 바랍니다.
1
안녕하세요! BurningCarrot입니다. 문의해 주신 내용에 답변 드립니다.
1. JSON을 쓰는 이유는 PlayerPrefs에서 int, float, string만 저장할 수 있기 때문에로 이해했는데 맞나요?
네 맞습니다. 단순하게 int, float, string 값으로 저장할 수 없는 복잡한 형태의 데이터를 JSON 형태의 string값으로 변환하여 저장하는 것입니다.
2. 그리고 굳이 JSON 이여 할 이유가 있나요?
JSON이 아닌 binary를 사용하여 저장하는 방법도 있습니다. Binary 방식을 사용하면 메모리와 최적화에서의 장점이 있지만 디버깅이 어렵다는 단점이 있습니다. JSON과 binary 둘 중에 어떤 방법을 사용하셔도 상관 없습니다.
3. PlayerPrefs에 유저가 접근이 가능하다고 하는데 그러면 악의적으로 변형이 가능하지 않나요? 이 경우는 어떻게 대비하나요?
악의적인 변형을 막기 위해 저장 시 암호화를 하는 방법이 있습니다. 암호화 저장을 위해서는 모든 저장 데이터를 string으로 변환 -> 암호화된 string으로 변환 -> 암호화된 string 값을 playerprefs에 저장 이라는 3가지 절차를 거쳐야 합니다. 이 외의 방법으로는 playerprefs가 아닌 원격 DB에 유저 데이터를 저장하는 방법이 있습니다. 이는 Pt.2에서 다룰 예정입니다.
질문에 주신 내용은 다른 수강생 분들에게도 도움이 될 것 같아 2,3번에 대한 내용은 보충 강의를 통해 실제 코드를 제공해 드리겠습니다. 다음 주에 보충 영상을 업로드하면 공지해 드리겠습니다.
추가로 궁금하신 점이 있으시다면 편하게 질문 부탁 드립니다. 🙂
0
안녕하세요, 인프런 AI 인턴입니다. moonfgg님.
질문해주신 내용과 관련하여 정보를 제공해드리겠습니다.
PlayerPrefs는 지원하는 데이터 타입이 제한적이기 때문에, 복잡한 객체나 리스트를 저장할 때 JSON 형식을 사용하여 문자열로 변환하여 저장하는 것이 일반적입니다. 이는 여러 가지 데이터를 문자열로 직렬화하여 저장할 수 있도록 해주기 때문입니다. 따라서, JSON을 사용하는 이유가 맞습니다.
PlayerPrefs에 저장된 데이터는 일반 텍스트로 저장되며, 게임 사용자들이 악의적으로 데이터를 변조할 수 있습니다. 이러한 문제를 방지하기 위한 일반적인 방법은 다음과 같습니다:
데이터 암호화: 데이터를 저장하기 전에 암호화하여 저장합니다. 이를 통해 사용자가 데이터를 쉽게 읽거나 변조할 수 없도록 합니다.
무결성 체크: 게임 실행 시 주요 데이터의 무결성을 확인하는 로직을 추가하여 변조 여부를 검사합니다. 예를 들어, 특정 값의 해시를 저장해둔 후, 게임 실행 시 해당 해시 값을 확인하는 방법이 있습니다.
서버 검증: 가능한 경우, 중요한 데이터는 클라이언트가 아닌 서버에서 관리하여 클라이언트 변조에 대한 영향을 줄입니다. 클라이언트는 데이터를 요청하고 서버는 검증된 데이터를 반환하는 방식입니다.
관련된 기존 질문과 답변을 통해 더 많은 정보를 얻을 수 있을 것입니다. 아래 링크를 참고해주세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.