Sparta Unreal 부트캠프 101일차

정찬호·2026년 4월 24일

오늘 TIL을 팀이 함께 작성한 KPT로 대체합니다.

KPT - 정리 안 된 버전


Keep (좋았던 점 / 유지할 점)


이번 챕터에서 진행한 과정 중 다음에도 유지했으면 하는 부분.
이번주 진행하면서 이건 진짜 잘했다! 자랑할 만한 요소.
다음주에도 유지한다면? (기술, 의사소통 어떤 것이든 좋아요!)

모든 아이디어를 반영한것이 좋았다.

업무분장이 유동적이어서 좋았다

기획 컨셉이 잘 되었다.

소통이 잘 됐다

에셋을 미리 찾아둬서 시간을 아낄 수 있었다.

디커플링이 잘되었다(중후반까지)

자랑

시퀀스 스토리라인을 진짜 잘 구현했다.

페이즈랑 게임모드랑 나눠서 구현한 것

UI 파이프라인 구성과 디커플링 구현.(후반빼고)

GAS없이 과도한 오버엔지니어링 없이 우리 프로젝트에 필요한 만큼만 기술을 사용했다

만들어진 클래스를 재사용했다

태그 시스템을 사용해서 상태 관리가 쉬웠다.
미션을 월드 서브시스템과 3가지의 레이어(미션, 기믹, 아이템)으로 구현해서 새로이 추가하기 비교적 편했습니다.(Sandbag 같은 예외 사항이 있어서 아직은 개선의 여지가 보인다)

나이아가라의 스태틱 매쉬 로케이션 모듈을 사용해 필요 아이템의 힌트를 구현한 것이 보기 좋게 잘 구현되었던 것 같다.

Problem (아쉬운 점 / 문제점)


문제점 : 이번주 진행하면서 겪은 문제점, 어려웠던 점
해결 방안 : 해당 문제점을 해결할 수 있는 현실적인 방안 제시

테스트 기간을 늦게 잡은것 같다 -> 빨리잡자

서버가 처음이라 클라이언트 동기화 하는게 어려웠다. -> 다음 부터 잘하자

MVP가 조금더 빠르게 나왔어야 했다. -> 욕심이 너무 많았다. 진짜 최소기능만 구현했어야했다

문서화가 좀 미진했다. -> 문서화를 잘 하자 독시겐을 도입 해보자

최적화가 좀 부족했다 -> 프로파일링 기간을 잡자.

이펙트 작업기간이 늦어져서 작업이 부족했다 - > 빨리 하자.

서로 클래스들의 정보를 알지 못해서 자주 물어봐야했다 -> 문서화를 통해 빨리 찾을 수 있도록 하자

독시젠

Try (해결책 / 시도할 점)


이런 시도도 해보면 좋지 않을까?
다음 주를 위한 노력은?
GAS를 사용해보고 싶다.

조금 더 다양한 나이아가라 효과를 구현해서 추가해보고 싶다.

게임 생명주기 함수들을 좀더 잘 알아보고싶다

라이라 프로젝트를 분석하고 적용해보고싶다

처음 클래스 잡을때 의존성과 변수 전달을 틀을 확실하게 잡아야 겠다.

앞으로 만들 게임들의 데이터 문서화 능력을 조금 더 기르고 싶다

트러블 슈팅 문서화 를 통한 디버깅 능력 향상

VFX를 직접 만들어 보고 싶다.



정리버전

KPT 회고록 (Keep, Problem, Try)


1. Keep (좋았던 점 / 유지할 점)


이번 프로젝트에서 성공적으로 작동했으며, 앞으로도 지속해서 유지해야 할 요소입니다.

팀워크 및 프로세스

유연하고 수용적인 협업: 팀원들의 모든 아이디어를 적극적으로 반영하고, 업무 분장을 유동적으로 가져간 점.
원활한 소통 및 기획: 기획 컨셉이 명확하게 잡혔고, 팀 간의 소통이 원활하게 이루어짐.
리소스 관리: 에셋을 사전에 탐색하고 준비하여 전체적인 개발 시간을 단축함.
아키텍처 및 기술적 성취 (자랑할 점)

적정 기술 사용: GAS(Gameplay Ability System) 등 무거운 프레임워크를 강제하지 않고, 현재 프로젝트 규모에 필요한 만큼만 구현하여 오버엔지니어링을 방지함.
성공적인 디커플링: 중후반부 이전까지 클래스 간 디커플링을 훌륭하게 유지했으며, UI 파이프라인 구성과 로직의 분리가 잘 이루어짐.
클래스 및 시스템 구조화: 게임 모드(GameMode)와 페이즈(Phase)의 역할을 명확히 분리하여 구현함.
만들어진 클래스의 재사용성을 높임.
게임플레이 태그(Gameplay Tag) 시스템을 도입하여 상태 관리를 직관적으로 처리함.
확장성 있는 미션 시스템: 미션 로직을 월드 서브시스템(World Subsystem)과 3개의 레이어(미션, 기믹, 아이템)로 분리하여 새로운 미션 추가가 용이해짐 (단, Sandbag 등 일부 예외 사항은 추후 개선 필요).
시각적 피드백 구현:
나이아가라(Niagara)의 스태틱 메시 로케이션 모듈을 활용해 아이템 힌트를 직관적이고 보기 좋게 구현함.
시퀀스 스토리라인 연출을 훌륭하게 완성함.

2. Problem & Action Item (아쉬운 점 및 해결 방안)


개발 과정에서 겪은 문제점과 이를 해결하기 위한 현실적인 대안입니다.

문제점 (Problem) 원인 및 현상 해결 방안 (Action Item)
MVP 및 테스트 지연 과도한 목표 설정(욕심)으로 인해 핵심 기능 구현이 늦어지고, 결과적으로 테스트 기간 확보에 실패함. 최소 기능(Core Loop) 우선 구현: 타협점을 명확히 하고, 가장 핵심이 되는 MVP를 빠르게 빌드하여 테스트 일정을 앞당김.
서버/클라이언트 동기화 난항 멀티플레이어 환경에서의 네트워크 동기화 및 리플리케이션(Replication) 처리 경험 부족. 문서화 및 레퍼런스 확보: 발생했던 동기화 이슈들을 기록하고, 다음 구현 시 관련 기술을 사전에 검토.
클래스 의존성 파악 난해 팀원 간 각자 구현한 클래스나 시스템의 정보를 몰라 직접 구두로 물어봐야 하는 비용 발생. Doxygen(독시젠) 도입: 자동화된 API 문서화를 통해 클래스와 함수의 구조, 파라미터를 누구나 쉽게 검색하고 참조할 수 있도록 구축.
최적화 및 폴리싱 부족 일정 지연으로 인해 프로파일링을 통한 최적화 작업과 이펙트(VFX) 작업이 충분히 이루어지지 않음. 일정 산정 시 폴리싱 기간 독립 할당: 마일스톤에 프로파일링 및 이펙트 작업 기간을 강제로 배정하고 조기 착수.

3. Try (해결책 / 시도할 점)


다음 프로젝트 또는 스프린트에서 기술적 성장과 프로세스 개선을 위해 도입해볼 사항입니다.

아키텍처 및 시스템 설계

초기 설계 프레임워크 확립: 프로젝트 초기 단계에서 클래스 간의 의존성(Dependency)과 변수 전달 방식(Interface, Delegate 등)의 뼈대를 명확하게 규정하고 시작.
고급 프레임워크 도입: GAS(Gameplay Ability System)를 본격적으로 학습하고 프로젝트에 적용.
엔진 구조 심층 분석: 언리얼 엔진의 게임 생명주기(Lifecycle) 함수들을 깊이 있게 파악하고, 에픽게임즈의 Lyra 스타터 게임 프로젝트를 분석하여 아키텍처 패턴을 벤치마킹.
문서화 및 에셋 제작

트러블슈팅 및 데이터 문서화: 데이터 기획 문서화 능력을 키우고, 버그 발생 시 트러블슈팅 문서를 작성하여 팀 전체의 디버깅 능력을 상향 평준화.
VFX 역량 강화: 외부 에셋에 의존하지 않고 직접 VFX를 제작해 보며, 더욱 다양한 나이아가라 효과를 구현하여 게임에 적용.

개인별 느낀점


이름개인 피드백(느낀점)
김형백점점 프로젝트가 커짐에 따라 클래스 갯수가 많아지고, 어디에 무슨 함수가 있고, 어떤 데이터가 있는지 파악이 힘들었습니다. 다행히 모두가 자리에 계시고 담당자가 확실히 정해져 있었기 때문에 바로바로 물어보고 찾을 수 있었지만, 나중에 규모가 커지고 담당자를 바로 찾기 힘들어 질 때를 대비해 클래스들의 내용 문서화 및 체계화를 해야겠다 라고 생각했습니다.
감사합니다.
하상빈머리로만 알고 있던 지식을 실제 멀티플레이 환경에 부딪혀가며 적용해 보니, 에러를 잡고 최적화하는 매 순간이 배움의 연속이었다. 이번에 머리 싸매고 치열하게 고민했던 컴포넌트 설계 경험을 잊지 않고, 다음 프로젝트에서는 처음부터 더 튼튼하고 견고한 시스템을 설계해 보고 싶다.
이용호서버와 클라이언트 간에 패킷이 오고가는 과정에서 네트워크 지연이나 도착 순서의 차이에 따라 시스템 동기화가 되지않을 수 있다는 사실을 알게되었습니다. 앞으로 이러한 문제들을 해결하기 위해서 네트워크 생명주기와 RPC 통신 구조를 더 공부해서 예외 상황을 방어할 수 있는 능력을 키워야겠다는 생각이 들었습니다.
장유진이번 프로젝트에서도 이전 챕터와 같이 무기 및 전투 시스템을 맡았다. 이번에는 단순히 구현하는 것을 넘어서 어떤 구조가 더 확장성 있고 효율적일지 많이 고민하고 생각할 수 있었던 것 같다. 기술적으로 가장 만족스러운 부분은 무기별 로직을 액터가 아닌 UObject에 넣어서 분리했던 것이다. 한달이라는 짧은 프로젝트 일정상, GAS 도입에 드는 초기 비용을 없애기 위해, 나름대로 GAS의 아키텍처를 차용해서 경량화된 절충안을 직접 설계하려고 노력했다. 이번 경험을 발판 삼아서 다음 프로젝트에서는 GAS를 써보고 싶다.
정찬호초반에는 월드 서브시스템과 3가지 레이어(미션, 기믹, 아이템)로 분리한 구조가 충분히 견고하다고 생각했습니다. 하지만 실제 구현 과정에서 새로운 클래스를 추가하다 보니, 기존 코드와 호환되지 않고 겉도는 객체(Sandbag)가 발생하는 한계에 부딪혔습니다. 기믹 설계 단계에서 조금 더 유연함을 갖췄거나, 샌드백의 구조를 기믹 레이어에 맞춰 설계했더라면 하는 아쉬움이 남습니다. 클래스 설계 시 '구현'보다 '구조'를 고민하는 시간이 얼마나 중요한지 다시금 깨닫는 계기가 되었습니다.

나이아가라 효과 구현 중에는 공식 문서만으로 해결되지 않는 부분들이 있어 한참을 헤매기도 했습니다. 결국 커뮤니티의 소중한 경험 공유를 통해 문제를 해결하며, 공식 문서만큼이나 실무자들의 집단지성이 강력한 자료가 된다는 것을 체감했습니다.

우연히 참여하게 된 무기 밸런싱 작업은 예상보다 훨씬 많은 시간과 집중력이 필요한 작업이었습니다. '정말 이 수치가 최선일까?'라는 의문이 끊이지 않았지만, 결과적으로 데미지 체계는 만족스럽게 구축되었습니다. 비록 스테미나 소모 로직에 보완할 점이 남았지만, 밸런싱의 메커니즘을 깊이 고민해 볼 수 있었던 값진 경험이었습니다
이현진 처음엔 낯설었던 레벨 디자인이었지만, 유저의 시선에서 재미를 고민하고 팀원들과 소통하며 맵을 완성해 나가는 과정이 무척 즐거웠다.
특히 상상했던 장면들을 레벨 시퀀스로 직접 구현해 내며 흥미가 생겼고, 앞으로는 VFX와 SFX까지 다루며 한층 더 몰입감 있는 시네마틱 연출에 도전해보고 싶다

profile
게임 개발 지망생입니다.

0개의 댓글