인게임 서버 함수

인게임 서버 구조에 대해서는 해당문서를 참고해주세요.

인게임 서버 접속하기

유저들 간 실시간 게임을 위한 인게임 서버에 접속합니다.

안내
  • JoinGameServer 함수가 true로 리턴되고, ErrorInfo 또한 Success로 리턴되었을 경우 인게임서버와 소켓연결에 성공했다는 것이고, 유저 인증 등의 작업은 이루어지지 않은 상태입니다.
  • 반드시 이벤트 핸들러를 통해 인게임 서버 접속이 성공했는지 한번 더 체크해야 합니다.
  • JoinGameServer(string serverAddress, string serverPort, bool isReconnect, out ErrorInfo errorInfo) -> bool
    
    //example
    ErrorInfo errorInfo;
    Backend.Match.JoinGameServer(serverAddress, serverPort, false, out errorInfo);

    Parameters

    ValueTypeDescription
    serverAddressstring인게임 서버 주소 (OnMatchMakingResponse에서 전달받은 서버 주소)
    serverPortushort인게임 서버 포트 (OnMatchMakingResponse에서 전달받은 서버 포트)
    isReconnectbool재접속 여부 (false). 재접속을 수행하는 법은 여기를 참고해주세요.
    errorInfoErrorInfo성공/실패 정보

    Error cases

    • 인게임 서버 접속에 성공한 경우
      ErrorInfo.Category : Success

    • 인게임 서버 접속에 실패한 경우
      ErrorInfo.Category : Exception or SocketOperationError
      ErrorInfo.Reason : 접속 실패에 대한 이유

    인게임 룸 접속하기

    실시간 게임을 진행 할 룸에 접속합니다. 반드시 인게임 서버 접속 후 룸에 접속을 시도해야 합니다.

    안내
  • 매칭이 된 유저들이 1분안에 모두 룸에 접속하지 않으면 해당 룸은 패기되고, 이미 룸에 접속해있던 유저들은 인게임서버와의 연결이 끊어집니다.
  • 이 경우 게임 자체가 성사되지 않은것이기에 승패처리는 되지 않습니다.
  • JoinGameRoom(string roomToken) -> void
    
    //example
    Backend.Match.JoinGameRoom(roomToken);

    Parameters

    ValueTypeDescription
    roomTokenstring입장할 룸 토큰 (OnMatchMakingResponse에서 전달받은 룸토큰)

    게임 데이터를 서버로 송신

    키 입력 값 혹은 일렬의 게임로직의 결과 값을 인게임 서버로 전송합니다.
    송신된 데이터는 서버에서 모든 클라이언트에게 브로드캐스팅합니다. 이 때 모든 클라이언트에는 서버로 데이터를 송신한 클라이언트도 포함됩니다.

    안내
  • 해당 함수를 이용하여 서버로 메시지를 보내면 룸 안에 있는 모든 유저에게 데이터가 전송됩니다.
  • 보내고자 하는 데이터를 바이트 배열로 바꾸는 방법은 해당 문서를 참고해보세요.
  • 데이터를 서버로 전송할 때 쓰로틀링이 적용되어 있습니다. 쓰로틀링 관련해서는 해당 문서를 참고해주세요.
  • SendDataToInGameRoom(byte[] data) -> void
    
    //example
    Backend.Match.SendDataToInGameRoom(data);

    Parameters

    ValueTypeDescription
    databyte[]바이트 배열

    채팅 메시지를 서버로 송신

    채팅 메시지를 인게임 서버로 전송합니다.
    송신된 데이터는 서버에서 모든 클라이언트에게 브로드캐스팅합니다. 이 때 모든 클라이언트에는 서버로 데이터를 송신한 클라이언트도 포함됩니다.

    ChatToGameRoom(MatchChatModeType matchChatModeType, string message) -> void
    
    //example
    Backend.Match.ChatToGameRoom(matchChatModeType, message);

    Parameters

    ValueTypeDescription
    matchChatModeTypeMatchChatModeType전체 메시지인지 팀 메시지인지 여부 MatchChatModeType.Team(팀) 혹은 MatchChatModeType.All(전체)
    messagestring전송할 문자열

    게임 결과를 인게임 서버로 전송

    실시간 게임의 결과를 인게임 서버로 전송합니다. 게임에 참여하고 있는 유저가 모두 게임 결과를 인게임 서버로 보내야 게임이 정상적으로 종료됩니다.

    MatchEnd(MatchGameResult matchGameResult) -> void
    
    //example
    Backend.Match.MatchEnd(matchGameResult);

    Parameters

    ValueTypeDescription
    matchGameResultMatchGameResult게임의 결과

    MatchGameResult

    ValueTypeDescription
    m_winnersList < SessionId >승자 리스트
    m_losersList < SessionId >패자 리스트
    m_drawsList < SessionId >무승부 리스트
    • 1:1의 경우 승자의 세션ID는 m_winners에 패자의 세션ID는 m_losers에 추가하시면 됩니다.
    • 개인전의 경우 1등 ~ 10등의 세션ID를 순서대로 m_winners에 추가하시면 됩니다.
    • 팀전의 경우 승리한 팀의 모든 세션 ID를 m_winnner에, 패배한 팀의 모든 세션 ID를 m_losers에 추가하시면 됩니다.

    인게임 서버 접속 종료

    인게임 서버와 접속을 종료합니다.

    LeaveGameServer() -> void
    
    //example
    Backend.Match.LeaveGameServer();

    내 인게임서버 세션ID 조회

    인게임 서버에서의 내 세션을 조회합니다.

    GetMySessionId() -> SessionId
    
    //example
    Backend.Match.GetMySessionId();

    인게임 서버 세션ID로 닉네임 검색

    같은 게임에 참여하고 있는 세션ID로 해당 세션의 닉네임을 조회합니다.

    GetNickNameBySessionId(SessionId session) -> string
    
    //example
    Backend.Match.GetNickNameBySessionId(session);