2024. 6. 14. 20:59ㆍ나의 개발자 기록/본 캠프 개발 일지
2024년 6월 14일 금요일
What I did today
오늘도 늘 똑같이 팀원분들과 인사를 하고, 각자 진도에 맞게 강의를 들었습니다. 저는 어제 FSM 강의에서 상태머신 준비와 스테이트 머신 만들기, 그리고 플레이어 이동 상태까지 했었고, 오늘 오전에는 시네머신에 대한 내용과 플레이어의 점프 상태 및 추락 만들기를 진행했습니다.
오후에는 플레이어 공격 상태 만들기와 적 만들기, 피격 만들기, 마지막으로 게임 빌드 프로세스 이해 강의까지 심화 주차의 모든 강의를 정주행 했는데요. 설마 3D 심화의 모든 내용이 거의 FSM에 대한 내용이어서 깜짝 놀랐습니다. 일단 시스템 자체를 만들어두면 전환상태만 바꿔주면 되기 때문에 편리한 것은 알겠는데, 구조를 이해하고 사용하려면 시간이 많이 걸릴 것 같습니다. 워낙 클래스 간 쓰이는 것이 많으니까 FSM에 대한 것들은 복습을 철저하게 해야 될 것 같네요. 남은 시간에는 개인 과제 진행을 위해 유니티와 GitHub 세팅을 해두었습니다. 저녁을 먹고 난 후에는 최종 프로젝트 팀을 정하기 위해서 돌아 다녔고, 공고글 중에서 서브컬처 관련해서 만들고자 하시는 분과 함께 하게 되었습니다. 그리고 오늘 자 TIL에 대해서는 FSM의 이론적인 부분을 복습해볼까 합니다.
FSM에 대해서
유한 상태 기계 (Finite State Machine, FSM) 이란?
유한 상태 기계(FSM)는 유한한 갯수의 상태들로 구성된 기계 및 패턴을 말하고, 상태와 상태 간의 전환을 기반으로 동작하는 동작 기반 시스템이다.
FSM의 구성 요소
상태 (State) : 시스템이 취할 수 있는 다양한 상태를 나타낸다.
전환 조건 (Transition Condition) : 상태 간 전환을 결정하는 조건이다.
동작 (Action) : 상태에 따라 수행되는 동작 또는 로직을 나타낸다.
FSM의 동작 방식 및 원리
1. 초기 상태 설정 : FSM은 초기 상태로 설정된다.
2. 입력 처리 : 입력 값을 받아 현재 상태와 입력 값을 기반으로 다음 상태를 결정한다.
3. 상태 전이 : 상태 전이 규칙에 따라 현재 상태를 다음 상태로 변경한다.
4. 출력 생성 : 필요에 따라 현재 상태와 입력 값을 기반으로 출력을 생성한다.
5. 종료 조건 확인 : 종료 상태에 도달하거나 입력이 더 이상 없을 때 FSM은 종료된다.
FSM의 예시 : 플레이어 상태 관리
상태 : 정지 상태, 이동 상태, 점프 상태
전환 조건 : 이동 입력, 점프 입력, 충돌 등의 조건
동작 : 이동 애니메이션 재생, 점프 처리, 이동 속도 조정 등
State Pattern(상태패턴)을 활용한 FSM의 장점
1. 기본적으로 객체지향의 다형성을 활용한다.
2. 상태를 명확하게 정의하고 상태 간 전환을 일관되게 관리할 수 있다.
3. 복잡한 동작을 상태와 전환 조건으로 나누어 구현하므로 코드 유지 보수가 용이하다.
4. 다양한 동작을 유기적으로 조합하여 원하는 동작을 구현할 수 있다.
'나의 개발자 기록 > 본 캠프 개발 일지' 카테고리의 다른 글
2024년 6월 19일 수요일 개발일지 / 심화 주차 팀플 과제 (0) | 2024.06.19 |
---|---|
2024년 6월 18일 화요일 개발일지 / 개인 과제 리마인드 (0) | 2024.06.18 |
2024년 6월 13일 목요일 개발일지 / ScriptableObject에 대해서 (1) | 2024.06.13 |
2024년 6월 12일 수요일 개발일지 / 유니티 심화 주차 시작 (1) | 2024.06.12 |
2024년 6월 11일 화요일 개발일지 / 팀 프로젝트 회고 (0) | 2024.06.11 |