본문 바로가기

[내배캠] 본 캠프 개발 학습/매일매일 쓰는 TIL

11월 7일 목요일 본 캠프 개발 일지 | 결국 못 정했조 팀 프로젝트 (end)

📌

 

 숙련 주차 팀 프로젝트가 마무리 되었다. 필수 기능은 전부 구현했고, 선택 기능의 일부를 구현하는 것에 성공했다. 

학습 내용 

 

1. 몬스터 AI 
2. 피드백 


1. 몬스터AI 

UML 

 

  프로젝트를 할 때마다 상속/참조 관계나 클래스를 받아오는 처리가 헷갈렸는데 이번에 객체지향으로 프로그래밍 하면서 많이 이해하게 된 것 같다. 

 

 

몬스터 데이터 관리

 몬스터 클래스에서 스탯 정보를 정의한 추상 클래스에서 상속받은 변수를 실체화하고, 생성 시 싱글톤으로 만들어진 몬스터 DB에서 해당 id에 맞는 데이터를 불러와 할당받으며, 몬스터 프리팹은 공통 컴포넌트를 포함하고 로드 시 ID에 맞는 모델과 내부 데이터를 불러와 개별적으로 설정된다. 

 몬스터 데이터 관리

 

 6개의 상태를 enum으로 정의하여 몬스터의 상태를 관리하며, 특정 조건에 따라 이 상태를 전환하면서 애니메이션과 행동을 관리했다. 상태에 진입했을 때 실행되는 실제 동작 구현은 controller에 구현하고, AI에서는 상태전환 및 동작 실행만 수행하도록 클래스를 나누어 관리했다. 

2. 피드백 


controller와 AI가 서로를 참조하고 있다. 

내가 아쉬웠던 부분을 튜터님께서 바로 짚어주셨다!
 이 부분은 스스로 인지하고 있었다. 원래는 몬스터AI에서만 몬스터 컨트롤러를 알고 있는 방식으로 하려고 했는데, 아무리 생각해도 공통되어 사용해야 하는 변수를 어떻게 분리할지 방법이 떠오르지 않았었다. 그래서 튜터님께 찾아가는 등 방안을 모색했지만 어쩔 수 없다고 판단하고 나눴는데 차후 실력이 향상되면 리펙토링 해봐도 좋을 것 같다.  

✅ playerdistance 를 Update에서 관리하는 부분에서 최적화가 아쉽다. 

 이 역시 인지하고 있었던 부분이었으나, 평지맵에서 오류 없이 돌아가기 때문에 방치해둔 게 화근이었던 것 같다. 당시에는 귀찮아서 넘겼던 사소한 것들이 차후에 발목을 잡는다는 걸 이번에 깨닫게 된 부분인 것 같다. 

✅AI 상태 구현을 FSM으로 활용하지 않아서 아쉽다. 

 강의 내용과 다른, 새로운 코드를 짜려고 하면서 더 꼬였던 문제였던 것 같다. 게다가 FSM을 완전히 이해하지 못 한 상태로 사용하기가 무섭기도 했었다. 확실히 강의가 더 효율적이라고 생각하고 이 부분도 다시 한 번 강의를 복습하면서 리펙토링 해보면 좋을 것 같다. 
 


 

 최적화로 인한 큰 문제가 있어서 AI가 깔끔하게 구현되지 못 한 게 너무너무 아쉽지만 개인적으로 새로운 기능을 많이 사용하게 돼서 만족도가 높았던 프로젝트였다. 게임적인 완성도는 높지 않지만 공부에 초점을 맞추면서 코딩에 대한 학구열이 더 향상된 것 같다.