채널

이번 샘플에서 다룰 기능 중에서 마지막입니다. 보셨겠지만 Strix 함수 중에는 채널 ID가 필요한 것이 많습니다. 채널 ID는 각각의 방 연결을 나타내는 것입니다. Strix에서는 여러 방을 한 번에 연결할 수 있으며, 그 결과 채팅 채널 시스템, 전략적 오버레이 등을 만들 수 있습니다.

../../../_images/channels.png
  • 여기 채팅 시스템이 내장된 톱다운 슈팅게임이 있습니다. Enter를 누르고 텍스트를 입력한 후 Enter를 다시 한 번 누르면 채팅을 할 수 있습니다. 채팅은 글로벌 채널과 로컬 채널이 있으며, Tab으로 전환할 수 있습니다. TO:를 입력하고 한 칸 띄고 플레이어 이름을 입력하면 해당 플레이어에게 직접 메시지를 보낼 수 있습니다.

  • 블루프린트에서 채팅 시스템을 살펴보겠습니다. 먼저 ChannelsBP > Blueprints 폴더에서 TwinStickPawn 블루프린트를 엽니다. Pawn이 채팅 창을 만듭니다. 동기화가 끝나면 채팅방과 연결하거나 채팅방을 만듭니다.

../../../_images/chat1.png ../../../_images/chat2.png
  • Pawn은 먼저 방 속성의 키값으로 필터링하여 연결을 시도합니다. 여기서 key2 = 1으로 해당 방이 글로벌 채팅방임을 나타냅니다. 로컬인 경우, key3 = 1입니다. 이 때문에 Join Random Node Room을 호출할 때 게임 방으로 연결되지 않습니다. (이 함수를 호출하면 무작위 방으로 연결되므로 게임 방이 둘일 때 잘못된 방으로 연결될 가능성이 있습니다.) 방이 없으면 접미사와 몇 가지 속성이 있는 방이 만들어집니다. 각 방에는 자체 채널 ID가 있습니다.

참고

채널 ID는 방 ID와 별개이며 무엇이든 원하는 값으로 초기화할 수 있습니다.

  • 채널은 방 연결과 분리되어 있습니다. 한 채널에서 일어나는 연산은 그 채널에 있는 방에만 적용됩니다.

  • 레벨에는 채팅 개체가 둘입니다. 여기에는 채팅 로직이 들어 있습니다. Chat1로컬 채널이고 Chat2글로벌입니다.

  • Chat 블루프린트를 열면 동기화 후 ReceiveChat 함수를 등록해 둔 상태임을 알 수 있습니다. 이 함수는 메시지를 인풋으로 가져와서 ChatWindow 위젯을 업데이트합니다.

../../../_images/registerchat.png ../../../_images/receivechat.png
  • ChannelsBP 폴더에는 ChatWindow 위젯이 있습니다. 이것을 열면 RPC가 어떻게 전송되는지 볼 수 있습니다.

../../../_images/switchchannel.png ../../../_images/sendchat.png
  • 여기서는 채널 값을 전환하며, Enter를 누르면 텍스트 상자에 있는 텍스트를 꺼내어 파싱하고, 어떤 채널이 이용 중인지 알 수 있도록 채팅 개체를 이용하여 RPC to Other 또는 RPC to Member 함수를 보냅니다. 직접 RPC를 이용하기 위해서는 Strix Room Member 스트럭트를 알아야 합니다. 이 값은 Get Current Room Members 함수를 호출하여 의도한 수신인의 이름을 멤버들의 이름과 비교하면 구할 수 있습니다.

  • 이것이 작동하는지는 채팅 시스템을 시험해 보면 알 수 있습니다.

참고

Strix Replicator는 채널 ID가 필요합니다. 이 때문에 여러 액터가 서로 다른 방에서 복제할 수 있습니다. 예를 들면 플레이어가 있는 그룹에 따라 소지할 수 있는 전략적 마커가 달라지는 것입니다.

Strix를 이용해 주셔서 감사합니다. 본 문서의 나머지 부분에서는 Strix에서 이용할 수 있는 기능을 자세히 설명합니다. 더 알고 싶으시다면 계속해서 읽어 주시기 바랍니다.