본문 바로가기
UE5 : Paper 2D (Blueprint)/인공지능과 컨트롤러

[UE5 : Paper2D(BP) - 인공지능과 컨트롤러] Chapter 01. FSM

by song.ift 2024. 1. 9.

GitHub : https://github.com/developeSHG/UE5-Paper2D/commit/350956311be0247df882a7db1caf725a5285c672

 

FSM · developeSHG/UE5-Paper2D@3509563

hokyung.song committed Jan 9, 2024

github.com

 

 

 


 

 

인공지능을 구현할 때, 대부분 초보자들은 Boolean으로 접근을 하려는 경우가 굉장히 많다. 나도 예전에 그랬다.

예를 들면, 불리언 변수를 계속 만들어서 멈춰있느냐 아니면 정찰을 가느냐 즉 어느 상태에 있느냐 체크를 했다. 이렇게 불리언을 계속 늘리게되면 나중에 로직이 꼬일 수가 있기 때문에 굉장히 좋지 않은 방법이다. 

 

권장하는 방법은 상태를 이용해서 관리하는 방법이 좋다. 이전 글 중에 State 라는 변수를 사용했는데, 각 상태에 따라 로직을 구분해주면 훨씬 깔끔하고 만들기도 쉽다. 

 

이 방법을 조금 유식하게 표현하면 유한 상태 기계에 해당한다고 생각하면 된다. FSM, Finite State Machine.

Behavior Tree까지 가지 않고, FSM 방식으로 대부분의 인공지능을 다 만들 수가 있다.

보스 패턴이 정말 복잡해서 와우게임의 보스급이 아닌 이상, 기본 몬스터같은 경우는 대부분 유한 상태 기반으로 만드는 게 굉장히 깔끔하게 만들 수가 있다. 

 

인공지능을 깊이 만드려면 너무 방대하기 떄문에 아주 간단하게 만들었다. 

Get Actor Of Class로 플레이어를 찾은 다음 Validation(null) 체크를 한 다음, Move 상태로 간다.

 

그 다음 틱에서, Move로 들어오게 되면 Vaildation 체크를 해준 다음에 아직도 플레이어가 유효하다라고 하면 그 플레이어를 향해서 가게끔 방향 벡터를 먼저 구해준다. 

방향 벡터로 따라가게끔 유도를 해주고, 일정거리 안에 들어왔으면 Begin Attack을 호출해줘서 공격을 하는 식으로 만들어졌다. 

댓글