[뒤끝매치] 두번째 접속시 씬 로드가 안됩니다.

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

  • 뒤끝 SDK 버전 : 가장 최신버전
  • 프로젝트명 : OnlineTest
  • 스테이터스 코드 :
  • 에러 코드 : 없음
  • 에러 메시지 : 없음

게임 로그인을 한 후 처음으로 매칭이 잡히면 인게임 서버 접속이 잘 되고, 씬도 잘 넘어갑니다. 하지만 한판을 끝내고 두번째 매칭을 잡으면 매칭 성사(Success)까지만 되고 그 후 이벤트는 실행을 하지 않습니다. ㅠㅠ 어떻게 해야할까요?(게임방에 접속하면 LeaveMatchMakingServer()을 실행합니다.)

안녕하세요 개발자님.

먼저 인게임이 종료되고 로비로 가는 로직중에 씬 이동이 있다면 Start등의 함수에서 핸들러의 초기화가 일어났는지 확인해주셔야합니다.

핸들러의 경우, OnMatchMakingResponse += (args) => 와 같이 += 형태로 되어있을 경우 핸들러가 한번 더 추가되어 한 요청의 두번의 응답이 발생하는 식으로 로직이 정상적으로 작동하지 않을 수있습니다.

만약 씬 이동 후에 핸들러 설정함수를 호출하고 핸들러 설정 함수가 위와같은 식으로 +=이 되어있는지 확인해주시기 바랍니다.

매칭 성사가 이루어진 후에는 매칭 성사의 값들을 이용하여 인게임 서버 접속 함수를 호출해야합니다.
매칭 성사 핸들러 이후 인게임 서버 접속 함수를 호출을 했는데 응답이 오지 않았는지 확인해주시기 바랍니다.

OnMatchMakingResponse += (args) => // serverAddress와 serverPort 확인하는 곳
{
    string serverAddress = args.RoomInfo.m_inGameServerEndPoint.m_address;
    ushort serverPort = args.RoomInfo.m_inGameServerEndPoint.m_port;
}

void JoinInGameServer() // 임의의 함수
{
    bool isReconnect = true;
    ErrorInfo errorInfo = null;

    if(Backend.Match.JoinGameServer(serverAddress, serverPort, isReconnect, out errorInfo) == false)
    {
        // 에러 확인
        return;
    }
}

만약 위의 두가지 케이스에도 포함되어있지 않았다면 2번째 매칭을 잡을때 관련 로그를 공유해주시면 감사하겠습니다.(매칭 서버 접속 핸들러 → 대기방 생성 핸들러 → 매칭 신청 핸들러 → 매칭 성사 핸들러의 로그)

ErrInfo : ErrorCode.InvalidOperation
Reason : Already matchmaking in-progress.

이 에러가 뜨긴 하지만 그 후 바로 Success가 호출이 됩니다.

해당 에러의 경우, 이미 매칭이 되어있을 경우 발생하게 됩니다.

인게임 매치가 끝나면 결과 보내기(MatchEnd)함수가 정상적으로 호출되어 아래 핸들러가 성공으로 호출되었는지 확인해주시기 바랍니다.

Backend.Match.OnLeaveInGameServer += (args) => {
    // TODO
};

위 핸들러는 잘 호출이 됩니다

앗 이벤트 호출시 +=을 =로 수정하니 해결이 되었습니다! 정말 감사합니다! :grinning: