매치 중 제한시간을 만들고 싶습니다.

턴 방식 게임처럼
상대방과 내가 한번씩 턴을 주고 받을 때
상대방이 턴을 넘기지 않는다던가, 앱을 종료 하였을 때 자동으로 상대방의 턴이 넘어 갔으면 좋겠는데요.

생각해둔 방법이 몇가지 있는데
혹시 따로 뒤끝매치에서 제공 할 수 있을만한 기능이 있는지 궁금합니다.

  1. 내 클라이언트 내부에서 타이머를 돌려 특정 시간이 지나면 클라에서 턴을 넘기는 패킷을 전송
    -> 문제는 클라이언트가 스피드핵 같은것을 사용해 내부 시간이 지나가지 않게 변경하면 계속 턴을 넘기지 않게 할 수 있음

  2. 상대방의 클라이언트 내부에서 타이머를 돌려 특정 시간이 지나면 상대방의 턴을 넘기는 패킷을 전송
    -> 위와 마찬가지의 문제, 상대방이 핵을 사용 시 내 시간이 끝나지 않았는데 턴이 넘어가 버리는 경우

  3. 양방향 모두 검사 하여 둘다 확인 되었을 때 진행
    -> 둘중 하나의 정보가 다를 때 이를 검증할만한 기능이 뒤끝 매치에 있을까요?

  4. 서버에서 특정 시간동안 상대방에게 응답이 없을 경우 처리
    -> 개발문서를 봤을때는 없는거 같은데, 혹시 제 의도와 비슷한 결과를 낼 수 있을 만한 부분이 있을 지 궁금합니다.

감사합니다.

안녕하세요 개발자님

우선 뒤끝매치의 경우 유저 간 (클라이언트 간) 실시간으로 데이터를 송수신 할 수 있는 인프라와

점수 관리 하는 기능만 제공해주고

이외의 기능은 제공하고 있지 않습니다.


1번, 2번, 3번의 경우 궁극적으로 문제는 클라이언트를 기준으로 타이머를 돌리기에 문제가 생기기에

게임 시작 시 (턴 시작이 아님) 서버 시간을 불러와 현재 서버 시간을 조회해 저장해두고,

타이머가 종료되었을 때 서버 시간에 타이머 시간(1턴의 제한시간)을 더해 검증 후

그 오차가 클 때 (예상 턴 종료시간보다 터무니없게 작거나 혹은 터무니 없게 클 경우)

버그 혹은 핵 이용으로 보고 적절한 조치를 취하는 방식을 사용하시면 도움이 될 것 같습니다.


4번의 경우 상대방의 응답이 없는 경우

상대방에 단순히 아무 작업을 하지 않는 경우에 대한 피드백은 없지만

만약 유저가 자의적으로 게임을 종료하든, 에러로 인해 게임이 종료되든 혹은 연결상태가 좋지 않아 서버와 연결이 끊어진 경우에는

연결이 끊어진 유저와 해당 유저와 게임을 하고 있는 모든 유저에게 offline 이벤트가 호출됩니다.

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

좋은 팀 감사합니다.
사전에 예외를 막기보다는 사후 처리방향으로 접근해 봐야겠네요.

답변을 보고 궁금한 부분이 생겼는데,
데이터 송수신 인프라와
점수 관리 하는 기능 제공이라고 말씀하셨는데요.

인게임 서버에서 점수 관리 기능이 어떤 부분을 말씀하시는건지 알 수 있을까요?
해당 부분은 개발자 문서에서 못본것 같아서요.

매치 완료 후 매치 결과를 서버로 전송하였을 때

승/패 여부와 포인트 혹은 mmr을 상승, 하락 시키는 기능을 말씀드린 것 입니다.

답변 감사합니다 :slight_smile: 좋은 하루 되세요.