Gladiator Fantasy Project(1)

정혜창·2025년 4월 3일
0

내일배움캠프

목록 보기
40/43

프로젝트를 하면서 따로 TIL을 정리를 말끔하게 할 수 없어서 프로젝트를 하는 기간에는 TIL을 쓰는 방식을 바꾸기로 했다.
프로젝트를 하는 중간중간에 메모를 하는 느낌으로 진행

📌 GamePlay Tag

프로젝트를 진행하기 위해 참고하는 Templete인 Multiplayer Arena의 BluePrint 내부를 살펴보았다.
탬플릿 내부에는 BP_MainCharacter를 활용하고 내부에는 많은 Component를 활용함.

그중에서 BPC_CombatStateManager를 살펴보았다.

  • 게임이 시작되면 Replicated를 활성화하고 Component도 활성화.

  • GetOwner로 Character를 가져와서 서버인지 확인(Owner Has Autority)

  • Set w/Notify를 통해 (Set with Notify) Client에 해당 함수 실행

ComponentBeginplay가 실행이 되고 Character 변수를 Promote해서 Set 한뒤 Replecated
한뒤 Character에 Tags 부여
Tags는 GamePlay Tag타입

Unreal의 FGamePlayTagContainer는 내부적으로 TSet<GameplayTag> 를 래핑한 구조로 돌아감

struct FGameplayTagContainer
{
    TSet<FGameplayTag> GameplayTags;
    ...
};

F_SP_Add Single_Player_Tags 함수를 통해 해당 Character에 Tag를 부여

  • AI 인지 확인을 한 후 Get Single Player AI Type을 통해 AI Type 반환 첫번째 (Type 은 아래 Enum 값을 통해 찾음)

  • AI 라면 Select_1을 통해 Enemy, Companion Tag가 부여되는걸 알 수 있음.

  • Player라면 (함수 Input Parameter) Player Tag로 덮어쓰도록 설정하고 TagContainer에 해당 Tag들을 추가

이후 캐릭터에 설정된 ABP와 Speed를 변수로 Promote하고 Construct Character Event 실행


📌 ConstructCharacterEvent

1️⃣ 전반부

  • Character DataTable를 가져와서 Row(행) 값을 들고와서 변수로 승격(Struct Type)

  • FindAnimSetNamefromEnum을 통해 Animation Set Name을 가져옴

  • Row값을 찾았다면 Branch True 실행 이후에 나오는 BeginPlay Spawn Weapon이 실행됌.

2️⃣ 후반부

  • Break S Character Construct를 통해 Row 내부의 값을 변수로 설정

    • Block Method : Actor Colision 설정
  • Use Data Table Attributes (데이터 테이블 속성 사용 bool) 를 통해 True면 Apply Struct Attributes 실행

    • 기본값은 False
    • Default Attributes Name : ThirdPerson

3️⃣ BeginPlaySpawnWeapons

👉 전반부

  • Input Parameter는 DT_Character 의 Row값 Animataion Set Name이다.

  • 위의 Name을 통해 Animation DT 값을 찾음

  • 여기서 해당 몽타주를 할당

  • Row 값을 들고와서(몽타주들이 할당되어있는 저장값)을 Current Animation으로 변수승격

  • Row 내부의 HitReactionDTName, BlockDTName 을 통해 Hit Reaction DT, Block DT로 부터 찾아서 변수로 승격

👉 후반부

  • Spawn and Attach Weapon

    • 👉 전반부

    • Character의 서버동작을 확인한 후 Init Weapon Struct를 비움. (Init Weapons Struct는 TMap WeaponMap<Name, Actor>)

    • CurrentAnimSet에서 (Dt에서 가져온 Raw 값) Weapons to Spawn TArray 가져오고 Loop 진행

      • 완료되면 Weapon Equipped Set 하고 Notify 진행.
    • Array의 Name promote

profile
Unreal 1기

0개의 댓글

관련 채용 정보