관심 그룹

Photon의 "관심 그룹"은 룸 안에서의 대화에 대한 하위 채널로 생각할 수 있습니다:
클라이언트들은 구독중인 관심그룹의 메시지만 받습니다(그리고 그룹 0).
클라이언트들은 원하는 어떤 그룹에서 모든 이벤트를 전송할 수 있습니다.

이 간단한 기능은 기본 관심 관리 또는 부합한 방식 어디에서도 사용 할 수 있습니다.
아래의 유즈케이스 예제를 확인해보시기 바랍니다.

사용가능 그룹

클라이언트는 명시적으로 관심 그룹을 생성할 필요는 없습니다.
관심 그룹은 필요시에 생성됩니다. 즉, 액터가 새로운 그룹 멤버로 구독했을 때, 서버가 관심그룹을 생성할 것 입니다.

Photon은 최대 256개의 관심 그룹을 제공합니다.
그룹 번호 0은 예약된 것으로 브로드캐스팅을 의미합니다: 룸 내부에 있는 모든 액터들(클라이언트들)은 그룹 0을 구독하며 구독해제를 할 수는 없습니다.
나머지 255개 그룹은 자유롭게 개발자가 사용할 수 있습니다.
그룹 > 0에 지정된 모든 이벤트는 서버가 이벤트를 전달 할 때 룸 내의 그룹에 관심을 가지고 있는 클라이언트들에게만 전송됩니다.

중요: 관심 그룹 0으로 보낸 이벤트만 캐시 할 수 있습니다! 다른 그룹에는 이벤트 캐시가 없습니다.

전역 설정

가입된 그룹의 목록은 룸 안에서 언제든지 다음을 사용하여 번호를 추가하거나 제거하여 갱신 할 수 있습니다:

C#

bool LoadBalancingPeer.OpChangeGroups(byte[] groupsToRemove, byte[] groupsToAdd)

노트:

  • 우선 순위는 항상 그룹 추가입니다: 동일한 그룹 번호가 두 배열에 모두 추가되면 그룹이 추가됩니다.
  • null 배열은 "그룹 없음" 의 기능을 수행하고 빈 배열 (new byte[0])은 "모든 그룹"으로 수행합니다.
  • LoadBalancingPeer.OpChangeGroups(new byte[0], groupsToAdd)groupsToAdd 에 있는 것을 제외한 모든 그룹을 제거할 것 입니다.
  • LoadBalancingPeer.OpChangeGroups(groupsToRemove, new byte[0])groupsToRemove의 값에 상관없이 모든 그룹에 추가할 것 입니다.
  • ChangeGroups 오퍼레이션은 응답을 리턴하거나 이벤트를 트리거하지 않습니다. 각 클라이언트는 필요시 클라이언트의 관심 그룹을 로컬에 캐시해야 합니다.

유즈 케이스 예제

관심 그룹들은 룸 안에서 초당 메시지 갯수가 낮을 때 유용합니다.
메시지/초 한도를 낮게 유지하여 트래픽 양을 적게 함으로써, 비용 절감과 때로는 룸별로 최대 플레이어 수를 증가하는 데 도움을 줄 수 있습니다.

그러나 게임에서 관심 분야 그룹을 사용하는 다른 현명한 방법을 찾아 볼 수 있습니다.

네트워크 컬링

가장 일반적인 관심 그룹의 유즈 케이스는 네트워크 컬링 입니다.
관심 그룹은 게임내의 관심 지역과 매핑될 수 있습니다.
예를들어, "아주 큰 뚱보 세계"가 있다면 작은 부분으로 분리 할 수 있을 것이고 이것을 지역이라고 가정하면, 지역별로 그룹을 지정할 수 있습니다.

팀 이벤트

게임내에서 팀이 있고 팀 배타적인 이벤트가 필요한 경우, 팀별로 관심 그룹을 지정할 수 있습니다.
모든 팀 멤버들은 팀의 관심 그룹을 구독해야 합니다.
내부 팀 이벤트들은 팀 자체 그룹 번호를 사용하여 전송되어야 합니다.
외부 팀 이벤트들은 상대 팀의 그룹 번호를 사용하여 전송되어야 합니다.

Back to top