배틀로얄에서 먼저 탈출한 플레이어의 다른 방 참여에 대해

뒤끝 게임방에는 퇴장이 없고,게임 결과로 퇴장이 되는 구조라는 것을 이해하고 있습니다.
배틀로얄 방식에선 마지막 플레이어가 종합적으로 순서를 멕여서 결과를 보내고
이후에 인게임과 게임방에서 퇴장처리가 된다고 알고 있습니다.

마지막 플레이어가 결과 값을 보내기 전까지 먼저 도달하여 로비로 돌아간 플레이어는 아직도 게임방에 갇혀있습니다. 이를 어떻게 처리해야 할까요?

배틀로얄 방식에서 먼저 도달한 플레이어의 결과 처리 및 퇴장 방법에 대하여 알고 싶습니다.

슈퍼게이머가 로비로 돌아간 플레이어가 될 경우엔 다른 플레이어를 슈퍼게이머로 교체해주고 싶습니다.

안녕하세요, 개발자님

배틀로얄의 경우 슈퍼게이머가 게임에서 나가는 경우
자동으로 다른 게이머가 슈퍼게이머로써 변경이 되도록 되어있습니다.

또한 로비로 돌아간 플레이어는 게임방에 남아있는것이 아니라 바로 다른 게임을 신청할 수 있는데
혹 이 과정에서 에러가 발생하는것은 아닌지 확인을 부탁드리겠습니다.

게임을 나가는 방법이 따로 있을까요?
게임 결과가 보내져야 이벤트로 받아져서 나가는 것이 아닌가요?

인게임 서버 접속 종료를 명시적으로 호출하면 게임을 나갈 수 있습니다.
자세한 내용은 아래의 개발자 문서를 참고해주시면 감사하겠습니다.

좋아요 1

감사합니다! 완료된 플레이어는 이제 탈출하게 되었습니다.
하지만 여전히 탈출한 플레이어는 새로운 게임에 접속할 수 없습니다.

매칭 대기열 > 매칭 성공 > 인게임 접속 루트에서
매칭 대기열 > 이전 세션 저장 정보 > 멈춤 현상으로 바뀌었습니다.

안녕하세요 개발자님

Tcp Client is working 예외는 이미 서버와 연결되어 있는데 다시 접속을 시도할 경우 발생하는 에러입니다.

약간 오해 하고 계시는 것이 있으신 것 같아서 정리해서 말씀드립니다.

  1. 매칭 서버와 인게임 서버는 물리적으로 분리된 별개의 서버입니다.

  2. 매칭서버에서 매칭이 잡혀 인게임 서버로 접속한다고 해도 매칭 서버와 접속이 종료되지 않습니다.
    매칭이 잡혀도 계속 매칭서버와 세션을 유지한 경우 인게임 서버에서 게임이 끝난 후 매칭서버와 다시 접속할 필요는 없습니다.

    반대로 인게임서버 접속 후 명시적으로 매칭서버와 접속을 끊고, 인게임 서버에서 게임이 끝난 후 다시 매칭서버와 접속을 하는 방법으로 로직을 작성하셔도 무방합니다.

    뒤끝 예제 게임에서는 후자의 방법으로 로직을 구현하였습니다.

  3. 서버와 접속이 끊기는 것과 게임에서 나가는 것은 별개의 경우입니다.
    만약 플레이어가 명시적으로 서버와 접속을 끊든, 버그 등으로 클라이언트가 튕겨서 서버와 접속이 끊어지던지 해당 플레이어는 여전히 그 게임에 속해 있고,
    해당 게임에 재접속이 가능한 상태입니다.

    이 때 매칭서버에서 새로운 게임을 신청하는 경우 진행하던 게임에서 나가져 새로운 게임을 신청하게 되는 것 입니다.

  4. 마지막으로 앞서 말씀드린 것처름 TCP Client is working예외의 경우 이미 접속을 요청한 서버에 접속해 있는데 중복해서 접속을 요청 한 경우 발생하는 예외입니다.

    정황상 JoinMatchMakingServer 함수를 호출하신 것 같은데 만약 인게임서버 접속 시 매칭서버와 접속을 종료하는 함수를 호출하지 않으셨다면 다른 게임을 시도하고자 할 때 해당 함수를 호출하지 않으셔도 될 것 같습니다.

    혹은 인게임 서버에 접속할 때 LeaveMatchMakingServer 함수를 호출하시면 해당 예외는 개선될 수 있을 것 같습니다.

위 내용을 참고부탁드리겠습니다.

감사합니다.

좋아요 1

이 답글을 통해 문제점을 발견했습니다. 늘 자세한 설명 감사합니다.