[파키쿵!] 개발 일지 2
[파키쿵!] 개발 일지 - 2
기간 : 2025.05.09 - 2025.05.16
진행 상황 : 상태머신 수정, 애니메이션 테스트
문제가 생겼다. 상태머신을 직접 구현해서 테스트 했고 동작은 잘 됬다. 그런데 처음에 단순하게 idle, patrol, chase, attack 정도의 상태를 구현해서 attack을 제외하고 다른 상태들은 이동 속도, 순찰 범위등의 파라미터만 조절하면서 동일한 클래스를 사용할려고 했었다. 왜냐하면 FSM의 단점이 각 각의 상태를 만들어야 해서 클래스 수가 많아지니까 개별 구현을 줄이면 좋을 것이라고 생각했다.
사실 그 부분은 어느정도 성공적이었다. 파라미터만 바꿔서 어느정도 다른 느낌으로 동작하게 만들어 졌다. 문제는 attack 상태는 어째든 개별적으로 만들어 줘야 했는데, 이게 단순히 attackState 안에서 모든 공격에 관한 로직과 행동들을 처리하는게 난감했다. 아무리 봐도 state가 추가로 더 필요하다고 생각되었다.
그런데 스테이트 패턴을 코드만으로 처리할려니 상태를 추가할수록 심히 복잡스러워졌다. 상태 다이어그램도 만들어보고 했지만, 지금 방식으로 몬스터들이 더 늘어났을때 잘 대응할 수 있을지 확신이 생기지 않았다.
게다가 이걸 애니메이션 스테이트 머신과 연동할려고 하니 스테이트 머신을 두 개씩 가지고 있는 꼴인데, 이게 뭔가 직관을 벗어난 느낌이라고 할지.. 부자연스럽게 느껴졌다.
아무튼, 뭔가 방법을 알아보다가 기존 유니티 애니메이션 스테이트 머신에 코드를 부착하는게 가능하다는 것을 알게되었다.. 그래서 샘플 프로젝트를 살펴보았다. 샘플 프로젝트에서는 StateMachineBehaviour를 사용해서 유니티 애니메이션 스테이트 머신에 스크립트를 적용 시키는 방식으로 구현이 되어있었다. 그래서 이를 이용한 방식으로 코드를 전체적으로 수정하였다. 기존에 직접 구현한 스테이트 머신은 삭제하고 스테이트 클래스는 StateMachineBehaviour를 상속받게 변경했다.
이런저런 수정이 필요했지만 걱정보다 수월하게 변경되었다. 이 과정에서 디자인 패턴의 장점을 체감했다. 샘플 코드는 꽤나 복잡하게 구성되어 있었는데 어떤 디자인 패턴이란걸 알고 분석했기 때문에 수월한 면이 있었다. 아마 아무것도 모르고 그냥 봤다면 훨씬 이해하기 어려웠을 것이라고 생각한다.
그 외에는 애니메이션 테스트용으로 임시 에셋을 적용을 했다. 생각보다 필요한 애니메이션이 많아 보이는데 이걸 직접 제작할 수 있을지 조금 우려된다.