주간미션 초기화 오류 문의

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

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

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

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

저번 주에 주간미션이 계속 초기화되는 오류가 발생을 했었습니다.
현재 해당 오류의 원인을 파악중인데, 지금은 문제가 재현이 되지 않고 있습니다.

주간 미션의 경우 매주 월요일 초기화되는데, 저번주에는 초기화가 빈번하게 발생하는 오류가 있었습니다.
서버시간을 가져와 비교하는 처리를 하고 있는데, 혹시 저번주에 서버시간에 오류가 발생하거나 하는 일이 있었을까요?
아니면 현재 콘솔을 추가하여 신규서버를 하나 더 추가했는데 이렇게 했을 경우 서버시간을 가져올 때 문제가 발생할 여지가 있을까요?

저도 월요일에 초기화 되어야 하는 수치들이 일요일날 초기화되는 오류가 발생했습니다.

서버 시간을 기준으로 초기화를 하는데, 무언가 잘못된 것 같아요 ㅠㅜ

안녕하세요 개발자님,
담당부서를 통해 상세 확인하여 안내드릴 수 있도록 하겠습니다.

확인 시 서버 시간 불러오기 기능에는 이상은 확인되지 않았습니다.

관련하여서는 기기의 국가 설정과 DateTime.Parse()을 통한 파싱을 진행하는 경우 발생할 수 있는 현상으로 확인됩니다.

GetServerTime 함수를 호출하는 경우 utc 의 시간으로 리턴 제공됩니다.
이를 보통 DateTime.Parse()를 통해 유저의 기기 설정에 따른 문화권의 시간으로 변경해주게 됩니다.
이 때 기기 설정을 한국이 아닌 타 국가로 설정해 놓은 경우에는 리턴되는 시간 값이 달라지게 됩니다.

예를들어 GetServerTime 을 호출하였을 때 아래와 같은 값이 리턴되었다면

returnValue : {“utcTime”:“2023-01-02T06:20:21.542Z”}

한국 설정된 기기로 DateTime.Parse() 를 통해 파싱하면 다음과 같은 시간이 리턴됩니다.

2023-01-02 오후 3:20:21

하지만 중국으로 설정된 기기를 통해 파싱한다면 아래와 같이 한시간 더 이른 시간으로 리턴됩니다.

2023-01-02 오후 2:20:21

이를 방지하기 위해서는 타임존 지정이 필요합니다.
관련된 내용으로 아래 커뮤니티 게시물을 참고해 주시면 감사하겠습니다.

전에 아래 코드로 작성을 했었다가, 글로벌 론칭 관련 문의 글을 드렸을 때 DateTime.Parse 로만 파싱하면 된다고 하셔서 아래 코드를 삭제하고 DateTime.Parse 코드로 시간을 파싱해서 작성했었습니다.
정확히 어떤게 맞는건가요? 글로벌 론칭 시 이 부분은 문제가 없을까요?

DateTime parsedDate = TimeZoneInfo.ConvertTimeToUtc(DateTime.Parse(time)).AddHours(9);

근데 utc 로 변환하고 9시간을 더하면 한국시간인데…다른 나라에서는 문제가 없을까요?

전에 문의 드렸던 글입니다.

당시 문의에 대해서는 컨텐츠를 위한 시간 설정이 아닌,
각 문화권에 시간 적용을 어떻게 하는지에 대한 문의로써 답변이 이루어졌습니다.

만약 글로벌 서버의 모든 유저가 국가와 관계없이 하나의 통일된 시간(UTC)에 주간 컨텐츠가 초기화 되도록 되어있다면
별도의 변환이나 파싱 없이 GetServerTime 를 통해 리턴되는 UTC + 0 시간을 기준으로 설정하고 제공해 주셔야 합니다.

이와 다르게 각 국가별로 특정시간에 컨텐츠가 초기화되도록 한다면,
현재와 같이 DateTime.Parse()를 통해 각 국가의 시간으로 변환 설정해 제공해 주셔야 합니다.

근데 DateTime.Parse() 로만 적용할 경우는 랭킹 초기화 시간이 각각 다르게 적용되게 되겠죠?

DateTime.Parse() 를 적용하더라도,
랭킹은 고정된 시간으로 UTC+9 04:00 ~ 05:00(한국시간 4~5시)에 진행됩니다.

네 감사합니다. 그럼 일단 서버시간 불러오기 기능은 문제가 없었군요.
일단 문제가 또 발생하면 다시 문의드리도록 하겠습니다.