방 서버 연결

방 서버는 Strix에서 제일 바쁩니다. 여러 방과 안에 있는 플레이어의 정보가 여기 들어 있습니다. 방 서버는 또 방 안에서 플레이어 간 메시지와 이벤트도 통제하고 전달합니다. 방에 입장하기 위해서는 방 서버에 연결해야 합니다.

본 페이지에서 설명했듯이 방 서버에 명시적으로 연결해도 되고 필요할 때 방 서버에 자동으로 연결하는 함수를 호출하여 묵시적으로 연결해도 됩니다.

노드 방

Strix Unreal SDK 용어에서 노드란 방 서버를 말합니다. 방 서버에는 여러 방이 있을 수도 있고, 서버 시스템에 여러 방 서버(서버 클러스터)가 있을 수도 있습니다. 특정 방에 액세스하기 위해서는 SDK가 ID 한 쌍을 알아야 합니다. 하나는 방 서버 ID이고 다른 하나는 그 안에 있는 방의 ID입니다.

Strix Unreal SDK는 이 쌍을 NodeRoom이라고 칭하기도 합니다. NodeRoom은 방 서버와 방의 조합으로 방 서버 정보 옆에 있는 특정 방을 나타냅니다. NodeRoom을 취급하는 함수 중에는 방 서버에 자동으로 연결하는 것이 많습니다. 그러면 방 서버에 먼저 연결하지 않아도 방에서 간단히 작동이 가능합니다.

방 서버 검색

방 서버에 명시적으로 연결하기 위해서는 이용 가능한 방 서버를 알아야 합니다. 클러스터의 마스터 서버에는 연결된 방 서버의 정보가 들어 있습니다. Strix Unreal SDK에는 이 정보를 쿼리하는 함수가 있습니다.

SearchNode 함수는 특정 조건에 맞는 방 서버를 검색합니다. SearchNodeRoom 함수는 특정 조건에 맞는 방을 검색하여 방과 방 서버의 정보를 리턴합니다.

참고

SearchNode는 조건에 맞는 방 서버를 리턴합니다. 그러나 마스터 서버는 클라이언트가 제공한 조건에 묵시적인 조건을 추가하여 목록을 추가로 필터링합니다. Strix Cloud를 이용 중이고 서버가 버전 1.2.0 이상인 경우, 마스터 서버는 방이 꽉 찬 방 서버를 묵시적으로 걸러냅니다. 즉, 방이 이미 최대 방 수 구성 값에 도달한 방 서버는 마스터 서버가 리턴하지 않습니다.

방 서버에 연결하기

방 서버는 몇 가지 함수를 통해 연결할 수 있습니다. 가장 명확한 방법은 호스트 이름, 포트, 프로토콜로 지정한 방 서버와 연결하는 ConnectToRoomServer 함수입니다. 이것은 SearchNode 또는 SearchNodeRoom 함수의 결과를 통해 획득할 수 있습니다.

JoinNodeRoom, JoinRandomNodeRoom, CreateNodeRoom 함수는 모두 클라이언트가 방에 입장하며, 그 과정에서 그 방의 방 서버에도 연결합니다. JoinNodeRoom은 방 서버 정보가 들어 있는 Strix 노드 방 정보 스트럭트가 필요합니다. 따라서 방 서버를 미리 찾을 수 있습니다. 이 세 함수 모두 마스터 서버 연결이 필요하지만 방 서버 연결은 필요하지 않습니다.

복수의 방 서버나 방에 수월하게 연결하려면 채널 인수가 필요합니다. 이것은 연결에 ID를 지정하는 역할을 합니다. 채널 ID는 이 연결에 매핑되며 채널 ID 인수에서 요소와 기타 함수가 이것을 지칭하여 연결에서 작동하게 할 수 있습니다(복수의 방과 채널 참조).

참고

SDK는 채널마다 방 서버를 하나만 연결하도록 제한하고 있습니다. 복수의 채널을 통해 같은 방 서버에 연결할 수 있습니다.

참고

ConnectToRoomServer 함수는 프로토콜 매개변수가 필요합니다. Strix Node 스트럭트에서 가져온 값을 전달해야 합니다.

Strix Cloud를 이용 중인 경우, 방 서버에 연결하는 프로토콜은 항상 "TCP"여야 합니다.

연결 해제

DisconnectRoomServer 함수는 방 서버에서 클라이언트를 연결 해제합니다. 그러면 더 이상 동기화되지 않으며, 그 결과 해당 채널에서 클라이언트의 방 연결이 해제됩니다.

상태

IsRoomServerConnected 함수로 방 서버가 연결되었는지 확인할 수 있습니다. 이때 확인하고자 하는 연결의 채널 ID를 이용합니다.

타임아웃

한 동안 활동이 없으면 방 서버 연결이 해제됩니다. 마스터 서버 연결과 달리, 방 서버 타임아웃은 연결이 하드하게 끊어지는 것으로, 플레이어는 그 채널에서 어떤 방에 있었다면 거기서 나가게 됩니다. 이 경우 방 서버에 다시 연결해야 합니다.

Strix Unreal SDK는 이렇게 연결이 끊어지지 않도록 방 서버에 하트비트 메시지를 주기적으로 보냅니다. 기본 구성은 하트비트 간격이 10초, 서버 타임아웃은 120초입니다. 따라서 정상적인 작동 과정에서는 방 서버 연결이 타임아웃되지는 않습니다.

참고

하트비트 타임아웃은 서버 측에서 구성할 수 있습니다. SDK로 하트비트 간격을 변경할 수도 있습니다(서버 동기화 시간 참조). 이 값들을 변경할 때는 조심해야 합니다. 설정이 바르지 않으면 방 서버 연결이 해제될 수 있습니다.