티스토리 뷰

Settings on Gameplay Abilities

이번 강의에서는 Gameplay Ability를 만드는 것이 아니라, Gameplay Ability 블루프린트에서 설정 가능한 옵션들이 무엇인지 하나씩 살펴볼 것이다.

 

가장 먼저 보이는 Tags이다.

여기에는 여러 종류의 Gameplay Tag Container가 존재하며, 드롭다운을 이용하여 원하는 Gamepaly Tag를 추가할 수 있다.

 

각 개별 Tag에 대한 내용은 다음과 같다.

1. Ability Tags
Ability 자체를 식별하기 위한 Tag

2. Cancel Abilities With Tag
Ability가 발동될 때, 해당 태그를 가진 다른 실행 중인 Ability를 강제 종료

3. Block Abilities With Tag
Ability가 활성화되어 있는 동안 해당 태그를 가진 Ability 사용 불가

4. Activation Owned Tags
Ability가 활성화되는 동안 Owner(character 또는 ASC)에게 부여되는 태그

5. Activation Required Tags
Owner가 해당 태그들을 모두 가지고 있어야만 Ability 사용 가능

6. ACtivation Blocked Tags
Onwer가 해당 태그들을 가지고 있으면 Ability 사용 불가

7. Source Required Tags
Source Actor가 해당 태그들을 모두 가지고 있어야 Ability 사용 가능

8. Source Blocked Tags
Source Actor가 해당 태그들을 가지고 있으면 Ability 사용 불가

9. Target Required Tags
Tagert이 해당 태그를 가지고 있어야 Ability 사용 가능

10. Tagert Blocked Tags
Target이 해당 태그를 가지고 있으면 Ability 사용 불가

 


 

다음으로 Input 설정 칸의 Replicate Input Directly 옵션이다.

해당 설정이 True일 경우, 입력 이벤트를 서버로 직접 복제한다.

즉, 입력을 누르거나 계속 유지하는 경우 매 프레임 서버로 전송될 수도 있다.

 


 

상세옵션에는 다음과 같은 옵션들이 존재한다.

1. Replication Policy
Ability의 상태나 이벤트를 네트워크에서 어떻게 복제할 것인가를 설정하는 옵션

2. Instancing Policy
Gameplay Ability를 인스턴스로 생성할지 설정하는 옵션
마지막에 상세히 다룸

3. Server Pespects Remote Ability Cancellation
클라이언트에서 Ability를 취소하면, 그 취소 요청을 서버에서도 받아들인다.
기본 값은 체크되어있다.

4. Retrigger Instanced Ability
이미 실핼 중인 Ability를 다시 실행하려고 하면 기존 Ability를 종료하고 다시 새로 실행한다.
기본 값은 체크되어있지 않다.

5. Net Execution Policy
Ability가 네트워크에서 어디에서 실행될 지를 결정한다.
마지막에 상세히 다룸

6. Net Security Policy
클라이언트가 Ability 실행에 대해 얼마나 권한을 가지는 지 결정한다.
보안 요구 사항이 특별하지 않다면 기본 값 그대로 사용한다.

 


 

다음으로는 Cost다.

해당 챕터의 첫 번째 강의에서도 다뤘던 내요으로, Gameplay Ability에는 Cost(비용)라는 개념이 존재하며 Gameplay Effect로 구현된다.

우리가 RPG 게임에서 흔히 접하는 Mana 또는 Stamina가 대표적이라고 할 수 있다.

Ability는 이러한 Cost Gameplay Effect를 실행하며 필요한 Attribute를 감소시킨다.

 


 

Ability는 직접 버튼 입력뿐 아니라, 이벤트에 의해 실행될 수도 있다.

따라서 Trigger 배열에 요소를 추가하면 Gameplay Tag 기반 이벤트를 등록할 수 있다.

 


 

마지막으로 Cost와 마찬가지로 첫 강의에서 다루었던 Cooldown이다.

Cost와 마찬가지로 Gameplay Effect 형태로 구현되며, Gamelay Effect가 쿨다운 시간을 결정한다.

즉, Ability 사용 후 언제 다시 사용할 수 있는지를 Gameplay Effect가 관리한다.

 


 

Instancing Policy 상세 설명

Instancing Policy는 Ability 객체가 어떻게 생성하고 관리할지 결정하는 설정으로 세 가지 옵션이 존재한다.

1. Instanced Per Actor
Actor당 하나의 Ability 인스턴스 생성
-> Ability 객체 하나만 생성하여 계속 재사용하며 영구 데이터 저장 가능
-> Ability가 파괴되지 않기 떄문에 초기화해야하는 변수는 직접 Rest 해야 함

2. Instanced Per Exectuion
Ability를 실행할 때마다 새로운 객체 생성
-> 매 실행하마다 새 객체 생성하며, 자동으로 변수가 초기화되어 상태 유지가 안됨
-> 계속 삭제와 생성을 반복하므로 Per Actor보다 성능이 떨어짐

3. Non Instanced
Ability 객체를 생성하지 않음
Class Defulat Object(CDO)를 사용하여 인스턴스 없이 클래스 자체를 이용
-> 상태 및 변수 저장 불가, Ability Task Delegate 바인딩 불가와 같이 기능이 상당히 제한됨
-> 가장 높은 성능을 자랑하며, 필요한 데이터를 함수 인자로 받아 처리하는 방식과 비슷함
정책 객체 생성 상태 저장 변수 저장 성능
Instanced Per Actor 1회 생성 후 재사용 가능 가능 좋음
Instanced Per Execution 실행마다 생성 불가능 실행 중만 가능 가장 낮음
Non Instanced 생성 안 함(CDO 사용) 불가능 불가능 가장 좋음

 


 

Not Execution  Policy 상세 설명

네트워크에서 Ability를 어디에서 실행할지 결정하는 옵션으로 네 가지가 존재한다.

1. Local Only
Ability가 클라이언트에서만 실행
-> UI 효과, 개인 연출, 다른 플레이어와 관계없는 Cosmetic 기능 (캐릭터 스킨, 감정 표현 등)
-> 게임플레이에는 거의 영향을 주지 않는다.

2. Local Predicted
Gameplay Effect의 Prediction과 동일한 개념
-> 입력 지연 감소, 서버 응답을 기다리지 않아도 됨, 높은 핑에서도 자연스러운 플레이 가능
-> 대부분의 Ability는 Local Predicted를 사용하면 된다.

3. Server Only
Ability를 서버에서만 실행
-> 항상 실행 중인 Passive Ability 또는 게속 무언가를 감시하는 Ability 등

4. Server Initiated
Local Predicted처럼 즉시 실행되지 않고, 먼저 서버에서 실행되어야 한다.
-> 사용 사례가 많지 않지만, 필요한 경우 사용
정책 실행 위치 특징
Local Only 클라이언트만 Cosmetic 용도
Local Predicted 클라이언트 즉시 + 서버 검증 가장 많이 사용
Server Only 서버만 Passive 등
Server Initiated 서버 실행 후 클라이언트 복제 사용 빈도 낮음

 


 

추가 상세 설명

Replication Policy는 건드리지 않을 것이다.

Gamepaly Ability는 기본적으로 서버에서 Owner Client로 자동 복제되기에, Replcation Policy를 변경할 필요가 없다.

 

또한 Server Respects Remote Ability Cancellation도 사용하지 않는 것이 좋다.

이 옵션을 활성화하면 클라이언트가 Ability를 종료했을 때 서버도 종료한다.

권한은 서버에 있기 때문에, 클라이언트가 취소했다고 해서 서버 Ability까지 종료하는 것은 좋은 설계가 아니다.

오히려 서버가 종료를 결정하고, 그 결과를 클라이언트에 반영하는 것이 바람직하다.

 

마지막으로 Replcatin Input Directly도 사용하지 않을 것이다.

이 옵션은 입력 이벤트를 직접 서버 RPC로 전송한다.

따라서 버튼을 누르고 있거나 연타하는 경우 서버로 매우 많은 RPC가 전송될 수 있다.

이로 인해 네트워크 비용이 커지고 비효율적일 수 있다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/07   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함