진행 사항
AI 에이전트를 적극 사용하려고 이전에 했으나… 아직 미숙한건지 뭔가 지시하려고 하면 생각도 꼬이고 에이전트가 생각한것과 조금만 달라도 코드 수정이나 이해에서 어려움이 많아서 잠시 중단하고 다시 직접 코딩하고 LLM에 패턴이나 부분적으로 물어가며 구현해 나아가는 쪽으로 다시 회귀했습니다.
아무튼 다시 State 패턴을 수정하고 코드 리팩토링을 하느라 보이는 부분은 크게 달라진게 없습니다.
State 패턴 수정
이전에는 모든걸 State 패턴으로 캐릭터를 컨트롤 하려고 하니 더 복잡해지고 중복족인 상태에 대한 처리등으로 관리가 오히려 힘들더군요. State와 상관없이 동작하는 물리적 계산 부분도 있고 여러개가 겹치는 부분(예를 들어 독이 걸리고, 느려지는 디버프를 여려개 받는등)을 상태에서 처리가 이런 부분은 효과(Effect)처리 하는 로직으로 분리하는 형태로 다시 조정 중입니다.
공격의 경우 에이전트에게 요청하니 이전 State패턴은 사용하지 않고 따로 메서드를 만들어서 State에서 처리하도록 직접수정했습니다.
코드 리팩토링
에이전트에게 맡기니 string 값으로 상태명칭을 정하고 비교문등을 사용해 관리가 힘들게 되어있어서 enum, constants등을 정의해서 사용하도록 수정했습니다.
PlayerAI 클래스 분리
이전에는 적을 찾아 주적하는 코드가 Actor (캐릭터 클래스)에 하드 코딩 되어있었는데 이제 AI 역활을 할 클래스를 만들어 분리되게 수정했습니다.
Equipment 클래스 분리
공격 범위, 데미지, 속도등 정보를 가지고 처리하는 씬을 정의해 분리하였습니다. 클래스는 장비지만 현재는 무기(Weapon)의 기능한 수행되고 있습니다. 확장성?을 고려해서 많이 고민하고 개선해야하는 파트입니다.
테스트 동영상
동작 자체는 이전과 크게 다르지 않습니다. 적을 찾아공격 하는 모습입니다.
Review?
에이전트가 생각보다 아주 상세히 경계를 지정해주지 않으면 위처럼 ‘하드코딩’, ‘이전 패턴에서 벗어나 코드를 작성’등 아쉬운 동작을 합니다. 기능 구현이 우선시 된다는 느낌이여서 생각보다 다루기 힘들었습니다. 구현 능력은 상당하나 다루기 쉽지 않다는 의견입니다. 디자인 패턴을 고려하면서 관리 및 확장성등 이것저것 생각하니 너무 진행인 느리네요. 그래도 대충하기보다 좀 더 시간을 들이는 방향으로 진행해봐야겠습니다.