728x90
반응형
📕오늘의 공부 주제
FSM, UtilityAI, GOAP(Goal of Action Planning), Behavior Tree
친구에게 들은 내용을 정리하고자 한다.
🤔Why?
경력자인 친구가 있어 몬스터 AI를 구현하는게 어렵게 느껴진다 등 여러 이야기를 하다보니, AI를 만들때도 여러가지 방법이 있다고 얘기를 해주며 듣게 되었다.
해당 부분을 공부를 좀 해보고자 한다.
📖오늘의 공부 내용
SimpleFSM
- switch-case, enum을 이용한 단순 구조
장점
구현이 쉬움단점
어떤 상태로 들어갈때와 나갈 때의 행동 정의가 어려움(코드 복잡도 상승)
상태의 개수가 늘어나면 코드의 복잡도 증가(수정 어려움)
ex)
public enum State { Idle = 0, Walk, Run, Attack }
public State state;
public void UpdateState()
{
switch(state)
{
case State.Idle :
Debug.Log("대기");
break;
case State.Walk :
Debug.Log("걷기");
break;
case State.Run :
Debug.Log("달리기");
break;
case State.Attack :
Debug.Log("공격");
break;
}
}
public void ChangeState(State state)
{
this.state = state;
}
StatePattern을 이용한 FSM
ex)
public interface IState
{
public void Enter();
public void Exit();
public void HandleInput();
public void Update();
public void PhysicsUpdate();
}
public abstract class StateMachine
{
protected IState currentState;
public void ChangeState(IState newState)
{
currentState?.Exit();
currentState = newState;
currentState?.Enter();
}
public void HandleInput()
{
currentState?.HandleInput();
}
public void Update()
{
currentState?.Update();
}
public void PhysicsUpdate()
{
currentState?.PhysicsUpdate();
}
}장점
- 각 상태가 독립 클래스로 분리되어 책임이 명확함
- 확장성 높음: 새로운 상태 추가가 쉬움
- 전이 로직이 명확하여 초기화/정리작업이 용이
- 협업 시 역할 분담이 쉬움 (상태별 파일 구분)
단점
- 간단한 FSM에는 과도한 구조
- 클래스 수 증가로 파일 관리 부담
- 상태 간 의존이 생기면 복잡도 증가
- GC 비용 발생 가능 → 상태 객체 재사용 필요
출처 - https://seoksii.tistory.com/73
728x90
반응형
'프로그래밍 공부 > TIL' 카테고리의 다른 글
| 2025-06-30 TIL (0) | 2025.06.30 |
|---|---|
| Kata - RGB To Hex Conversion (0) | 2025.06.02 |
| 20250521 - 코테 문제풀이 (0) | 2025.05.21 |
| 20250520 - 움직이는 플랫폼 (0) | 2025.05.20 |
| 20250519 - 점프대 구현 (0) | 2025.05.19 |
