팀 작업 - 미니언(AI) 작업 구조 짜기
미니언(AI) 작업 구조 짜기
사용 기능(예정)
- GAS
- State Tree
- MassAI 의 경우, 차후 맵이 매우 넓어지는 경우 고려 가능
- 하지만 그 외의 경우는, 필요에 따라 Entity를 Actor로 승격시킬 필요가 존재함
- 하지만 그 외의 경우는, 필요에 따라 Entity를 Actor로 승격시킬 필요가 존재함
- MassAI 의 경우, 차후 맵이 매우 넓어지는 경우 고려 가능
- Spline + NavMesh
- Zone Graph가 Mass AI에 특화되어 있음
- 차후, Mass AI 고려시 Zone Graph 채택 고려
- 차후, Mass AI 고려시 Zone Graph 채택 고려
- Zone Graph가 Mass AI에 특화되어 있음
기능 구성
1. 길 찾기 & Line 표시
- Spline Component를 사용할 Actor 생성 (USplineComponent)
- 미니언은 다음 Spline의 위치를 받아 Move To
2. AI
- State Tree를 이용한 상태 구조 정의
- ‘Death’ State
- Condition : Health 가 0 이하
- Task : Death 몽타주 재생 및 충돌 Collision 제거, 일정 시간 후 Destroy
- ‘Combat’ State
- Condition : TargetActor가 유효 및 사거리 안에 존재
- Task : GAS Ability Activation(공격 어빌리티 실행)
- 다만, 쿨타임 중이라면 ‘대기’해야 하는 상태 처리 필요
- ‘Chase’ State
- Condition : TargetActor가 유효 및 사거리 밖에 존재
- Task : MoveTo TargetActor
- 다만, Spline의 특정 거리만큼 벗어나게 되는 경우 다시 돌아와야 함
- ‘Walk’ State
- Condition : TargetActor 가 없음 (주변에 적 없음)
- Task : FollowSpline (다음 지점을 따라가며 최종적으론 적의 보호 목표로)
- 진입 시점에서 Target Location을 미리 저장해둘 예정
- ‘Death’ State
3. Battle
- GAS 기반
- AttributeSet
- Health : 체력
- AttackDamage : 공격력
- AttackRange : 사거리 (State Tree 의 조건 판별용)
- Defense : 방어력?
- GA
- GA_MeleeAttack : 근거리 미니언 용 (다만 유사한 MeleeAttack 등이 존재하는지 체크)
- 몽타주 재생 → Notify에서 GameplayEvent → Damage 적용
- GA_RandedAttack : 원거리 미니언 용 (역시 유사한 GA 있는 지 체크)
- 몽타주 재생 및 발사체(Projectile) 스폰?
- GA_Die : 사망처리용
- GA_MeleeAttack : 근거리 미니언 용 (다만 유사한 MeleeAttack 등이 존재하는지 체크)
- GE
- MinionAttribute 등을 이용해 Spawn시 스탯 세팅이 가능할지 고민
- 아니면 DataAsset 사용여부 고민
- MinionAttribute 등을 이용해 Spawn시 스탯 세팅이 가능할지 고민
- AttributeSet
4. Wave Manager
- 기본적으로 Server에서만 동작할 예정 (WorldSubsystem?)
- 관련 변수
- WaveInterval : 웨이브 생성 주기
- MinionClassess : 생성할 미니언 클래스?
- SpawnLocation : Spawn 위치
- 미니언들마다 Offset 을 고려?
- Timer를 이용하여 Wave를 Spawn
- 아마 0.5초 간격으로 Spawn
- Wave 구성요소를 위한 Data?
- 기본 근거리 3, 원거리 3, 공성 1 소환
- 공성이 짝수 웨이브나 특정 웨이브마다 소환되는 경우는 변수 하나 추가
- 넥서스 깨졌을때, 슈퍼 미니언이 포함되어 추가적으로 Spawn
- 역시 변수 하나 관리
- 다만, 차후 Spawn 방식이 다양해지는 경우는 별도의 구조체를 포함시키는 쪽으로
- 기본 근거리 3, 원거리 3, 공성 1 소환
작업 관련?
- ANpcCharacter (미니언 말고, 중립 몬스터 활용)
- 멤버
- ASC
- GameplayAbility
- AttributeSet (아마 기존의 만들어진 캐릭터 사용 예정)
- State Tree? (UStateTreeComponent)
- SkeletalMesh
- ASC
- 관련 GA, GE
- GA
- Attack
- Dead
- Attack
- GE
- MinionData 를 GE로? + DataTable (소환시 세팅)
- MinionData 를 GE로? + DataTable (소환시 세팅)
- GA
- 멤버
-
- WaveSpawner
- 에디터에서 배치할 Line 구조
- 멤버
- WaveSpawnData : 생성할 Minion Class + 개수에 대한 집약
- SplineComponent
- WaveSpawnData : 생성할 Minion Class + 개수에 대한 집약
- WaveSpawner
- MinionCharacter - 실제 생성할 캐릭터
- BP로 여럿 생성하여 MinionType 을 나누어 클래스 분류
- MinionType?
- MinionType?
- BP로 여럿 생성하여 MinionType 을 나누어 클래스 분류
댓글남기기