트렌젝션 사용 중, 다중 기기 접속 이슈 문의 입니다.

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 뒤끝 SDK 버전 :
  • 프로젝트명 :
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

안녕하세요.

하나의 계정으로 다수의 디바이스에 접속했을 때,
데이터가 꼬여버리는 이슈가 발생하여 문의 드립니다.

환경

  • 지속적으로 재화가 변동되어 잦은 저장 주기를 갖는 방치형 장르의 게임이라 서버 저장은 비용 부담이 있어, 로컬 저장 기능을 병행하여 활용하고 있음.
  • 트랜젝션 사용으로 변동있는 데이터만 저장함.
  • 아무 행동을 취하지 않아도 저장 주기가 있으나 잦은 로컬 저장 & 일정 시간 간격으로 서버 저장

문제
 1. A 기기 접속 후 설정 메뉴의 저장 클릭 (모든 데이터 서버 저장)
 2. A 기기 접속 상태로 방치
  - 지속적인 Item 테이블 로컬 저장 (방치 시 획득하는 재화) (서버 통신이 주기가 길어서, 토큰 만료 체크 안됨)
 3. B 기기 접속 후 재화 사용해서 아이템 구매 (Item, Inventory 테이블 서버 저장)
 4. B 기기 종료
 5. 조금 대기 후 A 기기 종료
 6. A 기기 재접속 시 최신 데이터인 Item 테이블(로컬) & Inventory 테이블(서버) 데이터 사용

위 스탭으로 진행 시
Item 테이블은 A기기가 최신이 되고(로컬)
Inventory 테이블은 B기기가 최신이 됩니다.(서버)
그래서 결과적으로 재화 소모 없이 아이템만 획득 가능한 이슈가 발생합니다.

해결 방법
 로컬 저장 전, 서버 통신 후 토큰이 만료되었는지 체크하는 방안이 가장 안전하다고 생각됩니다. (기존 기기의 테이블이 최신화 되는걸 방지)

위 이슈로 인해 가장 저렴한 서버 통신에 대해 알고자 합니다.
지금 생각 중인 방법은, 서버 상태 체크 함수 호출하는건데, (5천만 호출 당 499,000원) 해당 함수 호출하는거보다 좋은 방법이 있을지 확인 가능할까요?
그리고 해당 함수로 토큰 만료도 확인 가능한지 궁굼합니다.

다른 해결 방안이 있다면 알려주신다면 정말 감사하겠습니다.

좋아요 1

안녕하세요 개발자님,
공유해주신 환경과 흐름을 기반으로 보았을 때, 말씀하신 것처럼 로컬 저장과 서버 저장을 병행하는 구조에서 다중 기기 접속 시 롤백 등 가능성이 존재합니다.

남겨주신 정보 상 로컬 저장 및 일정 시간 간격의 서버 저장 주기를 확인하지 못하기에
보다 효율적인 방안을 명확히 안내드리지 못하는 점은 양해 바랍니다.

로컬 저장시마다 토큰을 확인하는 방식은 말씀하신 상황에 대한 대응 로직으로 적합하나,
로컬 저장이 빈번하다면 요금 증가로 이어지기에 추천드리기 어렵습니다.

5~15분 간격으로 서버상태 혹은 서버시간 확인 함수를 사용하고,
토큰 만료 상황이 발생하는 경우는 로컬 저장이 이루어지지 않도록 하고, 게임을 강제 종료시키는 등으로 처리하시는 방향을 권장합니다.

좋아요 1