여러 가지 ID 이용하는 방법¶
Strix는 여러 가지 ID를 이용합니다. 그중에는 Strix 애플리케이션에서 사용하는 것도 있고 주로 Strix에서 내부적으로 사용하는 것도 있습니다. 이 가이드 문서에서는 그중에서 주요 ID와 활용 사례를 설명합니다.
ID 설명¶
다음은 Strix Unity SDK에서 사용할 수 있는 주요 ID를 요약한 목록입니다.
애플리케이션 ID(타입:
string
)애플리케이션 ID는 애플리케이션(게임 타이틀)을 표시합니다. 대개 Strix 게임 클라이언트는 한 애플리케이션 ID만 관리합니다.
Strix 서버와 클라이언트는 애플리케이션 ID를 이용하여 대화 대상이 되는 동료를 확인합니다.
참고
애플리케이션 ID는 비밀번호와 같은 것입니다. 애플리케이션 ID를 공개해서는 안 됩니다.
Strix Cloud를 이용할 때는 애플리케이션 ID가 자동으로 생성되어 애플리케이션 대시보드에 표시됩니다.
Strix Unity SDK에서는 애플리케이션 ID를
StrixNetwork
싱글톤의applicationId
속성으로 이용할 수 있습니다.
UID(타입:
UID
)UID는 unique identifier의 약자입니다. 여러 가지 개체를 표시하며, 네트워크에서(클러스터 도메인 안에서) 중복되지 않습니다.
참고
UID는 user id의 약자가 아닙니다. 사용자(플레이어)마다 UID가 따로 있으나, UID가 사용자와 무관한 개체를 나타내기도 합니다.
UID는 단순한 값이 아닙니다. Strix Unity SDK에서
UID
타입은 인터페이스(이름이 “I”로 시작하지는 않지만)로 정의되며 그것을 구현하는 클래스도 몇 가지나 됩니다.UID
개체를 클라우드 애플리케이션의 한 클래스로 격하하는 것은 (또는 격하하려고 하는 것은) 바람직하지 않습니다.모든
UID
구현 클래스는 호환되는GetHashCode()
메서드로Equals(object)
메서드를 (자연스럽게) 구현합니다. 또한,UID
구현 시ToString()
메서드는 UID 구현 클래스 중에서 반드시 UID를 나타내는 고유한 스트링을 리턴합니다.스크립트는 특정 UID 개체의 동등성을 확인할 수 있으나, 그 이상은 하지 않는 것이 좋습니다.
참고
UID
타입은 인터페이스이므로 동등성 연산자 (==)는 그것 때문에 오버로드되지 않습니다. 두 UID 개체를 비교할 때 == 또는 !=는 사용할 수 없습니다.UID는 Strix Unity SDK에서 여러 맥락과 여러 개체에 사용할 수 있습니다.
개체 타입 (타입:
int
)개체 타입은
StrixReplicator
가 연결되어 있는 게임 개체의 한 타입입니다.개발 중에 Unity Editor에서 게임 개체마다 개체 타입 값이 하나씩 할당됩니다.
StrixReplicator
는 레플리카를 만들 때 개체 타입을 이용하여 개체를 구별합니다.StrixReplicator
가 연결되는 개체가 프리팹일 경우, 그 프리팹에서 인스턴스화되는 개체는 모두 개체 타입이 같습니다.개체 타입은 주로 Strix 내부용입니다.
StrixReplicator
요소의objectType
속성으로 이용할 수 있습니다.개체 타입은 타입 ID라고도 합니다.
네트워크 인스턴스 ID(타입:
long
)네트워크 인스턴스 ID는
StrixReplicator
요소가 연결되는 게임 개체 인스턴스로 레플리카와 오리지널을 같게 하는 역할을 합니다.한 개체의 레플리카는 그 오리지널을 포함하여 모두 네트워크 인스턴스 ID가 같습니다. 반대로, 같은 프리팹을 두 번 인스턴스화하면 한 클라이언트에서 만들어진 두 레플리카는 네트워크 인스턴스 ID가 다릅니다. 서로 다른 두 개체의 레플리카이기 때문입니다.
네트워크 인스턴스 ID는 주로 Strix 내부용입니다.
StrixReplicator
요소의networkInstanceId
속성으로 이용할 수 있습니다.네트워크 인스턴스 ID는 네트워크 개체 ID라고도 하며, 줄여서 네트워크 ID로 부르기도 합니다.
기본 키(타입:
long
)기본 키는 서버가 개체를 식별할 때 이용하는 식별자입니다. 개체별 기본 키는 서로 관련이 없습니다. 마치 데이터베이스 표의 기본 키와 같습니다. 기본 키의 역할은 같지만 표마다 그것이 식별하는 대상은 다르기 때문입니다.
Strix 개체 중에는 안에 기본 키가 있는 것도 많으며, 그 기본 키는 대개
GetPrimaryKey
라는 메서드로 이용할 수 있습니다.기본 키를 설정하는
SetPrimaryKey
라고 하는 메서드가 있는 개체도 있습니다. 그러나 그런 개체는 Strix 내부용이며 스크립트에 사용할 수 없습니다.기본 키를 이용할 경우, 서로 무관한 두 개체의 기본 키가 우연히 같을 수 있음을 유념해야 합니다. 두 기본 키는 서로 같은 종일 때만 비교가 가능합니다.
참고
이 점은 UID와 다릅니다. 종이 다른 두 개체의 UID는 절대로 서로 같지 않습니다.
방 ID(타입:
long
)방 ID는 한 방 서버 안에서 방을 표시하는 역할을 합니다. 그 방 서버에서는 사실상 방 개체의 기본 키가 되는 것입니다.
방 서버가 다르면 방의 ID는 서로 관련이 없으며, 우연히 값이 서로 같을 수 있습니다.
RoomJoinNotified에서 입장한 멤버 식별하기¶
새 멤버가 방에 입장하면 RoomJoinNotified
이벤트가 일어나며, 이벤트 핸들러가 호출됩니다.
이 핸들러는 다음과 같은 시그니처를 갖습니다.
void RoomJoinNotificationEventHandler(
NotificationEventArgs<RoomJoinNotification<CustomizableMatchRoom>> notification)
notification
인수에서 다음과 같이 여러 가지 ID를 가져올 수 있습니다.
notification.Data.GetPrimaryKey()
는 새 멤버가 입장한 방, 즉 현재 클라이언트가 있는 방의 기본 키를 리턴합니다.notification.Data.GetNewlyJoinedMember().GetPrimaryKey()
는 방에 들어온 멤버의 기본 키를 리턴합니다.notification.Data.GetNewlyJoinedMember().GetUid()
는 방에 들어온 멤버의 UID를 리턴합니다.