프로젝트/CCFF
[Project] 미친 선인장과 분노의 버섯 - #1 격투게임 템플릿 구조 분석
2h1824
2025. 3. 25. 23:08
BP_Fighter
- 플레이어블 캐릭터의 Base에 해당하는 클래스
- Collision Component가 기본적으로 하나 있고 특수 패턴을 위한 세부 Collision이 따로 있는 형태
- Ability(BPC_Ability): BP_BaseAbility라는 이름으로 캐릭터의 동작 애니메이션과 동작에 따른 Collision 형성에 관련된 로직들이 위치한 클래스를 사용하기 위한 Component
BPC_Ability
- 플레이어의 입력에 따른 알맞은 Ability 호출하여 동작 수행
- 캐릭터에 알맞은 BP_Ability의 할당도 이곳에서 이루어짐
- 특정 동작이 호출되었을 때, 해당 동작을 호출하는 것도 이곳에 해당
- 격투게임이기 때문인지 Buffer를 이용하고 입력에 따른 동작 처리를 하는 것으로 보임
BP_BaseAbility
- 입력에 따른 동작들의 공통 로직들이 구현되어 있는 클래스
- 이를 상속받은 특정 Ability들에 동작의 애니메이션과 Hit Box같은 것들의 설정하여 사용
- 동작의 시작, 끝에 따른 함수 호출이나 Hit Event를 발생시키기 위한 타격범위 설정도 함께 수행
ㅡ> 타격 범위로는 Collision이 아닌 StaticMesh를 쓰고 있는 것으로 보임 - 동작들에 해당하는 특정 Ability들에는 디버그용 HitBox(BP_DamagerInfo)가 디버그를 통해 사이즈를 정하기 위해서인지 눈에 보임
ㅡ> 디버그용이기 때문에 BeginPlay가 호출되면 삭제
ㅡ> 이후 BP_Damager라는 진짜 HitBox에 해당하는 클래스를 생성하여 부착하는 방식으로 보임
정리
- 많은 Enum들이 캐릭터 내에서 사용되고 있음
ㅡ> State, AttackType, Collision Type 등
ㅡ> Enum의 경우 간단하고 효율적인 형태로 인자를 전달할 수 있으므로 활용하는 것이 좋아 보임 - 기본적으로 캐릭터에 해당하는 BP_Fighter 클래스에는 이전 프로젝트에서처럼 기본 행동에 해당하는 함수들이 구현
ㅡ> 더 살펴봐야 하겠지만 기본 행동 함수에서는 알맞은 State로 바꾸는 것까지만 수행하고 나머지는 State 변경을 감지한 다른 클래스에서 이루어지는 형태로 추정 - 특정 행동들이 호출되면 알맞게 State가 바뀌는 것이 BP_Figher 클래스에서 이루어지는 중이고 몇몇 특별한 State의 경우 BP_BaseAbility에서 이루어짐
ㅡ> 기본적으로 따로 State 전환을 담당하는 클래스는 필요하지 않을 것으로 보임
ㅡ> 물론 State 전환 과정에서 로직이 복잡해진다면 그때는 클래스를 분리하는 것을 고려
참고자료
https://www.fab.com/ko/listings/1516c689-17c3-4299-9589-f4bb4b3faca8