OnChangeSuperGamer 이벤트에 관해서 문의남깁니다.

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

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

기타의 여러 이유로 모든 유저가 접속이 끊긴 게임룸을 파기하기 위해서
해당 방에 재접속한 유저가 입장하자마자 슈퍼게이머가 된다면 EndMatch로 방을 파기하게끔 로직을 구성했습니다.

그런데 아무도 없는 게임룸에 입장하자마자 OnChangeSuperGamer 이벤트가 호출되는 경우가 존재하나요??
이미 모든 유저가 접속이 끊긴 방인데도 자꾸 호출이 되네요.

그리고 또 하나, 멀쩡히 슈퍼게이머가 플레이하고 있는 방이고 해당 방에 다른 유저가 재접속하면 자꾸 OnChangeSuperGamer 이벤트가 호출되네요. 이게 가능한가요?
재접속한 유저쪽 로그에서는 자꾸만 멀쩡히 게임중인 슈퍼게이머와 유저들의 접속이 끊겼다고 OnSessionOffline 이벤트가 호출됩니다.

안녕하세요 개발자님,

OnChangeSuperGamer 핸들러는 슈퍼게이머의 요청이 없어진 이후(나간 이후) 15초가 경과될 때, 자동으로 호출이 되도록 되어있습니다.
아무도 없는 게임룸에 입장하였을 경우는 슈퍼게이머가 나간 이후 15초가 경과되기 전 입장하면서 발생하였을 가능성이 크니 이점 참고하여 주시면 감사하겠습니다.

추가로 문의해주신 내용의 경우 확인이 필요합니다.

  • 매치 타입, 매치모드 타입, 매칭 인원
  • OnChangeSuperGamer, OnSessionOffline 핸들러가 어떤 유저들에게 발생하는지 (플레이중인 유저, 재젒고 유저, 혹은 모두에게 발생하는지)

위 내용들 확인하여주시면 상세 확인하여 안내드릴 수 있도록 하겠습니다.
감사합니다.

답변 주셔서 감사합니다. 추가로 요청하셨던 내용들은 다음과 같습니다.

매치타입: 랜덤
매치모드 타입: 개인전(4인)
매치인원: 4명(3명 유저, 1명 AI)

OnChangeSuperGamer 핸들러가 재접속한 유저에게만 호출됐습니다. 이 경우 재접속한 유저가 슈퍼게이머가 됐다고 나옵니다. (이미 슈퍼게이머는 정상적으로 플레이하고 있는 유저로 변경된 이후임)

재접속한 유저에게는 플레이 중인 2명의 OnSessionOffline 핸들러가 호출됐습니다.

그리고 OnChangeSuperGamer 핸들러 호출 시점을 테스트 해본 결과 담당자님께서 말씀하신 것처럼
기존 슈퍼게이머가 나가고 15초가 경과한 뒤 호출되지 않고 기존 슈퍼게이머가 나가자마자 호출 되는 것으로 나왔습니다.

P.S
제가 작성한 OnChangeSuperGamer 핸들러는 다음과 같습니다.
OnChangeSuperGamer 핸들러의 로그는 자신이 슈퍼게이머가 됐을 때만 출력하도록 하고 있습니다.
제 문의 내용에 착오가 있으셨을텐데 제가 말씀드리는 OnChangeSuperGamer 이벤트가 호출됐다는 것은
저 로그들이 출력되고 있음을 말씀드린 것입니다.

안녕하세요 개발자님.

세세한 정보공유 감사드립니다.

재접속 한 유저에게 원래라면 발생하지 말아야할 OnChangeSuperGamer 및 OnSessionOffline가 호출되고 OnChangeSuperGamer에서는 자신의 세션 아이디가 호출되는 현상이라고 파악하면 될까요?

현재 제공해주신 사양으로 테스트를 진행하였을 때는 재현이 되지 않고 있어 좀 더 정보가 필요할 것 같습니다.

  1. 해당 현상은 간혈적으로 발생하는 것일까요? 항상 발생하는 것일까요?
  2. 유저가 재접속하는 상황은 어떠한 경유로 재접속을 하는 것일까요?(게임을 강제종료해서, OnSessionOffline 함수가 발생해서, 게임이 팅겨서 등)
  3. 유저가 나가고 재접속하기까지의 시간 관계 없이 발생이 되는 것일까요?(나간 후 즉시 들어갈 경우 발생, 10분등의 시간이 지나고 발생)

해당 질문에 대한 사항도 추가적으로 답변해주시면 감사하겠습니다.

  1. 재접속 한 유저에게 원래라면 발생하지 말아야할 OnChangeSuperGamer 및 OnSessionOffline가 호출되고 OnChangeSuperGamer에서는 자신의 세션 아이디가 호출되는 현상이라고 파악하면 될까요?

넵 맞습니다!

  1. 해당 현상은 간혈적으로 발생하는 것일까요? 항상 발생하는 것일까요?

항상은 아니지만 높은 확률로 발생합니다!

  1. 유저가 재접속하는 상황은 어떠한 경유로 재접속을 하는 것일까요?(게임을 강제종료해서, OnSessionOffline 함수가 발생해서, 게임이 팅겨서 등)

저희가 재접속을 테스트해보기 위해 강제종료 후에 재접속 테스트를 해보고 있었습니다.

A상황: 현재 유저 a, b, c가 있고 a가 슈퍼게이머 일 때 b가 강제종료 후 재접속을 합니다. 이 때 a가 슈퍼게이머임에도 불구하고 b에서는 자신이 슈퍼게이머가 됐다고 로그가 찍힙니다.

B상황: 현재 유저 a, b, c가 있고 a가 슈퍼게이머 일 때 우선 c가 강제종료합니다. 그리고나서 a가 강제종료 합니다. 이 때 슈퍼게이머는 b가 됩니다. 그리고나서 c가 접속했을 때 이미 슈퍼게이머는 b가 됐지만 c가 슈퍼게이머가 됐다고 로그가 찍힙니다. 그런 다음 a가 한참 전에 강제종료 했음에도 불구하고 c쪽 로그에서 a의 OnSessionOffline 핸들러가 호출됩니다.

종합적으로 B상황일 때가 높은 확률로 발생합니다!

  1. 유저가 나가고 재접속하기까지의 시간 관계 없이 발생이 되는 것일까요?(나간 후 즉시 들어갈 경우 발생, 10분등의 시간이 지나고 발생)

재접속하기까지는 보통 1~2분 안에 진행하였습니다. 보통 나간 후 즉시 들어갈 경우에 많이 발생하는 것 같습니다.

넵 공유 감사드립니다.

해당 정보까지 참고하여 내부에서 조금 더 테스트를 진행해보도록 하겠습니다.

테스트 결과까지 어느정도 시간이 걸릴 수 있는 점 참고해주시면 감사하겠습니다.

넵 답변 기다리겠습니다^^

안녕하세요 개발자님.

확인이 늦어 죄송합니다.
테스트를 해본 결과 다음과 같은 현상을 확인할 수 있었습니다.

OnChangeSuperGamer가 자신에게 호출되었을 때 백그라운드등으로 Poll이 호출되지않은 상태. 이후로 Poll을 호출하지 않고 그대로 게임 종료 후 해당 서버에 다시 접속한 상태.

해당 이슈의 경우, 유저가 Poll을 호출하지 않을 경우, 그동안 보낸 메세지를 1분동안 서버에서 보관하고 있다 재접속을 하게 될 경우 다시 보내게 됩니다.

백그라운드상태일 때 OnSessionOffline이나 OnChangeSuperGamer 핸들러가 호출될 경우, 메세지를 보관하게 되며 다음 재접속 때 한번에 호출되게 됩니다.

슈퍼게이머 A가 나가고 B가 나갔을 때, A가 B에게 슈퍼게이머 권한을 주었지만 B가 Poll을 호출하고 있지 않다면 서버는 B가 아닌 다른 유저로 슈퍼게이머를 지정하게 됩니다. 하지만 B로 지정되었다는 메세지는 남아있게 되며 해당 메세지는 재접속 시 보내지게 됩니다.

재접속 시 보내진 메세지는 순서도를 보장하기에 슈퍼게이머가 정상인 메세지는 제일 마지막에 온 메세지 입니다.

재접속 시 OnSessionListInServer에서 호출이 된 게이머가 정상적으로 지정된 슈퍼게이머이므로,
만약 OnSessionListInServer가 호출된 적이 없고 OnChangeSuperGamer가 호출되었다면 해당 메세지는 무시하는 식으로 구성해주시기 바랍니다.

좋아요 1

답변 감사합니다^^
가이드 주신대로 작성해보겠습니다!