재접속 루틴에 관한 프로세스 질문입니다

이전 뒤끝 API버전에서는 재접속루틴이 아무런 문제가 없었는데
4.6.0버전으로 업데이트 하고 난 후 OnMatchInGameAccess나 OnSessionListInServer에 대한 작동방식이
꽤 달라져 수정하는 도중 Invalid 에러가 발생하여 질문합니다

  1. 처음에 진행중인 게임이 존재하는지 파악한 후 반환된 호스트네임, 서버포트를 JoinGameServer를 통해
    접속

  2. OnSessionListInServer콜백에서 반환된 유저리스트 적용

  3. OnSessionJoinInServer콜백에서 1번에서 반환된 룸 토큰 들고와서 JoinGameRoom 수행
    여기까지는 순조로운데

OnMatchInGameAccess콜백에서 ErrInfo가 InvalidOperation이 출력이되며 막힙니다.
Reason에 뭐라도 적혀있으면 추적하기 쉬울 것 같은데 어디서 잘못된 요청을 하고있는지 감이 안잡힙니다.

디버그로그를 보면

BackEnd.Game.GameMatch:#bW(MatchInGameSessionEventArgs)
BackEnd.Tcp.#Xi:#Qi()
BackEnd.Tcp.TcpClient:#4b()
BackEnd.Tcp.TcpClient:#5b()
BackEnd.Tcp.TcpClient:Poll()
BackEnd.Game.GameMatch:poll()
로 출력이 되는데 왜 이런 현상이 나타나는지 알고싶습니다

안녕하세요

재접속시에는 인게임 서버 접속 시 바로 게임룸에 입장되기 때문에

JoinGameRoom 함수를 요청하지 않으셔도 됩니다.

JoinGameRoom 함수를 요청하지 않으시면 재접속 시

OnSessionListInServer
OnSessionJoinInServer

두개 이벤트만 발생하고,
OnSessionJoinInServer의 ErrInfo가
Category: Success, Detail: NetworkOnline, SocketError: Success, Reason: Reconnect Success
로 리턴될 시 성공적으로 인게임 서버 및 게임을 진행중이던 방에 재접속을 한 것 입니다.

OnSessionJoinInServer 가 성공으로 리턴된 것을 확인 된 후 게임 로직에 따라 재접속 처리를 수행하시면 됩니다.

위에 발생한 InvalidOperation 에러는 이미 방에 접속해있는데
중복해서 서버로 입장 요청을 했기에 발생한 것 입니다.

답변 감사드립니다
프로젝트를 4.4.1 버전에서 4.6.0버전으로 업데이트 했는데
로직을 바꿔야 할 만큼 작동 방식이 크게 달라진 부분이 이 부분 이외에 없다고 생각해도 되지요?

기존 핸들러가 세션정보를 기준으로 처리되던 것이

유저의 정보 기준으로 처리되는 것으로 변경된 것 이외에는 큰 변경점이 없습니다.

또한 이전에는 유저-유저 매칭만 지원했지만

뒤끝콘솔에서 샌드박스 플래그를 설정한 경우

모든 유저가 모이지 않아도 서버에서 매칭 성공처리를 하고, 클라이언트에서 내부적으로 AI를 생성하여 유저-AI 매칭을 가능하도록 업데이트 한 것 이외에는

로직에 변경점은 없습니다 :blush: