HelloWorld 프로젝트 피드백 및 KPT 연계 정리
[ 프로젝트 피드백 정리 ]
- 기획적인 아쉬움: 맵의 트랩과 보스 패턴에 대한 기획이 부족하여 게임의 난이도와 재미 요소가 충분히 반영되지 못했다. 이를 통해 플레이어에게 더 도전적이고 흥미로운 경험을 제공할 수 있는 기회를 놓쳤다.
- 스킬 관리: 스킬이 많아질 경우, 이를 추상 클래스로 묶어서 관리하면 코드의 유지보수성과 확장성이 크게 향상될 것이다. 이는 새로운 스킬을 추가하거나 기존 스킬을 수정할 때 발생할 수 있는 복잡성을 줄여줄 것이다.
- 아이템 시각적 디테일: 현재 아이템이 시각적으로 충분히 매력적이지 않아 플레이어에게 아이템의 중요성을 전달하는 데 어려움이 있다. 시각적 디테일을 추가하여 아이템의 가치를 더 명확히 표현할 필요가 있다.
- 패턴 클래스화: 패턴을 별도의 클래스로 관리한 것은 매우 긍정적이었다. 이는 코드의 가독성을 높이고, 패턴의 재사용성을 증가시켜 개발 효율성을 높이는 데 기여했다.
- 데이터 관리: 전역적인 데이터의 독립적 관리가 부족하여 데이터의 일관성과 무결성을 유지하는 데 어려움이 있었다. 데이터 관리 방식을 개선하여 이러한 문제를 해결할 필요가 있다.
- UI 관리: UI를 GameState가 아닌 UI Manager에서 다루는 것이 더 명확하고 깔끔한 구조를 제공할 것이다. 이는 UI 관련 코드의 집중화와 관리 용이성을 높일 수 있다.
- Tick 함수 사용: Tick 함수를 많이 사용한 부분은 성능에 영향을 미칠 수 있다. 타이머나 캐릭터 위치 계산이 끝난 후 lateUpdate 같은 함수를 사용하여 성능을 최적화할 수 있다.
[ KPT 연계 ]
K (Keep)
- 활발한 진척도 공유: 팀원 간의 지속적인 진척도 공유는 프로젝트의 투명성을 높이고, 협업을 강화하는 데 큰 도움이 됨
- 깔끔한 깃 플로우 전략: 체계적인 깃 플로우 전략을 통해 코드의 버전 관리가 효율적으로 이루어짐
- 소프트 스킬: 팀원 간의 원활한 의사소통과 협력은 프로젝트의 성공적인 진행에 중요한 역할을 함
- 잘 지켜진 코드 컨벤션: 코드 컨벤션을 철저히 준수함으로써 코드의 일관성과 가독성을 유지할 수 있었음
- 문제 해결을 위한 팀의 협력: 하나의 문제를 해결하기 위해 팀원들이 함께 노력한 점은 매우 긍정적이었음
- 명확한 역할 분리: 각 팀원의 역할을 명확히 분리하여 업무의 효율성을 높임
- 승현님의 깃 해결 능력: 승현님의 뛰어난 깃 문제 해결 능력은 프로젝트 진행에 큰 도움이 됨
P (Problem)
- 언리얼 기반 클래스의 추상화 부족: 언리얼 엔진의 기반 클래스를 추상화하지 못한 점은 코드의 재사용성과 유지보수성을 저해
- 세부적인 기획 부족으로 인한 개발 중 변경: 초기 기획의 세부적인 부분이 부족하여 개발 중에 많은 변경이 발생했다. 이는 개발 효율성을 떨어뜨리는 요인이 됨
- 인터페이스 간 통신 구조의 미흡: 인터페이스 간의 통신 구조가 미흡하여 모듈 간의 의존성을 줄이는 데 어려움이 있었음
- 게임 수학을 활용한 로직 설계의 어려움: 게임 수학을 활용한 로직 설계에 어려움을 겪어 복잡한 로직 구현에 시간이 소요됨
- 블루프린트와 C++의 역할 분리: 블루프린트와 C++의 역할을 명확히 분리하지 못해 코드의 복잡성이 증가함
- 인벤토리 데이터 관리의 어려움: 인벤토리 데이터 관리가 비효율적으로 이루어져 데이터의 일관성을 유지하는 데 어려움이 있었음
- GameState, GameMode, GameInstance의 역할 이해 부족: 이들 클래스의 역할을 명확히 이해하지 못해 코드 설계에 혼란이 있었음
- 프로젝트 메모리 관리의 어려움: 메모리 관리가 비효율적으로 이루어져 성능 저하의 원인이 됨
T (Try)
- 코드 리뷰 세션 정례화: 주 1회 코드 리뷰 세션을 통해 각자 구현한 부분을 공유하고, 피드백을 주고받는 시간을 가질 것임. 이를 통해 다른 업무의 세부적인 로직을 파악하고 전체 시스템에 대한 이해도를 높일 것임.
- 설계 문서 작성 및 관리 시스템 도입: 클래스 다이어그램, 시퀀스 다이어그램 등을 작성하고 관리할 수 있는 도구(예: PlantUML, Draw.io)를 도입하여 문서화를 자동화하고 지속적으로 갱신할 것임.
- 언리얼 엔진 아키텍처 스터디: GameState, GameMode, GameInstance의 역할과 관계를 명확히 이해하기 위한 스터디 그룹을 운영하고, 실제 프로젝트에 적용할 수 있는 아키텍처 패턴을 연구할 것임.
- 추상화 리팩토링 계획 수립: 기존 코드에서 공통 기능을 식별하고 추상 클래스로 리팩토링하는 계획을 수립할 것임. 특히 스킬 시스템과 같이 확장 가능성이 높은 부분부터 우선적으로 적용할 것임.
- 인터페이스 기반 설계 도입: 모듈 간 의존성을 줄이기 위해 인터페이스 기반 설계를 도입하고, 의존성 주입 패턴을 활용하여 컴포넌트 간 결합도를 낮출 것임.
- 게임 수학 스터디 및 라이브러리 활용: 게임 수학에 대한 이해를 높이기 위한 스터디를 진행하고, 언리얼 엔진에서 제공하는 수학 라이브러리를 효과적으로 활용하는 방법을 익힐 것임.
- 블루프린트-C++ 가이드라인 수립: 블루프린트와 C++의 역할 분담에 대한 명확한 가이드라인을 수립할 것임. 일반적으로 성능이 중요한 코어 시스템은 C++로, UI 및 프로토타이핑은 블루프린트로 구현하는 원칙을 세울 것임.
- 데이터 관리 시스템 개선: 인벤토리 및 게임 데이터 관리를 위한 통합 시스템을 설계하고, 데이터 일관성을 보장하기 위한 검증 메커니즘을 구현할 것임. 필요시 데이터베이스 패턴을 도입할 것임.
- 메모리 프로파일링 도구 활용: 언리얼 엔진의 메모리 프로파일링 도구를 활용하여 메모리 누수와 비효율적인 메모리 사용을 식별하고 최적화할 것임. 주기적인 프로파일링을 통해 성능 이슈를 조기에 발견할 것임.
- 접근 지정자 가이드라인 수립: 클래스 멤버 변수와 함수에 대한 접근 지정자 사용 가이드라인을 수립하고, 코드 리뷰 시 이를 준수하는지 확인할 것임. 특히 캡슐화 원칙을 강조할 것임.
- 애니메이션 워크숍 진행: 언리얼 엔진의 애니메이션 시스템에 대한 워크숍을 진행하고, 애니메이션 블루프린트와 스테이트 머신의 효과적인 활용법을 익힐 것임.
- 기획 단계 강화: 개발 시작 전 기획 단계를 강화하여 세부적인 게임 메커니즘, 레벨 디자인, 보스 패턴 등을 문서화하고, 변경 사항이 발생할 경우 체계적인 변경 관리 프로세스를 따를 것임.
'Unreal Engine' 카테고리의 다른 글
[ UE ] FIntPoint가 뭘까? (0) | 2025.03.12 |
---|---|
[ UE ] 언리얼의 네트워크 개념 (0) | 2025.03.11 |
[ UE ] 적 공격할 때 카메라 깜빡이는 문제 (0) | 2025.02.28 |
[ UE, C++ ] 오늘 배운 내용 정리 및 애니메이션에 대해 알게 된 꿀팁 (0) | 2025.02.26 |
[ UE, C++ ] 적 AI 구현 및 애니메이션 추가 (0) | 2025.02.24 |