클랜 #
플레이어는 Nakama를 통해 클랜이라고 하는 작은 그룹을 생성하여 팀을 구성하거나 게임을 같이 플레이 할 수 있습니다.
Pirate Panic을 통해 플레이어는 다음 작업을 수행할 수 있습니다:
- 새 클랜 생성
- 기존 클랜 가입 또는 탈퇴
- 공용 클랜 검색
- 이름과 엠블럼 같은 공유된 클랜 정보를 사용자 지정
- 클랜의 다른 구성원과 채팅
이 튜토리얼에서는 새로운 플레이어가 가입을 위해서 요청을 제출해야 하는 개인 그룹에 대한 내용을 다루지 않습니다. 자세한 내용은 공식 Nakama 문서를 참조하십시오.
클랜 서버 모듈 #
Unity 클라이언트 실행으로 이동하기 전에 서버 측을 살펴보겠습니다.
다른 모듈과 마찬가지로, 새로운 클랜을 생성하는 것과 같이 특정한 이벤트에 대해서 사용자 지정 서버 행위를 등록할 수 있습니다. 그룹의 경우, 다음 사항을 중점적으로 다룹니다:
registerAfterJoinGroup
registerAfterKickGroupUsers
registerAfterLeaveGroup
registerAfterPromoteGroupUsers
registerAfterAddFriends
registerBeforeDeleteGroup
해당 이벤트의 전체 목록을 살펴봅니다.
알림 전송 #
예를 들어, 새로운 플레이어가 가입했을 때 클랜 내 모두에게 알림을 전송하는 기능은 다음과 같습니다:
clans.ts
|
|
여기서, 사용자 지정 알림 코드를 생성하여 다양한 유형의 알림을 구분합니다. 모든 양의 숫자를 사용할 수 있습니다. 그런 다음, groupUsersList
을(를) 사용하여 모든 구성원에 대한 목록을 얻고, 목록에서 각 사용자에게 user.user.id
을(를) 사용하여 ID를 얻고 NotificationRequest
을(를) 전송합니다.
런타임 후크 설정 #
그룹에 새로운 구성원이 가입할 때마다 Nakama가 자동으로 호출되는 것과 같은 방식으로 함수를 호출해야 합니다:
clans.ts
|
|
여기서는 해당 알림을 어디로 전송해야 할지 알려주는 groupId
을(를) 포함하는 JoinGroupRequest
을(를) 처리합니다.
예를 들어, 구성원이 추방된 경우 다른 사람에게 알림을 제공하는 것과 같이 유사한 코드를 사용하여 알림 기능을 다른 이벤트로 확대할 수 있습니다:
clans.ts
|
|
후크 등록 #
함수가 원하는 목적에 맞게 작동되도록 하기 위한 마지막 단계는 메인 모듈에 등록하는 것입니다. 생성된 각각의 함수를 다음과 같이 추가할 수 있습니다:
main.ts
|
|
각각의 register
함수는 런타임 이벤트 목록에서 사용되고, clans.ts
에서 생성된 함수 중 한 개가 매개 변수로 전달됩니다.
클라이언트 생성 #
다음으로, 플레이어가 서버와 상호 작용할 수 있도록 Unity에서 인터페이스를 생성합니다. Pirate Panic에서는 다음과 같이 나타납니다:
이 튜토리얼에서는 Unity UI 구성 요소가 생성되는 과정을 세부적으로 다루지 않습니다. 세부적인 내용은 공식 Unity UI 튜토리얼을 참조하십시오.
클랜의 전체 코드 예시는 Pirate Panic 프로젝트를 참조하십시오.
클랜 생성 #
새로운 클랜을 생성하기 위해서 session
이(가) 서버 연결이고 name
이(가) 새로운 클랜인 CreateGroupAsync(session, name, ...)
함수를 사용합니다. 이 함수는 설명 또는 아바타 이미지와 같은 정보를 저장할 때 사용할 수 있는 임의 매개 변수를 추가로 사용합니다.
Pirate Panic 클랜 생성 패널에서는 다음과 같이 나타납니다:
ClanCreationPanel.cs
|
|
위 조각에서는 다음을 수행할 수 있습니다:
_clanName
: 플레이어가 Unity 텍스트 상자에 새로운 클랜 이름을 입력할 수 있습니다. 텍스트를 이곳으로 가져옵니다._connection
:GameConnection
개체는 코드에서 이미 초기화되었습니다.- 임의 매개 변수로 사용할 수 있는 두 가지 항목은 설명과 아바타 이름입니다.
- 클랜이 생성되면
OnClanCreated
함수가 호출됩니다. [ClansMenuUI.cs]에서Awake
에 대해서 해당 속성이 지정됩니다.
마지막으로, 해당 비동기화 함수를 함수에 적용시키고 버튼 액션으로 연결시킵니다:
ClanCreationPanel.cs
|
|
클랜 채팅 #
다른 구성원과 채팅할 수 있도록 전체 그룹에 대한 채널을 생성할 수 있습니다. Pirate Panic에서는 다음과 같이 나타납니다:
클랜 채팅을 사용하기 위해서 채팅 채널에 가입할 때 위와 같은 클랜 그룹 ID를 전달하여 클랜의 모든 구성원이 같은 채널을 사용할 수 있도록 합니다.
채팅 채널에 참여하기 위해서 JoinChatAsync
을(를) 사용합니다:
ClansMenuUI.cs
|
|
여기서, ID state.UserClan.Id
의 그룹 채널에 가입합니다.
이 채널은 지속적이기 때문에 메시지가 데이터베이스에 저장되어 연결이 해제되거나 다시 연결되어도 메시지가 표시됩니다. 또한, 플레이어가 숨겨진 구성원으로 참여하기 때문에 구성원 목록에는 표시되지 않습니다.
해당 설정은 채팅방 유형에 따라 다르게 구성할 수 있습니다. 다양한 설정에 대한 자세한 내용은 실시간 채팅 문서를 참조하십시오.
플레이어가 채팅 채널에 참여하면, 메시지 전송 및 수신은 다이렉트 메시지와 같은 방식으로 처리됩니다.
클랜 탈퇴 또는 해산 #
플레이어가 클랜에 남기를 원하지 않을 경우, 탈퇴 또는 해산 중에서 선택할 수 있습니다.
클랜을 탈퇴할 경우, 활성화된 상태로 유지되고 클랜에 다른 superadmin
(소유자)가 남아 있는 경우에만 처리할 수 있습니다. 클랜을 해산하면 서버에서 클랜이 삭제되고 모든 구성원이 없어집니다.
예를 들어, 클랜을 탈퇴하려면 다음과 같이 합니다:
ClansMenuUI.cs
|
|
이 경우, _state_
은(는) 사용자 정의 클래스(ClansMenuUIState.cs
에서 정의됨) ClansMenuUIState
로, 현재 플레이어의 화면에 있는 정보를 포함하고 있습니다. 또한, DisplayedClan.Id
은(는) 플레이어가 탈퇴하려고 하는 클랜의 ID입니다.
클랜을 해산하려면 다음과 같이 합니다:
ClansMenuUI.cs
|
|