숙련 주차 팀 프로젝트가 마무리 되었다. 필수 기능은 전부 구현했고, 선택 기능의 일부를 구현하는 것에 성공했다.
학습 내용
1. 몬스터 AI
2. 피드백
1. 몬스터AI
✅ UML
프로젝트를 할 때마다 상속/참조 관계나 클래스를 받아오는 처리가 헷갈렸는데 이번에 객체지향으로 프로그래밍 하면서 많이 이해하게 된 것 같다.
✅ 몬스터 데이터 관리
몬스터 클래스에서 스탯 정보를 정의한 추상 클래스에서 상속받은 변수를 실체화하고, 생성 시 싱글톤으로 만들어진 몬스터 DB에서 해당 id에 맞는 데이터를 불러와 할당받으며, 몬스터 프리팹은 공통 컴포넌트를 포함하고 로드 시 ID에 맞는 모델과 내부 데이터를 불러와 개별적으로 설정된다.
✅ 몬스터 데이터 관리
6개의 상태를 enum으로 정의하여 몬스터의 상태를 관리하며, 특정 조건에 따라 이 상태를 전환하면서 애니메이션과 행동을 관리했다. 상태에 진입했을 때 실행되는 실제 동작 구현은 controller에 구현하고, AI에서는 상태전환 및 동작 실행만 수행하도록 클래스를 나누어 관리했다.
2. 피드백
✅ controller와 AI가 서로를 참조하고 있다.
내가 아쉬웠던 부분을 튜터님께서 바로 짚어주셨다!
이 부분은 스스로 인지하고 있었다. 원래는 몬스터AI에서만 몬스터 컨트롤러를 알고 있는 방식으로 하려고 했는데, 아무리 생각해도 공통되어 사용해야 하는 변수를 어떻게 분리할지 방법이 떠오르지 않았었다. 그래서 튜터님께 찾아가는 등 방안을 모색했지만 어쩔 수 없다고 판단하고 나눴는데 차후 실력이 향상되면 리펙토링 해봐도 좋을 것 같다.
✅ playerdistance 를 Update에서 관리하는 부분에서 최적화가 아쉽다.
이 역시 인지하고 있었던 부분이었으나, 평지맵에서 오류 없이 돌아가기 때문에 방치해둔 게 화근이었던 것 같다. 당시에는 귀찮아서 넘겼던 사소한 것들이 차후에 발목을 잡는다는 걸 이번에 깨닫게 된 부분인 것 같다.
✅AI 상태 구현을 FSM으로 활용하지 않아서 아쉽다.
강의 내용과 다른, 새로운 코드를 짜려고 하면서 더 꼬였던 문제였던 것 같다. 게다가 FSM을 완전히 이해하지 못 한 상태로 사용하기가 무섭기도 했었다. 확실히 강의가 더 효율적이라고 생각하고 이 부분도 다시 한 번 강의를 복습하면서 리펙토링 해보면 좋을 것 같다.
최적화로 인한 큰 문제가 있어서 AI가 깔끔하게 구현되지 못 한 게 너무너무 아쉽지만 개인적으로 새로운 기능을 많이 사용하게 돼서 만족도가 높았던 프로젝트였다. 게임적인 완성도는 높지 않지만 공부에 초점을 맞추면서 코딩에 대한 학구열이 더 향상된 것 같다.
'[내배캠] 본 캠프 개발 학습 > 매일매일 쓰는 TIL' 카테고리의 다른 글
11월 9일 토요일 본 캠프 개발 일지 | 베이지반 특강 1회차 (3) | 2024.11.09 |
---|---|
11월 8일 금요일 본 캠프 개발 일지 | 델리게이트 특강 (0) | 2024.11.08 |
11월 6일 수요일 본 캠프 개발 일지 | 결국 못 정했조 팀 프로젝트 (2) (0) | 2024.11.06 |
11월 5일 화요일 본 캠프 개발 일지 | 결국 못 정했조 팀 프로젝트 (4) | 2024.11.05 |
10월 30일 수요일 본 캠프 개발 일지 | 개인 프로젝트 (end) (0) | 2024.10.30 |