리더보드 기능 완전히 완성
리더보드 : 아이디 하나에 해당하는 최고점만 기록하도록
리더보드 : 시간 관련하여 서버 사이드, UTC 기준 시간으로 설정하도록 변경
몬스터 턴 액션: [강한 일격] 75% 확률로 1.75배 데미지, 25% 확률로 실패, [회복]: 최대체력의 10% 회복 추가
실수한 부분 중 하나는
왜 현재 시각과 내가 처리한 시각이 다른가에서..
const currentDate = new Date(); // 현재 현지시간 KST
const currentIsoDate = new Date().toISOString; // UTC 기준
KST와 UTC 표준시의 차이였던 것을 알게 되었다.
Server가 전담하는 것이 스탠다드하다. 다음과 같은 이유들로 볼 수 있다.
클라이언트는 로컬 시스템 시간에 의존하게 되며, 사용자가 시스템 시간을 수정할 수 있기 때문에 조작 가능성의 문제점이 생긴다. 반면, 서버는 NTP(Network Time Protocol)와 같은 정확한 시간을 기반으로 운영되므로 더 신뢰도가 높다.
글로벌 서비스라고 한다면 여러 클라이언트가 다양한 시간대를 가지고 있기 때문에 이를 고려한 부분이 필요하다. 따라서 서버에서 UTC 표준시를 저장하여 처리하고, 이 데이터에 대해서 클라이언트 기준의 현지 시각에 맞춰 후처리 변환을 하는 것이 일반적이다.
여기서 더 실무적으로 들어간다면
Server가 담당하느냐, Database 기준시로 담당하느냐의 차이도 존재한다고 하는데
이는 보통 서비스나 회사의 정책따라 달리 간다고 한다.