여러 가지 ID 이용하는 방법¶
Strix는 여러 가지 ID를 이용합니다. 그중에는 Strix 애플리케이션에서 사용하는 것도 있고 주로 Strix에서 내부적으로 사용하는 것도 있습니다. 이 가이드 문서에서는 그중에서 주요 ID와 활용 사례를 설명합니다.
ID 설명¶
다음은 Strix Unreal SDK에서 사용할 수 있는 주요 ID를 요약한 목록입니다.
애플리케이션 ID(타입: String 스트럭트)
애플리케이션 ID는 애플리케이션(게임 타이틀)을 표시합니다. 대개 Strix 게임 클라이언트는 한 애플리케이션 ID만 관리합니다.
Strix 서버와 클라이언트는 애플리케이션 ID를 이용하여 대화 대상이 되는 동료를 확인합니다.
참고
애플리케이션 ID는 비밀번호와 같은 것입니다. 애플리케이션 ID를 공개해서는 안 됩니다.
Strix Cloud를 이용할 때는 애플리케이션 ID가 자동으로 생성되어 애플리케이션 대시보드에 표시됩니다.
Strix Unreal SDK에서는 게임 프로그램이 Initialize Strix Network 함수를 통해 서버 ID와 일치하는 애플리케이션 ID를 제공합니다.
UID(타입: 추상 클래스
UID
)UID는 unique identifier의 약자입니다. 여러 가지 개체를 표시하며, 네트워크에서(클러스터 도메인 안에서) 중복되지 않습니다.
참고
UID는 user id의 약자가 아닙니다. 사용자(플레이어)마다 UID가 따로 있으나, UID가 사용자와 무관한 개체를 나타내기도 합니다.
Strix Unreal SDK에서는 UID가 주로 Strix 내부에서 사용되며, Blueprint 스크립트는 그것을 거의 처리하지 않습니다. 단, Strix C++ API를 통해 일부 하위 기능을 이용한다면 UID를 더 자주 볼 수도 있습니다.
타입 ID(타입: Integer)
타입 ID는 StrixReplicator가 연결되어 있는 액터의 한 타입 입니다.
타입 ID 값은 개발 중에 Unreal Editor에서 해당 액터 각각에 할당됩니다.
타입 ID는 주로 Strix 내부용입니다. StrixReplicator 요소의 Type Id 속성으로 이용할 수 있습니다.
자세한 사항은 타입 ID를 참조해 주십시오.
타입 ID는 개체 타입이라고도 합니다.
네트워크 개체 ID(타입: 아래 참조)
네트워크 개체 ID는 StrixReplicator 요소가 연결되는 액터의 인스턴스를 나타내며, 레플리카와 오리지널을 같게 하는 역할을 합니다.
한 액터의 레플리카는 그 오리지널을 포함하여 모두 네트워크 개체 ID가 같습니다. 반대로, 같은 액터를 두 번 인스턴스화하면 한 클라이언트에서 만들어진 두 레플리카는 네트워크 개체 ID가 다릅니다. 서로 다른 두 개체의 레플리카이기 때문입니다.
네트워크 개체 ID는 주로 Strix에서 내부용으로 사용되지만, Blueprint 스크립트에서 특히 RPC 호출을 만들 때 액터의 식별자로 사용해도 됩니다. (네트워크 개체 함수 참조.)
네트워크 개체 ID는 주로 Strix에서 내부용으로 사용되며, 네이티브 데이터 타입은 64비트 정수(Integer64)입니다. 단, 네트워크 개체 ID가 Blueprint 스크립트에 노출되면 Strix Network Id 스트럭트라는 데이터 타입을 갖게 됩니다. 이 스트럭트에는 블루프린트에서 보이는 멤버 StringId가 하나 있으며, 여기에는 ID의 스트링 표시가 들어 있습니다. (필요한 경우, C++를 이용하여 원시 int64 값에 액세스할 수 있습니다.)
네트워크 개체 ID는 네트워크 인스턴스 ID 라고도 하며, 줄여서 네트워크 ID로 부르기도 합니다.
기본 키(타입: 아래 참조)
기본 키는 서버가 개체를 식별할 때 이용하는 식별자입니다. 개체별 기본 키는 서로 관련이 없습니다. 마치 데이터베이스 표의 기본 키와 같습니다. 기본 키의 역할은 같지만 표마다 그것이 식별하는 대상은 다르기 때문입니다.
Strix Unreal SDK는 이름 Id의 멤버를 통해 다음과 같은 주요 개체에 기본 키를 부여합니다.
Strix Node 스트럭트인 노드(방 서버)
Strix Room 스트럭트인 방
Strix Node Room 스트럭트인 노드 방
Strix Room Member 스트럭트인 방 멤버
기본 키는 또 검색할 때 조건과 순서에서 primaryKey라는 이름의 속성으로도 이용할 수 있습니다.
기본 키에는 내부에 64비트 정수(Integer64)라는 데이터 타입이 있습니다. 단, Blueprint 스크립트에 Id 멤버 변수로 노출되면 데이터 타입은 Integer(32비트 정수)가 됩니다.
Strix는 장면 뒤에서 더 많은 개체에 기본 키를 할당하며, 이것은 일부 하위 API에서 이용할 수 있는 C++
GetPrimaryKey
멤버 함수로 액세스할 수 있습니다. 개체 중에는 기본 키를 설정하는SetPrimaryKey
멤버 함수가 있는 것도 있습니다. 그러나 그것은 Strix 내부용이며, 하위 C++ API를 이용할 때는 사용할 수 없습니다.기본 키를 이용할 경우, 서로 무관한 두 개체의 기본 키가 우연히 같을 수 있음을 유념해야 합니다. 두 기본 키는 서로 같은 종일 때만 비교가 가능합니다.
방 ID(타입: 아래 참조)
방 ID는 한 방 서버 안에서 방을 표시하는 역할을 합니다. 그 방 서버에서는 사실상 방 개체의 기본 키가 되는 것입니다.
방 서버가 다르면 방의 ID는 서로 관련이 없으며, 우연히 값이 서로 같을 수 있습니다.
방 ID는 내부적으로 64비트 정수(Integer64)지만, 방 Id 멤버 변수는 Integer입니다.
채널 ID(타입: Integer)
채널 ID는 방 서버에 통신 채널(연결)을 표시합니다.
여기 나와 있는 다른 ID와 달리, 채널 ID의 실제값은 Strix에서 결정하지 않으며 스크립트가 게임에서 이용하는 채널 각각에 채널 ID 값을 지정합니다.
예를 들면 다음과 같이 지정할 수 있습니다.
채널 ID 0은 액터 복제와 동기화용
채널 ID 1은 매치메이킹 중 임시용
채널 ID 2는 늘 열려 있는 길드 문자 채팅용
참고
채널 ID 값으로는 0, 1, 2와 같이 비교적 작은 값을 이용하기를 권장합니다. 2000000000처럼 큰 값보다는 조금 더 효율적이기 때문입니다. 서로 인접한 수는 아니어도 됩니다. 예를 들면, 한 동안 0, 2, 5를 사용하다가 2를 버리고 4와 10을 사용해도 됩니다. (1, 3, 6-9는 사용하지 않아도 됩니다.)