관리 메뉴

기억을 위한 기록들

[Game Ability System] #3. GamePlayTag에 관해 본문

UnrealEngine

[Game Ability System] #3. GamePlayTag에 관해

에드윈H 2024. 1. 21. 15:53

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/Tags/

 

게임플레이 태그

게임플레이 태그는 오브젝트 식별, 분류, 일치, 필터링에 사용 가능합니다.

docs.unrealengine.com

 

 

사용자 정의 이름을 붙인 개념적 계층형 라벨입니다. 이 태그는 "." 글자로 구분되는 계층구조를 몇 단계든 가질 수 있습니다. 예를 들어 세 단계의 게임플레이 태그는 "Family.Genus.Species" 형태를 띄며, "Family" 가 계층구조에서 가장 넓은 식별자가 되고, "Species" 는 가장 구체적인 것이 됩니다. 참고로 "Family.Genus.Species" 가 존재한다는 것은 "Family.Genus" 와 "Family" 게임플레이 태그 역시 존재한다는 것을 암시합니다. 개별 태그는 경량이며, 
FGameplayTag 를 사용합니다. 게임 오브젝트는 자주 다수의 태그를 갖기에 (FGameplayTagContainer 유형을 사용하는) Gameplay Tag Containers (게임플레이 태그 컨테이너)가 제공되어, 다양한 추가 질의 처리가 가능합니다. 게임플레이 태그 (또는 게임플레이 태그 컨테이너)는 아무 오브젝트에 추가하고 개념적 라벨을 할당한 뒤 프로젝트의 요구에 따라 식별, 일치, 분류, 필터 적용이 가능합니다.

-공식 홈페이지 중..-

 

 

 

개인적으로 액터 태그과 비슷했지만 좀 더 상위 호환으로 느껴진다.  재사용 가능하여 사람의 오류(Human Error) 를 방지하고 빠른 선택이 가능하다.

- 훌륭한 "매칭" 시스템이다.

- 매우 강력하다

- GAS 플러그인 외부에 존재한다.

- FName으로 관리되는 경략의 표식 데이터

- 프로젝트의 DefaultGameplayTags.ini 파일에 저장된다

- 계층형으로 되어 있다.

- 태그들의 저장소 : GameplayTagContainer

 

 

GamePlayTag 관리 방식 3가지

 

1. ini 파일 관리 : 프로젝트 설정 및 특정 ini 파일을 지정해서 직접 ini에 작성할 수 있다.

2. 자체 데이터 테이블 관리 방식 : 에디터에서 데이터테이블 생성시 

해당 테이블 구조를 선택하면, 이름(TEXT)뿐이긴 하나, 태그로 지정 해줄 수 있다.

 

 

게임플레이 태그 테이블 목록에 추가 되어 있는 모습 Lyra 프로젝트 중 일부

 

3. C++ 코드 내부에 선언 : UE_DEFINE_GAMEPLAY_TAG 이라는 매크로를 사용해서 코드에서 사용할 태그네임을 앞에 선언하고 태그로 사용할 이름을 뒤에 지정해서 추가 해줄 수 있다.

ex)

Lyra 프로젝트 중 일부