| 태그 종류 | 설명 |
|---|---|
| Ability Tags | 어빌리티가 가지고 있는 태그 |
| Cancel Abilities with Tag | 실행 시 해당 태그의 능력을 취소 |
| Block Abilities with Tag | 실행 중, 해당 태그의 능력 차단 |
| Activation Required Tags | 해당 태그가 있을 때만 발동 가능 |
| Activation Blocked Tags | 해당 태그가 있으면 발동 불가 |
| Source/Target Required/Blocked Tags | 발동 주체(Source) 또는 대상(Target)에 조건 부여 |
| Activation Owned Tags | 어빌리티가 활성화된 동안 소유자에게 부여되는 태그 |
| 옵션 | 설명 |
|---|---|
| Instanced Per Actor | 한 번 생성되어 재사용 (상태 저장 가능) |
| Instanced Per Execution | 매번 새 인스턴스 생성 (상태 초기화됨) |
| Non-Instanced | 인스턴스 없이 동작 (퍼포먼스 최고, 상태 저장 불가) |
| 옵션 | 설명 |
|---|---|
| Local Only | 클라이언트에서만 실행 |
| Local Predicted | 클라이언트 + 서버 예측 실행 (권장) |
| Server Only | 서버 전용 (패시브 등) |
| Server Initiated | 서버 → 클라이언트로 복제 실행 |
✅ 대부분의 액티브 어빌리티는 Local Predicted가 적합
| 설정 | 이유 |
|---|---|
| Replicate Input Directly | 매 프레임 RPC 전송 가능 → 성능 악화 |
| Replication Policy | 어빌리티는 기본 복제됨. 건드릴 필요 없음 |
| Server Respects Remote Cancellation | 클라이언트가 서버 어빌리티를 취소할 수 있음 → 권장되지 않음 |
USTRUCT(BlueprintType)
struct FAuraInputAction
{
GENERATED_BODY()
UPROPERTY(EditDefaultsOnly)
const class UInputAction* InputAction = nullptr;
const FGameplayTag InputTag = FGameplayTag();
};
- 입력(Input)과 태그(Tag)를 함께 묶기 위해
- 입력 이벤트를 직접 사용하지 않고 GameplayTag 기반으로 어빌리티 발동
- InputAction과 FGameplayTag를 쌍(Pair) 으로 관리하는 것이 가장 유연함
이 구조를 통해 명확하게 연결 가능
ex) 공격 버튼이 눌리면 Input.Attack 태그 발동
- 확장성과 일관성
- 구조체로 만들어두면 구조 확장이 쉽고 코드가 깔끔하고 명확해진다
- 타 시스템과 연결이 쉬움