← 전체 프로젝트

게임 / Unreal Engine · C++

Iterator

게임 시스템 전반과 UI 구조 설계를 담당

Notion 원본 보기 ↗
Iterator 프로젝트 화면

프로젝트 개요 / Overview

  • 게임 제목 | Iterator
  • 게임 장르 | 3D 액션 어드벤처
  • 개발 기간 | 2025.11.22 ~ 2026.01.03
  • 인력 구성 | 개발 3인
  • 게임 소개

    삭제 위기에 놓인 프로그램, 변하는 규칙 속에서 시스템을 돌파하라.

기술 스택 / Tech Stack

  • Engine : Unreal Engine 5
  • Language : C++, Unreal Engine Blueprint
  • Tools : Rider, Visual Studio 2022, Perforce

기여 / Contribution

게임 시스템 전반과 UI 구조 설계를 담당

  • 게임 전반 기획 단계부터 참여하여 시스템 구조 설계
  • UI 전반(메뉴, 인게임 UI, World Space UI) 디자인 및 개발
  • 대화 시스템, 퀘스트 시스템, 게임 내 판정 등 시스템 전반 개발
  • 팀원들이 기능 개발에 집중할 수 있도록 인터페이스 중심의 시스템 구조 설계
  • 오프닝 및 엔딩 등 연출 구현
  • Unreal Engine stat 도구를 활용한 Frame Drop 분석 및 최적화

문제 해결 사례 / Trouble Shooting

문제

  • Trash Bin 맵에서 FPS가 8 정도로 급격히 하락
  • 대부분의 구간에서 플레이가 어려울 정도로 심각한 Frame Drop 발생

원인 분석

  • 초기에는 PCG(Procedural Content Generation)가 문제일 것으로 예상
  • PCG를 제거, 추가적으로 맵 내의 모든 Light를 Static으로 변경하였으나 문제 지속
  • stat SceneRendering, stat GPU 분석 결과
    • 실제 맵에 배치된 조명 수보다 훨씬 많은 조명 연산이 수행되고 있었음
    • InitView 단계의 비용이 비정상적으로 증가하며 렌더링 부하 발생
  • 조사 결과, 포탈에 연결된 Render Texture들이 플레이어와 무관하게 매 프레임 갱신되며 불필요한 렌더링이 지속적으로 발생하고 있음을 확인

해결 방법

  • Tick에 따라 Render Texture가 갱신되지 않도록 구조 수정
  • 플레이어가 포탈 근처에 있을 때만 렌더링이 수행되도록 조건부 처리
  • 추가 분석 과정에서 Actor Movement 옵션에 의해 Render Texture가 재갱신됨을 확인
  • 포탈 주변에 Trigger Sphere를 배치하여 플레이어가 영역에 진입했을 때만 Movement 기반 렌더링이 되도록 제어

결과

  • Trash Bin 맵의 당시 개발 환경에서 PCG를 유지한 상태로 FPS 8 → 60 이상으로 개선
  • InitView 및 SceneRendering 단계의 불필요한 렌더링 부하 감소

배우고 느낀 점 / Retrospective

Unreal Engine을 처음으로 다루며, 기존에 사용하던 Unity 기반 프로젝트와는 전혀 다른 개발 환경과 사고 방식이 필요하다는 점을 체감한 프로젝트였습니다.

특히 Trash Bin 맵에서 발생한 프레임 드롭 문제를 해결하는 과정에서, 단순히 에셋 수나 조명 개수를 줄이는 방식이 아니라 렌더링 파이프라인과 갱신 구조 자체를 분석하는 접근이 필요하다는 점을 배웠습니다.

stat 도구를 활용해 실제 병목 구간을 확인하고, 불필요하게 반복되던 Render Texture 갱신을 조건부로 제어하며, 측정 → 가설 → 검증 → 구조 개선의 과정을 경험할 수 있었습니다.

이를 통해 성능 문제는 “최적화 옵션을 조정하는 것”이 아니라, 언제 무엇을 렌더링할지에 대한 설계의 문제라는 인식을 가지게 되었고, 시각적 연출과 플레이 성능 사이의 균형을 의식하며 개발하는 시야를 기를 수 있었습니다.

이 프로젝트를 통해 새로운 엔진과 환경에서도 문제를 수치와 근거를 바탕으로 분석하고, 기능 구현을 넘어 성능과 구조를 함께 설계하고, 공부하는 개발자로 성장하고자 합니다.

관련 자료 / Links

  • Youtube
계속 둘러보기Snajper ↗

원본 ↗