유저 데이터 동기화 문제

안녕하세요.
유저 정보를 여러 테이블에 저장을 하는 경우, (ex. characters, items, pets)
아래의 예시 시나리오에서 어떤 식으로 처리를 하는 것이 좋을지 로직에 대한 질문 드립니다.
그와 관련해서 뒤끝에서 필요한 api 들을 제공하는지도 궁금합니다.

시나리오 A - 매 로그인 시 최신 정보가 맞는지 확인 및 동기화
A-1. 로컬의 정보와 서버의 정보가 동일한지 확인
A-2. 정보가 다른 경우 - 서버의 정보를 강제로 덮어 씌움

  • 질문 1. 이러한 시나리오가 정상적인 뒤끝 사용 방법인가요? - (DB 사용량 등)
  • 질문 2. A-1 에서 모든 데이터를 받아오지 않고 확인할 방법이 있을까요? (해시 값 등)

시나리오 B. 기기 변경 시 유저 정보 로드
방안 1. 새 기기로 구글 로그인 시 자동으로 서버의 정보를 로드
방안 2. 세이브/로드 버튼을 만들어두고 기기 변경 시 유저가 직접 데이터를 저장하고 로드함

  • 질문 3. 시나리오 A의 기능을 만들어두면 방안 1은 원하지 않아도 저절로 이루어질 것 같습니다. 만약 방안 1. 이 부적절하다면 새로 로그인 하는 경우에는 어떻게 데이터 로드를 방지할 수 있을 지 궁금합니다.
  • 질문 4. 방안1의 경우 기존 기기와 새로운 기기에서의 정보가 혼재되어 기기를 계속 번갈아 사용 시 데이터가 롤백되는 이슈가 있을 것 같습니다. 이 문제를 해결 가능할까요?
  • 질문 5. 방안2의 경우, 선의의 유저는 문제 없겠지만 확률형 아이템을 구매 후 무한으로 롤백을 하는 등의 어뷰징이 발생할 수도 있을 것 같습니다. 이를 어떻게 해결할 수 있을까요?
  • 질문 6. 각 장/단점을 고려했을 때 둘 중 어떤 방안이 나을지 아니면 주로 쓰이는 좋은 방안이 있는지 궁금합니다.

감사합니다!

안녕하세요 개발자님

우선 뒤끝의 경우 DB를 제공하고 있기 때문에 별도로 로컬에 유저의 데이터를 저장하지 않고

온라인 게임과 같이 필요할 때 데이터를 조회하는 방식을 제공하고 있습니다.

말씀하신 시나리오 A가 이와 유사한 것 같습니다.

질문 1의 경우 최초 로그인 시 모든 데이터를 조회해서 로컬에 저장하는 경우

DB 사용량은 제가 말씀드린 방법에 비해 현저하게 줄어들겠지만(필요할때 조회 vs 로그인 시 1회만 조회)

로컬에 저장된 데이터의 경우 해킹의 위험이 있기 때문에 유저의 아이템 정보 등은 로컬에 저장하지 않는 것을 추천드리고 있습니다.

(질문1)
다만 이는 어디까지나 개발자님의 재량이기 때문에 강제하지 않고, 정상적이지 않은 뒤끝 사용 방법은 아닙니다.

(질문2)
해시 값 등을 이용한 데이터 비교 방식은 제공하고 있지 않습니다.

(질문3, 질문4)
말씀드린 것처럼 데이터의 경우 필요할 때 조회하는 기능을 추천드리고 있기 때문에 시나리오 B의 방안 1과 방안 2는 기기가 어떤 것이냐에 따라 구분할 필요가 없을 것 같습니다.

일반적인 모바일게임 진행 시 블루스택같은 에뮬레이터에서 게임을 하던지, 어떤 핸드폰에서 게임을 하던지 모든 정보가 동일하게 표시되는 것을 생각하시면 될 것 같습니다.

모든 정보는 뒤끝 DB에 존재하고, 필요할 때 조회하면 되기 때문입니다.

또한 시나리오 A에서 말씀해주신 로그인 시 데이터를 불러오는 식으로 구현하실 경우에도

게임을 시작하면 로그인하고, 무조건 최초 1회 데이터 로드를 하기 때문에 이부분은 일어날 수 없는 부분에 대한 걱정이신 것 같아 신경쓰지 않으셔도 될 것 같습니다.

(질문5)
아이템 구매 후 뒤끝 DB에 구매한 아이템 정보를 업데이트 하시면 되기 때문에 문제가 안될 것 같습니다.

(질문6)
유저 정보를 character, items 등을 저장하신다고 하셔서 필요할 때 조회하는 기능을 말씀드렸습니다.

질문하신 취지와 전혀 다른 답변이 나온 것 같습니다.

다만 만약 유저정보, 소지 아이템 정보 같이 모든 유저가 다른 정보를 가지는 데이터가 아닌,

몬스터 정보(공격력, 체력 등), 아이템 스탯 정보 같이 모든 유저가 같은 정보를 가지는 데이터의 경우에는

말씀하신 시나리오A로 구현하는 것이 좋을 것 같습니다.

이 경우 매 로그인 시 데이터를 받아와 메모리 상에 혹은 로컬에 저장해두고 필요할 때 조회하는 것을 추천드리고 있습니다.

또한 뒤끝에서는 이를 위해 뒤끝차트 기능을 제공하고 있습니다.

뒤끝차트 기능을 이용하여 몬스터 스탯정보, 아이템 정보 등을 차트파일 로 작성하여 뒤끝콘솔에 업로드 하시면

이를 SDK에서 조회할 수 있고, 로컬 저장소에 저장하는 기능도 함께 제공하고 있습니다.

이 점 참고부탁드리겠습니다.

감사합니다.