방 개요

Strix에서 두 클라이언트가 소통하기 위해서는 같은 방에 입장해야 합니다.

이란 특정 환경에 모여서 함께 플레이하는 플레이어 그룹을 말합니다. 이 정의는 유연합니다. 즉, 플레이어 두 팀이 서로 다투는 맵도 방이 될 수 있고, 플레이어들이 서로 상호작용하는 더 큰 월드도 방이 될 수 있으며, 현재 게임에 없거나 일정한 거리 밖에 있는 플레이어와 소통하며 액션을 동기화하는 채팅방도 방이 될 수 있습니다.

방은 방 서버에 만들어지며 방 서버와 연결되고 나면(또는 NodeRoom 함수를 통해 마스터 서버와 연결되면) 입장이 가능합니다. 방 운영에 관해서는 본 문서 뒤에서 자세히 설명합니다.

방은 Strix Unreal SDK에서 Strix Room 스트럭트로 표시됩니다. 이것은 그 속성들의 컨테이너입니다.

Strix Room 스트럭트는 방 속성들의 모델로, 방 안에서 개체의 동기화에 사용되지 않습니다. 그보다는 이름, 플레이어 수, 맵 이름 등 서버에서 추적해야 하는 방의 식별 특징을 나타냅니다.

방 속성

방에는 몇 가지 특징이 있습니다. 서버에서 설정하는 속성, 클라이언트가 수정할 수 있는 속성, 커스터마이징 목적으로 이용할 수 있는 속성 등입니다. 즉석에서 커스텀 속성을 자체적으로 정의해도 됩니다.

이름

타입

설명

변수 이름

수정

검색

primaryKey

Integer

기본 키 (고유한 ID)

Id

아니요

*

capacity

Integer

방에 들어갈 수 있는 플레이어의 수

Capacity

memberCount

Integer

현재 플레이어 수

Member Count

아니요

isJoinable

Boolean

입장할 수 있는 방일 경우

Is Joinable

state

Integer

커스터마이징 가능

State

name

String

방의 이름

Name

password

String

방의 비밀번호

Password

key1

Float

커스터마이징 가능

Key 1

key2

Float

커스터마이징 가능

Key 2

key3

Float

커스터마이징 가능

Key 3

key4

Float

커스터마이징 가능

Key 4

key5

Float

커스터마이징 가능

Key 5

key6

Float

커스터마이징 가능

Key 6

key7

Float

커스터마이징 가능

Key 7

key8

Float

커스터마이징 가능

Key 8

stringKey

String

커스터마이징 가능

String Key

properties

Strix Property Map 스트럭트

사용자 정의 커스텀 속성 세트

Properties

아니요

  • 이름: 방 속성의 논리적 이름입니다. 서버에서 관리하는 것과 같습니다. 예를 들면, 방을 만들 때, 또는 검색 구성 시에 속성 맵에 사용됩니다.

  • 타입: 방 속성의 데이터 타입입니다. 블루프린트 스크립트에 노출되는 것과 같습니다.

  • 변수 이름: Strix Room 스트럭트에 있는 상응하는 멤버 변수의 이름입니다. 블루프린트 스크립트에 노출되는 것과 같습니다.

  • 수정: SetRoom 함수를 호출하여 속성값을 수정하거나 새 방을 만들 때 값을 지정할 수 있는지 여부. 수정할 수 없는 속성을 수정하려고 하면 이 연산에서는 오류가 보고되지 않고 그 이름으로 커스텀 속성이 속성에 만들어질 수 있습니다.

  • 검색: 방을 검색할 때 조건 구성이나 순서 사양에서 방 속성을 이용할 수 있는지 여부.

참고

Strix Unreal SDK에서는 이름을 스트링으로 하여 방 속성을 지정해야 하는 경우가 있습니다. 찾기 힘든 버그가 생기지 않도록 속성 이름은 대소문자를 구분해 주십시오. 또, 이름(이름 열에 나와 있는 것)은 블루프린트 스크립트에서 Strix Room (또는 Strix Node Room) 스트럭트에 있는 멤버 변수를 대상으로 표시되는 표시 이름(변수 이름 열에 나와 있는 것)과는 다릅니다.

예를 들어 새 방을 만들 때 Strix Property Map에 "Capacity"를 지정할 경우, 그로 인해 (허용되는 플레이어의 수를 지정할) capacity 속성의 값이 설정되는 것이 아니라 properties에 저장될 커스텀 속성이 설정됩니다. "Capacity"와 "capacity"는 서로 다른 속성이기 때문입니다.

또 한 가지 주목할 점은 Strix의 방마다 관련 데이터 타입이 따로 있다는 것입니다. 스트링으로 속성의 이름을 받는 Strix API는 모두 그 값에 대해 모든 데이터 타입을 허용하지만, 두 가지 데이터 타입의 값은 일반적으로 서로 다르다고 간주합니다. 즉, 스트링 값 "1"은 항상 정수값 1과 다른 것으로 간주하며, 정수값 1은 (항상은 아니지만) 일반적으로 부동값 1.0과는 다른 것으로 간주합니다.

예를 들어, SetRoom 함수를 이용하여 스트링 속성 name에 정수값을 설정하거나 부동 속성 key1에 스트링 값 "1.0"을 설정하려고 하면 요청은 서버에서 실패합니다.

동시에 Strix는 게임 스크립트를 망가뜨릴 위험을 낮추기 위해 가능하면 여러 데이터 타입의 값을 받아들이려고 하며, SetRoom 함수는 부동 속성에 정수값 설정을 허용합니다. 예를 들어, 부동 속성 key2에 정수값 1을 설정할 경우 key2 속성은 부동값 1.0이 됩니다.

데이터 타입 취급 시 Strix의 관용에 기대지 말고 블루프린트 스크립트에 정확한 데이터 타입을 지정하도록 노력해야 합니다.

이 속성을 가져오고, 이용하고, 설정하는 방법에 관해서는 게임 루프 속 방을 참조해 주십시오.

노드 방

Strix에서는 복수의 방 서버의 스케일 아웃을 허용합니다. 게임 클라이언트가 방에 액세스하기 위해서는 어떤 방이 어떤 방 서버에 있는지 알아야 합니다. 방과 연동된 방 서버를 계속 추적하기가 쉽지는 않습니다.

반면, Strix의 마스터 서버는 연결된 방 서버 전체에 있는 방을 모두 알고 있습니다. 이렇게 하면 클라이언트가 방 서버를 찾아 연결하는 단계를 생략할 수 있으므로 방을 운영하기 쉬워집니다.

마스터 서버에 저장된 방의 모델은 NodeRoom이라고 하는 마스터 서버에 저장되며, Strix Room 스트럭트의 방에는 추가 속성이 몇 가지 더 있습니다.

이름

타입

설명

변수 이름

수정

검색

primaryKey

Integer

이 방의 기본 키(고유 ID)와 노드 조합

Id

아니요

*

roomId

Integer

방의 기본 키(고유 ID)

Room Id

아니요

*

isPasswordProtected

Boolean

방에 비밀번호가 있으면 참

Is Password Protected

아니요

NodeRoom은 방 메타데이터와 방 서버 식별정보의 조합이라고 보면 됩니다. 방에서 작동하는 함수는 대부분 버전이 둘입니다. 하나는 Room 버전이고 다른 하나는 NodeRoom 버전으로, 둘 중 하나를 선택하면 됩니다.

참고

방 비밀번호는 보안상 이유로 마스터 서버에 저장되지 않으며, 따라서 NodeRoom에는 password 속성이 없습니다. 대신 방에 비밀번호가 있는지 나타내는 isPasswordProtected 속성이 있습니다.

참고

방의 primaryKey 속성과 NodeRoom의 primaryKey, roomId 속성은 서버에서 Integer64 데이터 타입입니다. Strix에서는 이것을 기준으로 검색이 가능합니다. 이를 위해서는 검색 조건에서 Integer 값을 제외한 Integer64 값을 지정해야 하지만, Strix Unreal SDK에는 Integer64값을 처리하는 블루프린트 함수가 없습니다. 그 조건을 지정하려면 C++를 이용해야 합니다.