몬스터 상태 전이 디버깅하면서 느낀 점
오늘은 Fusion 기반 상태 머신 구조에서 몬스터가 계속 뛰기만 하는 버그를 잡는 데 시간을 꽤 썼다.
결과적으로 코드엔 큰 문제가 없었는데, 조건들이 너무 빡빡해서 공격 상태로 전환할 수 없는 상황이었던 거였다.
처음엔 단순히 "로직이 잘못됐나?"라고 생각했다.
여러 상태가 있는데도 Run만 반복해서, 상태 전이가 아예 안 되는 줄 알았다.
근데 디버깅하면서 하나하나 찍어보니
1. 거리 조건은 미세하게 안 닿고
2. 스킬 쿨다운도 전부 돌고 있어서
결국 선택할 수 있는 패턴이 없는 상황이었다.
결과적으론 문제 없는 코드였는데, 조건을 너무 빡빡하게 짠 게 문제였다.
추적 로직이 특정 조건 안에만 들어있어서, 몬스터가 멈춰 있는 느낌도 있었는데
그걸 Execute()의 공통 영역으로 빼주니까 움직임이 훨씬 자연스러워졌다.
딱 한 줄 수정이 전체 흐름을 자연스럽게 만들었다는 점이 인상적이었다.
느낀점.
디버깅은 진짜 조건 하나하나 뜯어보는 과정이다. 로직을 의심하기 전에 조건들을 먼저 검증하자.
상태 전이 조건은 너무 타이트하면 안 된다. 항상 fallback이 필요하다.
코드 문제보다 디자인적인 설계 부족이 문제일 때가 많다.
모든 원인은 처음으로 되돌아가보자. 근본적으로 문제가 있을 때가 많다.
코딩을 하는 시간보다 버그가 났을 때 디버깅을 찍어보고 오류해결하는게 더욱 많은 시간이 걸린다.
즉, 불가능하지만 버그가 안나고 한 번에 잘 되도록 코딩을 해보자!
이제는 버그가 안나고 잘 실행되면 오히려 불안하다.
왜 잘되지?하다가 결국 나중에 버그가 난다.
그러니까 버그야 제발 나타나려면 처음부터 알기쉽게 나타나주렴