기존에 단순히 ‘먹는 공격’만 으로 기획되었던 호러크리처(HorrorCreature) AI 패턴을 더 다양하고 예측 불가능하게 만들고 싶었음.
같은 ‘먹는’ 컨셉의 몬스터로 이미 Limadon이라는 적이 존재했기 때문에, 행동 차별화와 게임플레이의 깊이를 추가하기 위해
Flee(도주) 상태를 새롭게 설계·도입.
호러크리처는 플레이어를 삼킨 후, 일정 거리만큼 도망가다가 안전하다고 판단되면 삼킨 대상을 뱉어내고
다시 빠르게 도주(Flee)하는 특별한 행동 패턴을 구현.

HorrorCreature의 전체 BehaviorTree

HorrorCreature의 Combat Task
void AHorrorCreature::SwallowPlayer(AUnderwaterCharacter* Victim)
{
.
.
.
SetMonsterState(EMonsterState::Flee);
BlackboardComponent->ClearValue(TargetActorKey);
}
void AHorrorCreature::EjectPlayer(AUnderwaterCharacter* Victim)
{
.
.
.
FTimerHandle SetPatrolTimeHandle;
GetWorld()->GetTimerManager().SetTimer(
SetPatrolTimeHandle,
this,
&AHorrorCreature::SetPatrolStateAfterEject,
FleeTime,
false
);
}
SetMonsterState(EMonsterState::Flee)로 전환.SetPatrolStateAfterEject() 를 통해 다시 Patrol로 전환.
다양한 몬스터의 행동으로 인해 게임플레이 몰입감, 긴장감 증가
동일 컨셉 몬스터 간의 개성 부여, 차별화
추후 패턴·상태 추가 확장성 및 코드 재사용성 향상
👉 Flee 상태 도입으로 플레이어의 몰입감과 게임의 긴장감을 한층 강화했고, AI 패턴의 확장성과 차별화된 심해 호러 경험을 실현
