RequestMatchMaking의 인자값과 GetMatchList

  • 뒤끝 SDK 버전 : 5.14.1
  • 프로젝트명 : MagnetGame

문제가 되는 부분

private void ProcessMatchMakingResponse(MatchMakingResponseEventArgs args)
{
    string debugLog = string.Empty;
    bool isError = false;
    switch (args.ErrInfo)
    {
        case ErrorCode.Success:
            // 매칭 성공했을 때
            debugLog = string.Format(SUCCESS_MATCHMAKE, args.Reason);
            // LobbyUI.GetInstance().MatchDoneCallback();
            ProcessMatchSuccess(args);
            break;
        case ErrorCode.Match_InProgress:
            if (args.Reason == string.Empty)
            {
                debugLog = SUCCESS_REGIST_MATCHMAKE;
            }
            break;
         // 이하 생략
    }
}

디버그
매칭 대기열에 등록되었습니다.
UnityEngine.Debug:Log (object)
BackendMatchManager:ProcessMatchMakingResponse

이상태에서 넘어가질 않습니다.
다른 기기에서 연결을 해도 매칭이 잡히질 않더라구요

제가 생각하는 문제가 되는 부분은
Backend.Match.CreateMatchRoom() → Backend.Match.OnMatchMakingRoomCreate(args) → RequestMatchMaking() → OnMatchMakingResponse → ProcessMatchMakingResponse(args)

현재 이 순서로 만들었는데
RequestMatchMaking() 함수 부분에

public void RequestMatchMaking()
    {
        // 매청 서버에 연결되어 있지 않으면 매칭 서버 접속
        if (!isConnectMatchServer)
        {
            Debug.Log("매치 서버에 연결되어 있지 않습니다.");
            Debug.Log("매치 서버에 접속을 시도합니다.");
            JoinMatchServer();
            return;
        }
        // 변수 초기화
        isConnectInGameServer = false;

        Backend.Match.RequestMatchMaking(MatchType.Random, MatchModeType.OneOnOne, "2024-10-16T04:53:20.101Z");
        if (isConnectInGameServer)
        {
            Backend.Match.LeaveGameServer();
        }
  }

RequestMatchMaking의 인자가 잘못 들어가서 그런 것 같다고 생각이 듭니다

질문사항

  1. 제가 생각한 곳의 문제가 맞나요?

  2. 만약 맞다면 랜덤매치 1:1로만 설정해서 만드려고 한다면 RequestMatchMaking의 인자값을 어떻게 설정해서 넣어야 할까요?

  3. 뒤끝매치 예제의 GetMatchList와 매치카드의 들어가는 값들이 잘 이해가 안갑니다. 매치카드의 값은 json 파일로 만들어진 데이터베이스에서 받아온 값들을 넣어준 것 인가요? 아니면 서버에서 받아온 값인가요?

  4. 예제와 설명을 많이 읽고 분석해봤지만… GetMatchList와 매치카드를 어떻게 만들어야할지 감이 아예 안잡힙니다… 조금 더 자세한 설명을 부탁드려도 될까요…?

감사합니다

안녕하세요 개발자님,
RequestMatchMaking의 인자값은 GetMatchList 를 통해 받아온 매치 카드 정보에서 아래와 같은 예시 값을 그대로 넣어주면 됩니다.

{
    inDate: {"S" : "2020-08-04T09:24:14.807Z"},
    matchType : {"S" : "mmr"},
    matchModeType : {"S" : "OneOnOne"},
}

GetMatchList는 뒤끝 서버에서 제공하는 매칭 관련 정보를 기반으로 동작합니다.
매치카드는 콘솔에서 설정한 매치 정보를 기반으로 서버에서 제공하는 값으로
GetMatchList 호출을 통해 서버에서 정보를 받아오게 됩니다.
이 데이터는 JSON 형식으로 받아오게 되며, 각 정보를 해석하여 클라이언트에서 처리해주시면 됩니다.

번거로우시겠지만 콘솔을 통해 매칭 카드를 새로 생성하신 후,
GetMatchList 를 통해 넘어오는 정보들을 확인하시고 각 데이터를 분석해보시면서 적용해 나가 주시면 감사하겠습니다. :D

감사합니다 덕분에 연결에 성공했습니다.

근데 한가지만 더 여쭤볼 수 있을까요?

현재 콘솔창에서 Test 매치방을 하나 만들어두고, 만들어둔 Test방에만 들어갈 수 있게 설계하였습니다.
꼭 해당 지정한 방이 아니라 비어있는 매치방이 있다면 들어가고 빈매치방이 없다면 생성해서 접속하는 방법이 있을까요?

애초에, 대전제가 콘솔창에서 매치방을 여러개 만들어두고 그 중 비어있는 방에 접속하는 구조일까요?

말씀해주신 것과 같이 1:1 매칭을 진행하는 상황이라면,
매칭카드 조회 후 각각의 유저들이 대기방을 생성하고, 이후에 매칭을 신청하여 매칭이 이루어지게 됩니다.

콘솔에서 설정한 매치는 방 개념이 아닌 유저들이 이용할 매칭의 유형을 설정하는 것이니 이점 확인 바랍니다.
(뒤끝매치는 리그 오브 레전드와 같은 개념의 매치로 생각해주시면 됩니다.)

감사합니다! 많은 도움이 되었습니다