여러 가지 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)

    • UIDunique 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(타입: 아래 참조)

    • 네트워크 개체 IDStrixReplicator 요소가 연결되는 액터의 인스턴스를 나타내며, 레플리카와 오리지널을 같게 하는 역할을 합니다.

    • 한 액터의 레플리카는 그 오리지널을 포함하여 모두 네트워크 개체 ID가 같습니다. 반대로, 같은 액터를 두 번 인스턴스화하면 한 클라이언트에서 만들어진 두 레플리카는 네트워크 개체 ID가 다릅니다. 서로 다른 두 개체의 레플리카이기 때문입니다.

    • 네트워크 개체 ID는 주로 Strix에서 내부용으로 사용되지만, Blueprint 스크립트에서 특히 RPC 호출을 만들 때 액터의 식별자로 사용해도 됩니다. (네트워크 개체 함수 참조.)

    • 네트워크 개체 ID는 주로 Strix에서 내부용으로 사용되며, 네이티브 데이터 타입은 64비트 정수(Integer64)입니다. 단, 네트워크 개체 ID가 Blueprint 스크립트에 노출되면 Strix Network Id 스트럭트라는 데이터 타입을 갖게 됩니다. 이 스트럭트에는 블루프린트에서 보이는 멤버 StringId가 하나 있으며, 여기에는 ID의 스트링 표시가 들어 있습니다. (필요한 경우, C++를 이용하여 원시 int64 값에 액세스할 수 있습니다.)

    • 네트워크 개체 ID는 네트워크 인스턴스 ID 라고도 하며, 줄여서 네트워크 ID로 부르기도 합니다.

    A single Actor instantiated twice and replicated
  • 기본 키(타입: 아래 참조)

    • 기본 키는 서버가 개체를 식별할 때 이용하는 식별자입니다. 개체별 기본 키는 서로 관련이 없습니다. 마치 데이터베이스 표의 기본 키와 같습니다. 기본 키의 역할은 같지만 표마다 그것이 식별하는 대상은 다르기 때문입니다.

    • 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는 사용하지 않아도 됩니다.)