티스토리 뷰

* 번역 주의


Gameplay Abilities

1. Gameplay Ability란?

GamePlay Ability는 게임에서 액터가 수행할 수 있는 행동이나 기술이다.

GamePlay Ability는 UGameplayAbility를 상속한 클래스이며, 해당 Ability가 무엇을 하는지와 어떤 조건에서 사용할 수 있는지를 정의한다.


 

2. Gameplay Ability의 특징

비동기적 실행

 

• Gameplay Ability는 단순한 함수가 아니라 비동기적으로 실행되는 인스턴스 객체이다.

• 특정 시점에 활성화될 수 있다.

• 여러 단계(Multi-stage)의 작업(Task)을 수행할 수 있다.

• 이러한 작업은 일정 시간에 걸쳐 진행될 수도 있고, 그렇지 않을 수도 있다.

 

수행되는 작업

• 작업은 다른 작업으로 분기할 수 있다.

• 작업은 자체적으로 Gameplay Effect를 적용할 수 있다.

• 이후 배우게 될 Gameplay Cue를 실행할 수도 있다.

 

조건부 실행

• Gameplay Ability의 동작은 조건부일 수 있다.

• 조건은 다음과 같은 요소를 기반으로 할 수 있다.

플레이어 상호작용
환경과의 상호작용

 

 

Replication과 Prediciton 지원

• Gameplay Ability는 Gameplay Effect와 마찬가지로 Peplication과 Prediciton 기능을 기본적으로 지원한다.


 

3. Cost 와 CoolDown

Gameaplay Ability에는 기본적으로 Cost와 Cooldown이라는 개념이 포함되어 있다.

 

Cost

Ability를 활성화하기 위해서는 필요한 Attribute Resource가 충분히 존재해야 한다.

강의에서는 Mana를 Cost 자원으로 사용하여 구현한다.

하지만 자원(Resource)가 Mana일 필요는 없으며, 어떤 것이든 사용할 수 있다.

 

CoolDown

Cooldown이 적용되면, Cooldown이 끝날 때까지 해당 Ability를 다시 활성화할 수 없다.


 

4. Ability Task

Ability Task는 Gameplay Ability가 실행되는 동안 비동기 작업을 수행한다.

 

Delegate Broadcast

Ability Task는 Delegate를 Broadcast하여 Ability의 실행 흐름에 영향을 줄 수 있다.

 

Blurprint에서의 형태

Ability Task는 C++ 에서 사용할 수 있고, Blueprint에서 여러 개의 출력 실행 핀을 가진 특수한 Blueprint 노드 형태로 나타난다.

이 출력 실행 핀들은 개발자가 정의한 이벤트가 발생했을 때 Broadcast된 Delegate에 의해 실행된다.

이 구조를 사용하면 Blueprint에서 Ability 제어 흐름을 쉽게 구성할 수 있다.

 

C++의 장점

Ability Task가 수행하는 작업은 대부분 C++에서 처리된다.

따라서 C++의 최적화된 성능을 그대로 활용할 수 있다.

 

디자이너의 Ability 설계

Ability Task를 만들어 대부분의 작업을 C++에서 수행하도록 만들면, Ability Blueprint에서는 Gameplay Ability의 메커니즘을 유연하게 설계할 수 있다.

또한 C++ 코드를 다룰 수 없는 디자이너도 성능을 희생하지 않고 Ability를 보다 자유롭게 제어할 수 있다.


 

4. Ability Task

Ability 부여

Gameplay Ability를 사용하려면 먼저 Ability System Component에 해당 Ability를 부여해야 한다.

 

Gameplay Ability Spec

Ability가 부여되면, Gameplay Ability Spec이 생성된다.

이는 해당 Ability와 관련된 세부 정보를 정의한다.

Gameplay Ability
Ability 클래스
Ability 레벨
런타임에 변경 가능한 동적 정보

 

서버에서 Ability 부여

Ability는 일반적으로 서버에서 부여된다.

Ability가 부여되면 Gameplay Ability Spec이 Owning Client로 Replicate된다.

그 결과 Owning Client는 자신의 Gameplay Ability를 활성화할 수 있게 된다.


 

6. Activation

Gameplay Ability에는 Activation이라는 개념이 존재한다.

 

활성 상태

Ability는 한 번 Activate되면 다음 중 하나가 발생하기 전까지 활성 상태로 간주된다.

Ability가 종료되는 경우
Ability가 취소되는 경우

 

종료와 취소

Ability는 스스로 종료할 수도 있고, 외부에서 취소될 수도 있다.

 


7. 강의 요약

Gameplay Ability

Gameplay Ability는 액터가 수행할 수 있는 특정 스킬, 주문 또는 다양한 능력을 정의하는 클래스이다.

Ability를 사용하려면 Ability System Component에 먼저 부여해야 한다.

Ability는 일반적으로 서버에서 부여되며, Ability Spec이 생성되어 Owning Client로 Replicate된다.

Ability를 사용하려면 먼저 Activate해야 한다.

Activate된 Ability는 종료되거나 취소될 때까지 Active 상태를 유지한다.

Ability에는 Cost와 Cooldown 개념이 기본적으로 포함되어 있다.

Ability는 비동기적으로 실행될 수 있다.

여러 개의 Ability가 동시에 Active 상태일 수도 있다.

Ability는 Ability Task를 실행할 수 있다.

 

Ability Task

Ability Task는 비동기 작업을 수행하는 클래스이다.

하나의 동작(Behavior)을 하나의 클래스로 캡슐화한다.

각각의 Ability Task는 자신만의 특정 작업을 수행한다.

공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함