인게임서버 구조

인게임 서버 구조에 대한 설명입니다.

인게임 서버 접속하기

인게임 서버는 매칭된 유저들 간 실시간으로 메시지를 주고받을 수 있는 기능을 제공해줍니다.
유저는 아래와 같은 순서로 매칭서버 및 게임방에 접속하여 게임을 시작할 수 있습니다.

인게임 서버 구조

1. 인게임 서버 접속하기

매칭이 성사되었을 때 넘겨받은 인게임 서버 주소와 포트번호를 이용하여 인게임 서버에 접속합니다.

2. 게임방 접속하기

매칭이 성사되었을 때 넘겨받은 게임방 토큰값을 이용하여 게임방에 접속합니다.
이 때 현재 방에 참여하고 있는 유저들의 리스트와 게임방 접속 성공 메시지를 함께 수신받습니다.

3. 게임 시작하기

함께 매칭이 성사된 모든 유저가 게임방에 접속하면 콘솔에서 설정한 게임 시작 대기 시간이 지난 후에 게임시작 메시지가 모든 클라이언트에 송신됩니다.

게임 진행하기

인게임 서버 구조2

1. 바이너리 데이터 / 채팅메시지 송수신하기

게임시작메시지를 받은 이후 바이너리 데이터와 채팅 메시지를 송신할 수 있습니다.
서버로 송신한 데이터는 서버를 거쳐 보낸 유저를 포함하여 게임 방 내 모든 유저에게 브로드캐스팅됩니다.

2. 게임 결과 보내기

게임방 내 모든 유저가 게임결과 메시지를 서버로 보내면 서버에서는 해당 결과 메시지를 바탕으로 결과를 종합하여 DB에 반영합니다.

3. 게임 종료

게임 결과 종합이 완료됨과 동시에 게임이 종료됩니다.
게임이 종료되면 유저는 인게임 서버와 접속이 자동으로 종료됩니다.

재접속

게임 도중 클라이언트가 종료되거나 네트워크 연결이 원활하지 않아 접속이 끊어졌을 때 인게임 서버에 재접속 할 수 있습니다.

재접속 구조

아래와 같은 상황에서 인게임 서버와 접속이 끊어질 수 있습니다.

  • 통신 상태 불량 등의 이유로 클라이언트와 인게임 서버가 30초 이상 통신이 원활하게 이루어지지 않으면 자동으로 인게임 서버와 접속이 끊어집니다.
  • 게임도중 클라이언트의 비정상적인 종료 혹은 유저가 강제로 클라이언트를 종료했을 때 인게임 서버와 접속이 끊어집니다.

SDK에서 자동으로 서버와 재접속을 시도하는 경우

  • 통신 상태 불량 등의 이유로 클라이언트와 서버가 연결이 끊어지는 경우 SDK에서 자동으로 서버와 재접속을 시도합니다.
  • SDK에서는 재접속을 시도 후 실패하는 경우 서버와 연결을 끊습니다.

수동으로 재접속을 시도하는 경우

클라이언트의 종료 후 다시 게임을 시작하는 경우 재접속을 시도할 수 있습니다.

  • 뒤끝 비동기 서버에 현재 진행중인 게임이 존재하는 지 검색합니다.
  • 진행중인 게임이 있을 경우 리턴받은 정보를 이용하여 수동으로 재접속을 시도할 수 있습니다.

재접속을 못하는 경우

  • 인게임 서버와 접속이 끊긴 이후 매치서버에서 매칭 신청을 하면 자동으로 해당 게임에서 패배처리됩니다. 게임에서 패배처리 된 이후에는 해당 게임에 다시 재접속할 수 없습니다.
  • 인게임 서버와 접속이 끊긴 상태에서 다른 유저가 게임을 끝내면(게임 결과 메시지를 서버로 보내면) 해당 게임에 재접속할 수 없습니다.