728x90
여러 상태(State)와 각 상태간의 전이(Transition)으로 이루어진 모델방법 이다.
FSM은 객체의 행동을 여러 상태로 나누어 표현하고, 상태 간 전이에 따라 객체의 동작이 변경된다.
이러한 구분방식은 게임개발시 캐릭터의 행동, NPC의 행동, 게임 상태등을 관리하는데 좋다.
FSM은 3가지 구성요소로 정의된다.
- 상태(State)
- 객체가 취할 수 있는 다양한 동작 또는 상태를 나타낸다.
- 예를들어. 이동, 공격, 대기 등을 말할 수 있다.
- 이벤트(Event)
- 각 상태간 전이를 일으키는 외부, 또는 내부에서 발생하는 사건 또는 조건을 말한다.
- 예를들어, " 이동한 후 도착 " 이벤트가 발생하면, 이동 -> 도착 으로 상태가 전이된다.
- 전이(Transition)
- 상태간의 전이를 나타내며, 특정 이벤트가 발생했을 때 어떤 상태로 이동할지 정의한다.
이러한 구분방법으로, 얻게되는 장점은 다음과 같다.
- 가독성과 유지보수 향상
- 각각 상태로 나누어 관리함으로 구분짓기 편하다.
- 상태전의의 명확한 정의
- 어떤 조건, 또는 이벤트에 의해 전이될지 명확하게 정의할 수 있다.
- 코드 재사용
- 동일 형태에서 여러 객체에 사용 가능함으로 중복코드를 최소화 할 수 있다.
/ 상태 정의
enum CharacterState {
IDLE,
WALKING,
RUNNING,
JUMPING
};
class Character {
private:
CharacterState currentState;
public:
// 이벤트에 따른 상태 전이
void HandleEvent(CharacterEvent event) {
switch (event) {
case MOVE_FORWARD:
currentState = WALKING;
break;
case MOVE_BACKWARD:
currentState = WALKING;
break;
case JUMP:
currentState = JUMPING;
break;
// 다른 이벤트 처리
}
}
// 현재 상태에 따른 동작 실행
void Update() {
switch (currentState) {
case IDLE:
// 아무 동작도 하지 않음
break;
case WALKING:
// 걷기 동작 수행
break;
case RUNNING:
// 달리기 동작 수행
break;
case JUMPING:
// 점프 동작 수행
break;
}
}
};
대충 위와같이 사용된다고 이해하면 된다.
정의된 상태에 따라 Update()에서 필요한 동작상태로 구분지어 동작한다.
728x90
'컴퓨터 용어 정리' 카테고리의 다른 글
클래스 다이어그램(Class Diagram) (0) | 2023.12.06 |
---|---|
행동 객체화 방법 [ FSM 응용 ] (0) | 2023.12.01 |
DirectX Instancing (0) | 2023.11.28 |
20231109 27일차 Font, Frustum (0) | 2023.11.09 |
Frustum 기법 (0) | 2023.11.09 |