내일배움캠프/Works

NBC 챕터 1주차 26.05.11 ~ 26.05.21 사이드 프로젝트 회고록

옆집히드라 2026. 5. 21. 14:17

프로젝트 종료 회고록

1. 프로젝트 개요

  • 프로젝트명: 뱀파이어 서바이벌 류 게임 트레이싱
  • 진행 기간: 26.05.11 ~ 26.05.21
  • 팀 인원: 송용수, 최배성, 양석현, 정규상, 이정준, 임우현

2. 프로젝트 목표

목표

  • 규상 : 언리얼 C++ 문법익숙해지기
  • 용수 : 유니티 UI를 언리얼로 포팅 > MVP패턴 이용해서 모델/뷰 완벽하게 분리
  • 배성 : 흘러가는 게임을 구성해보자. + 협업 스킬 레벨업
  • 석현 : 협업 경험 + 언리얼 학습
  • 정준 : 협업 경험 + 언리얼 학습
  • 우현 : 협업 경험 + 언리얼, 게임개발과정 학습

주요 기능

용수

  • 체력바
  • 경험치바 material 애니메이션 구현
  • 경험치/데미지 위젯구현 > 풀링으로 화면에 띄우는 것
  • UIManager 경유 , 모델과 뷰 바인딩 자동화

배성

  • 무기, 총알 등의 BaseClass 선언 > 확장성 확보 고려
  • 컴포넌트를 사용해서 기능분리

석현

  • 몬스터 class 구현하면서 확장성 고려

정준

  • 플레이어 보유 장비 상태 관리
  • 소유자 Actor > Enemy가 특정 조건 만족 시 아이템 드롭

규상

  • PoolingManager 기반으로 액터 생성하는 기법
  • 전체적인 Gamemode를 어떻게 사용해야하는지
  • 협업할때 어떻게 해야하는지 (게임) 구체화

우현

  • 캐릭터 MovementComponent C++로 구현
  • 카메라arm 없이 달기 > arm 없으면 캐릭터 따라가기를 따로 구현해야함
  • 8방향 BS 구현 > ABP 바인딩

사용 기술 스택

  • Engine: UE 5.5.4 (강의 디폴트여서) / 5.7 컴파일 오래걸려서
  • Language: C++, BP
  • Version Control: Github -> Perforce\

3. 프로젝트 결과

미완료 또는 축소된 사항

용수

  • 완전자동화 실패, 프레젠터 하드코딩 > 완벽한 MVP 패턴 구현 실패
  • 언리얼 CommonUI+MVVM 같이 사용해야 시너지 있음 > 팀원들에게 MVVM 패턴 전파 해야함(커뮤니케이션 코스트 있어서 진행X)

배성

  • AttackBaseComponent 현재 사양에서 필요없는데 포함되어있음
  • ObjectPooling 적용X (둥근검, 짧은칼 지원안함)

석현

  • SetActorLocation, MovementComponent 사용안함 > 확장에 어려움 발생
  • EnemyClass를 확장성있게 만들지 못했다(상태머신 도입을 못했다.)

정준

  • 패시브 장비 구현 못함
  • 드랍 > Pooling 미적용 성능저하

규상

  • 비동기 풀링 최적화 > Tick으로 하는게 더 좋다라는 ChatGPT의 의견 (왜인지는 모르나 .. 나중에 알아봐야함)
  • 풀링매니저 > AActor말고 UObject로 구현했어야했다.
    팀원들이 풀링인터페이스 적용하지 않은 이유
  • 프리웜 타이밍 잡기가 애매했다. > EquipComponet 구현상 프리웜 하기가 어려웠다.
  • 이미 아이템을 다 개발하고 나서 PoolingManager 개발이 완료되어서 적용하려면 리팩토링이 필요했음(소통문제)
  • UI 풀링 따로 구현 > PoolingManger가 AActor Class를 부모로해서 못씀 > UI들은 WidgetClass를 부모로 해서 사용불가

우현

  • 구현을 더 많이 했으면 좋았을텐데 범위가 좁았다.

4. 스프린트 운영 회고

잘된 점

용수

  • 팀원들이 UI신경안쓰고 Delegate만 달아서 개발 가능하도록 하고 싶었고 어느정도 목표 달성
  • UI Widget 디자이너탭 사용에 익숙해짐.

배성

  • 무기 관련 클래스 확장성 잘 나눠서 구현이 쉽게 되어있음
  • 급하게 추가한 soundplayersubsystem 블루프린트랑 사용하는 구조가 좋은듯

석현

  • 위치고정을 사용한 넉백과 같은 힘을 주는 시스템 구현

정준

  • Class별 Pool 분리된 것 사용하기 편함
  • 반복 생성 객체 재사용 가능

규상

  • Pooling 생각보다 잘 작동
  • 협업시스템 인프라 구축 잘함

우현

  • 팀원들이랑 친해져서 좋았따.
  • 게임개발흐름을 직접적으로 볼수 있어 좋은 경험이였다 생각된다.

아쉬웠던 점

용수

  • 언리얼 문법에 익숙하지 않아서 GC관련 디버깅에 문제가있었다. > 앞으로 언리얼C++ 리플렉션 시스템을 더 공부해야겠다.
  • Delegate 필요 명세를 더 구체화하고 작업할 필요가 있었다. (기획문제)
  • UI는 결국 BP 작업 필요 > BP로 작업해야할 것을 CPP로 작업한 부분들이 있음 > 익숙치 않아서 분리가 어려웟다.

배성

  • 무기 설계 시 내부기능을 알아왔다면 설계를 더 잘할 수 있었을 것.
  • 설계 후 구현에 시간이 과투자됐다. (설계가 잘 되어있었다면 더 빠르게 개발 가능했을 것)
  • 리소스 에셋을 미리 디깅했었다면 역시 구현 속도가 빨랏을 것. > 트레이드오프가 잘 안됐다.

석현

  • 더 많은 부분을 맡았으면 밀도있게 공부가 됐을 것 같은데 생각보다 시간이 많이 남았다.

정준

  • 플레이어 스킬까지 구현인줄 알았는데 범위가 좁았음. > 아이템 틀만 구현하니 작업량이 부족했다.
  • Delegate를 필요한곳에서 Broadcast했어야했는데 애매하게 했다.
  • 패시브 아이템 미구현(시간부족)
  • 작업량이 1/n이 안됐다.

규상

  • spawner > 한번 만들어 봤어서 생각보다 구현 속도가 빨라서 이후 할게 많이 없었다.
  • pooling > 개념이라 이해 하고 나서는 너무 쉬워서 구현/수정도 빨랐다. > 진짜 할게 많이 없었던 것 같다.
  • 로딩화면 굳이라고 생각했지만 그래도 한번 해봤으면 좋았을 것 같다.

5. 팀 협업 회고

좋았던 협업 방식

  • 개발 전 업무영역 분배하고 시작한 부분 좋았다.
  • PR 코드리뷰 하는 것 좋았다.
  • 다같이 마이크 키고 화면공유 상시로 되어있어서 커뮤니케이션에 도움이 많이 됐다.
  • 브랜치 전략을 생각보다 잘 지켜주셨다.

개선이 필요한 부분

  • 업무 분배 후 분배된 업무 영역이라는 울타리 때문에 조금더 적극적이지 못했던 것 같다. > 필요하다면 더 할 수 있었을 부분들이 확실히 있다.
  • 작업 분배 시 1/n이었다면 좋았을 것 같다. -> 인원 설정 또한 기획 단계에서 정해졌어야 했는데 아쉽다.
  • Perforce 작업/사용 전략을 좀 잡고가면 좋을것같다.