언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

RPG 직업군 - 최종) RPG 직업군 생성 및 AttributeSet 설정

monstro 2025. 8. 21. 23:56
728x90
반응형

- 개요

RPG에서 주로 사용하는 직업군을 추가하고 직업군에 맞춰 Attribute(스탯)를 설정한다

방식은 다음과 같다

  • RPG 직업군을 정리한 데이터 애셋 클래스CharacterClassInfo 클래스를 생성
  • 해당 클래스 안에 직업군을 분류CharacterClass 열거형 클래스를 추가
  • 해당 클래스에 Primary / Secondary / Vital 어트리뷰트를 설정하는 GameplayEffect를 추가
  • GameplayEffect들은 Curve Table을 사용하여 Attribute의 값을 설정

 

1) CharacterClassInfo 클래스

 

직업군을 분류하기 위한 CharacterClass 열거형 클래스를 추가한다

 

 

CharacterClassDefaultInfo 구조체를 추가한다

해당 구조체를 사용하여 각 직업군에 기본적으로 설정할 스탯(AttributeSet)부여할 능력(Ability)을 관리한다

따라서 PrimaryAttribute를 설정하는 GameplayEffect우선 적용GameplayAbility들을 묶어 관리한다

 

 

CharacterClassInfo 클래스의 구성은 위와 같다

TMap을 사용하여 직업군에 따라 기본적으로 설정할 스탯과 어빌리티를 지정한다

SecondaryAttributeVitalAttribute를 설정하는 GameplayEffect도 지정한다 

GetClassDefaultInfo 함수를 사용하여 직업군에 맞는 CharacterClassDefaultInfo 구조체를 가져올 수 있다

 

 

GetClassDefaultInfo 함수의 로직은 위와 같다

인자로 받은 CharacterClass를 기반으로 연결된 CharacterClassDefaultInfo 구조체를 탐색한다

 

2) AuraGameModeBase 클래스

 

GameMode에서 캐릭터 직업군의 DataAsset을 갖고 있도록 멤버 변수를 추가한다

 

3) AuraAbilitySystemLibrary 클래스

 

AuraAbilitySystemLibrary2개의 함수를 추가한다

추가한 함수들을 사용하여 직업군의 DataAsset의 데이터를 통해 AttributeSet을 설정할 수 있다

 

 

GetCharacterClassInfo 함수의 로직은 위와 같다

AuraGameMode를 가져와멤버 변수로 설정한 CharacterClassInfo를 가져온다

 

 

InitializeDefaultAttributes 함수의 로직은 위와 같다

우선, CharacterClassInfo를 가져오고 CharacterClassDefaultInfo를 가져온다

PrimaryAttribute -> SecondaryAttribute -> VitalAttribute 순서로 GESpecHandle을 생성하여 을 설정한다

(구조가 반복되므로 추후 리팩토링이 가능하다)

 

4) AuraEnemy 클래스

 

InitializeDefaultAttributes 함수를 오버라이드하여 몬스터의 AttributeSet을 설정할 수 있도록 한다

 

 

CharacterClass 멤버 변수를 추가하여 몬스터의 직업군을 설정할 수 있도록 한다

 

 

InitializeDefaultAttributes 함수의 로직은 위와 같다

InitializeDefaultAttributes 함수를 호출하여 AttributeSet의 값을 설정한다

 

5) 언리얼 에디터

 

위와 같이 몬스터를 대상으로 AttributeSet을 설정하는 3개의 GameplayEffect를 생성한다

 

 

각각의 GameplayEffect는 위와 같이 Curve Table을 사용하여 적용할 값을 설정한다

 

 

CharacterClassInfo 클래스의 데이터 애셋을 생성하고 위와 같이 설정하였다

 

 

GameMode의 블루 프린트에서 생성한 CharacterClassInfo 데이터 애셋을 설정한다

 

- 최종 실행 결과

 

728x90
반응형