멀티플레이어 역할
이 항목에서는 Xbox 서비스 멀티 플레이어에서 플레이어 역할을 정의하는 방법을 설명합니다. 일부 게임 세션의 경우 특정 플레이어에게 지원, 의료진 또는 공격과 같은 게임 플레이어 역할을 할당할 수 있습니다. 특정 게임 플레이어 역할을 수행할 수 있는 플레이어를 위해 게임 슬롯을 예약할 수도 있습니다.
서비스는 Xbox 서비스 역할 기능을 사용하여 각 게임 플레이어 역할이 할당된 플레이어를 추적하고 특정 게임 플레이어 역할을 선택할 수 있는 최대 플레이어 수를 적용할 수 있습니다.
역할의 가장 일반적인 용도는 게임 세션에 대한 게임 별 역할을 결정하는 것입니다. 예를 들어, 하나 또는 두 개의 지원 클래스, 최소 하나의 탱크/헤비 클래스, 5개 이하의 공격 클래스가 필요한 게임 모드를 만들 수 있습니다.
또 다른 가능한 시나리오에서는 게임 세션에 정확히 4명의 게임 플레이어, 최대 8명의 관전자 및 정확히 1명의 아나운서가 포함될 수 있도록 지정할 수 있습니다.
또한 역할을 사용하여 세션 검색 등과 같은 다른 수단을 통해 남은 슬롯을 채우면서 친구 슬롯을 예약할 수 있습니다.
역할 유형
역할 유형은 역할 정의 그룹을 나타냅니다. 각 역할은 역할 유형의 일부로 정의되어야 합니다. 역할 유형은 멀티 플레이어 세션 문서에서 정의됩니다.
플레이어는 역할 유형에서 하나의 역할만 할당할 수 있습니다. 예를 들어, "클래스" 역할 유형에 힐러, 탱크 및 데미지가 포함된 경우 플레이어는 해당 역할 중 하나에만 할당될 수 있습니다.
여러 역할 유형을 정의할 수 있고, 플레이어는 각 역할 유형에서 한 역할이 할당될 수 있습니다. 이전 시나리오에서 분대 리더 역할이 별도의 역할 유형으로 정의된 경우 힐러 역할을 선택한 플레이어에게 분대 리더 역할도 할당될 수 있습니다.
역할 유형 속성
역할 유형을 정의할 때 다음 정보를 지정해야 합니다.
- 역할 유형의 이름. 이름은 영숫자 소문자여야 하며 100자를 넘지 않아야 합니다.
- 역할의 정의.
- 역할이 소유자가 관리하는지 여부.
- 세션 수명 동안 역할의 속성을 변경할 수 있는지 여부입니다.
역할 유형이 소유자 관리인 경우 세션의 소유자 인 플레이어만 해당 유형의 역할을 할당할 수 있습니다. 역할 유형이 소유자가 관리하지 않는 경우 플레이어는 자신에게 역할을 할당할 수 있습니다.
hasOwners
기능 세트가 있는 세션에 대해서만 역할 유형을 소유자가 관리하도록 지정할 수 있습니다.
참고 항목
Xbox Services API (XSAPI)는 현재 소유자가 다른 플레이어에게 역할을 할당하는 것을 지원하지 않습니다.
역할 속성
역할을 정의할 때 다음 정보를 지정해야 합니다.
- 역할의 이름. 이름은 영숫자 소문자여야 하며 100자를 넘지 않아야 합니다.
- 역할을 수행할 수 있는 최대 플레이어 수입니다. 값은 0보다 커야 합니다.
- 역할을 수행해야 하는 대상 플레이어 수입니다. 값은 0보다 크고 역할을 수행할 수 있는 최대 플레이어 수보다 적거나 같아야 합니다.
플레이어에게 세션의 역할이 할당되면 이전 정보가 멀티플레이어 세션 문서에 기록됩니다.
이 서비스는 역할에 할당할 수 있는 최대 플레이어 수를 적용하지만 대상 수는 적용하지 않습니다.
역할 만들기
역할 및 역할 유형은 일반적으로 세션 템플릿에 정의됩니다. 자세한 내용은 멀티플레이어 세션 템플릿을 참조하세요. 이 서비스는 세션 생성 중 역할 유형 및 역할 정의를 지원하지만 XSAPI는 지원하지 않습니다.
세션 템플릿에서 역할 유형 및 역할 정의
Xbox 서비스 구성 도중 세션 템플릿을 만들 때 역할 유형 및 역할을 정의할 수 있습니다.
역할 유형 및 역할에 대한 정보는 다음 형식을 사용하여 세션 템플리트에서 기본 레벨 roleTypes
요소로 지정됩니다.
"roleTypes": {
"myroletype1": { // Must be lowercase alphanumeric.
"ownerManaged": true, // Can be true only on sessions that have the "hasOwners" capability set.
// If true, only the owner of the session can assign this role to players.
"mutableRoleSettings": ["max", "target"], // Only these role settings can be modified during the
// session. Exclude role settings to lock them.
"roles": {
"role1": { // Must be lowercase alphanumeric.
"max": 3, // Maximum number of players assigned to this role. Enforced by MPSD.
"target": 2 // Target number of players to assign this role to. Not enforced by MPSD.
},
"role2": {
...
}
},
"myroletype2": {
...
}
},
멀티플레이어 세션에 대한 역할 정보 검색
멀티플레이어 세션 또는 멀티플레이어 검색 핸들에서 역할 유형, 역할 및 각 역할에 할당된 플레이어 수에 대한 정보를 얻을 수 있습니다.
XSAPI에서 역할 유형 및 역할에 대한 정보는 배열 구조에 저장됩니다.
검색 요청에서 반환된 XblMultiplayerSearchHandle
개체에서 역할 유형의 이름으로 XblMultiplayerSessionRoleTypes 데이터를 인덱싱하여 역할 유형에 대한 정보를 가져올 수 있습니다.
이 호출은 XblMultiplayerRoleType 개체를 반환합니다. 역할에 대한 정보를 얻으려면 Roles
배열을 인덱싱하세요.
XblMultiplayerRole 개체에는 MaxMemberCount
, MemberXuids
, MemberCount
및 TargetCount
를 비롯한 역할에 대한 정보가 포함됩니다.
플레이어에 역할 할당
현재 플레이어는 XSAPI에서 자신의 역할만 할당할 수 있습니다. 현재 플레이어의 역할 유형과 역할을 지정하려면 XblMultiplayerSessionHandle
개체를 XblMultiplayerSessionCurrentUserSetRoles 메서드에 전달하세요.
서비스에 세션을 쓰려고 할 때 역할이 이미 가득 찬 경우 MPSD는 쓰기를 거부합니다.