-
[TIL] 12주차 1일 ( FSM, 유한 상태 머신 )개발일지/스파르타 코딩클럽 부트캠프 2024. 7. 1. 20:44
FSM, 유한 상태 머신이란 무엇일까?
- 유한 상태 기계 ( Finite State Machine, FSM )
- FSM의 개념
- FSM은 유한한 갯수의 상태들로 구성된 기계 및 패턴을 말한다.
- 상태와 상태 간의 전환을 기반으로 동작하는 동작 기반 시스템이다.
- FSM의 구성 요소
- 상태 (State) : 시스템이 취할 수 있는 다양한 상태를 나타낸다.
- 전환 조건 ( Transition Condition ) : 상태 간 전환을 결정하는 조건이다.
- 동작 (Action) : 상태에 따라 수행되는 동작 또는 로직을 나타냅니다.
- FSM의 동작 원리
- 초기 상태에서 시작하여 입력 또는 조건에 다라 상태 전환을 수행한다.
- 상태 전환은 전환 조건을 충족할 때 발생하며, 전환 조건은 입력, 시간, 조건 등으로 결정된다.
- 상태 전환 시 이전 상태의 종료 동작과 새로운 상태의 진입 동작이 수행된다.
- FSM의 예시 : 플레이어 상태 관리
- 상태 : 정지 상태, 이동 상태, 점프 상태
- 전환 조건 : 이동 입력, 점프 입력, 충돌 등의 조건
- 동작: 이동 애니메이션 재생, 점프 처리, 이동 속도 조정 등
- Switch-Case 문을 활용한 FSM의 단점
- 상태 기계를 구현하는 가장 간단한 방법은 case switch문이다.
- 상태가 많아지고 조건이 복잡해지면 코드가 길어진다 ( ex. 어떤 행동 때 특정 키의 입력을 막는 조건이 들어갈 때 등 )
- 유지보수에 어려움을 겪을 수 있음
- 상태가 추가될 때마다 새로운 분기를 작성해야하고, 중복된 코드가 많아진다.
- State Pattern(상태패턴)을 활용한 FSM의 장점
- 기본적으로 객체지향의 다형성을 활용한다.
- 상태를 명확하게 정의하고 상태 간 전환을 일관되게 관리할 수 있다.
- 복잡한 동작을 상태와 전환 조건으로 나누어 구현하므로 코드 유지 보수가 용이하다.
- 다양한 동작을 유기적으로 조합하여 원하는 동작을 구현할 수 있다.
'개발일지 > 스파르타 코딩클럽 부트캠프' 카테고리의 다른 글
[TIL] 12주차 4일 ( Raycast2D로 연속점프 방지하기 _ 트러블슈팅 ) (0) 2024.07.04 [TIL] 12주차 2일 기술 면접 대비 (0) 2024.07.03 [TIL] 11주차 5일 ( 리소스 데이터 관리 ) (0) 2024.06.28 [TIL] 11주차 4일 최종 프로젝트 기획 (0) 2024.06.27 [TIL] 11주차 3일 ( 유니티 커스텀툴 만드는 방법 ) (0) 2024.06.26