안녕하세요, 저희는 락피쉬 게임즈(ROCKFISH Games)의 프로듀서 카스파 미헬(Caspar Michel), 리드 VFX/인바이런먼트 3D 아티스트 마르코 웅거(Marco Unger)입니다. 저희는 독일 함부르크에서 우주 액션 게임 시리즈인 에버스페이스(EVERSPACE)를 제작하고 있는 소규모 팀입니다. 최신 타이틀 에버스페이스 2는 2023년 4월 PC로 출시되었으며, 2023년 8월에는 Xbox와 PlayStation으로도 출시되었습니다. 뒤이어 2024년 4월 29일에 진행된 인커전스(Incursions) 업데이트에서는 에버스페이스 2를 언리얼 엔진 4에서 언리얼 엔진 5.3으로 마이그레이션하는 작업이 진행되었습니다. 이 자리에서는 락피쉬 게임즈가 마이그레이션을 진행하며 느낀 장점과 도전 과제를 공유하고자 합니다.
언리얼 엔진 4로 제작한 에버스페이스 2 기본 버전을 언리얼 엔진 5.3으로 마이그레이션할 때의 목표는 게임에 대해 장기적인 유지보수를 지원하고 향후 확장 콘텐츠를 원활하게 개발하는 것이었습니다. 앞으로 있을 개발 단계와 업데이트에서 문제가 발생하는 것을 방지하려는 전략적 업그레이드였죠. 지금 작업을 완료함으로써 개발 과정에서 있을 수 있는 잠재적인 골칫거리들을 줄일 수 있다고 생각했습니다.
프레스콧 스테이션(Prescott Station) 주변의 별빛과 여러 광원이 혼합된 환경은 루멘(오른쪽)이 빛을 발하기에 훌륭한 기회였습니다.
저희는 개발 과정에서 최신 기술에 맞춰 정기적으로 엔진을 업그레이드하기 때문에 플랫폼 확장에 크게 의존하는데, 그 중에는 오래된 SDK와는 적절하게 호환되지 않는 것도 일부 있을 수 있습니다. 에버스페이스 2의 향후 개발 계획이 따로 없었다면 아마 언리얼 엔진 4를 계속 유지했을 수도 있습니다. 하지만 앞으로도 계속 확장 콘텐츠를 제작할 계획이었으므로, 더 이상 사용하지 않는 툴을 위한 대책을 찾는 것은 상당한 시간 낭비가 될 것이라고 판단했습니다.
루멘 적용
에버스페이스 2는 오늘날 게임 시장에서 가장 매력적인 우주 게임 중 하나로 손꼽히고 있습니다. 그중에서도 여러 항성계에 흩어져 있는 각종 영역에서 사전 연산된 GI 솔루션과 <a href="https://dev.epicgames.com/documentation/ko-kr/unreal-engine/screen-space-global-illumination-in-unreal-engine" target="_blank">SSGI(Screen Space Global Illumination, 스크린 스페이스 글로벌 일루미네이션)</a>를 조합하여 구현된 게임 내 라이팅이 특히 자랑스럽습니다. 하지만 매우 디테일한 라이트맵의 경우에는 저희 스튜디오의 초고사양 하드웨어를 사용해도 연산하는 데 며칠씩 걸리곤 합니다.
루멘의(오른쪽) 간접광 글로벌 일루미네이션은 (보통 연산 비용이 매우 높은) 표면의 반사광을 시뮬레이션하여 더욱 실감 나는 고퀄리티의 섀도 디테일을 생성함으로써 씬과 영역에 고유한 특징을 더욱 돋보이게 해줍니다.
<a href="https://dev.epicgames.com/documentation/ko-kr/unreal-engine/lumen-technical-details-in-unreal-engine" target="_blank">루멘</a>을 구현하는 것은 간단했습니다. 환경설정(*.ini) 파일의 변수를 'True'로 설정하기만 하면 원하는 기능이 곧장 작동했습니다. 게임 개발에서는 보기 드문 일이죠! 처음에는 다이내믹 글로벌 일루미네이션과 리플렉션 시스템을 구현하는 작업에 회의적이었지만, 루멘을 사용해 보니 베이크한 GI 라이트맵으로는 불가능했던 방식으로 기존의 놀라운 비주얼을 더욱 향상시킬 수 있다는 것을 금방 확인할 수 있었습니다.
루멘을 적용한 최종 결과물은 정말 환상적이었으며, 특히 별빛이 우주정거장, 고대 구조물, 광산 플랫폼처럼 복잡한 지오메트리에 반사되는 라이팅 대비가 높은 상황에서 더욱 멋졌습니다.
루멘이 적용된 섀도(오른쪽)를 통해 분주한 광산 식민지에 디테일이 더해졌습니다.
하지만 모든 작업이 루멘 적용만큼 간단하지는 않았습니다. 마이그레이션 과정에서 <a href="https://dev.epicgames.com/documentation/ko-kr/unreal-engine/creating-visual-effects-in-niagara-for-unreal-engine" target="_blank">나이아가라</a> 파티클 시스템과 관련하여 몇 가지 문제가 발생하면서 상당한 변화를 겪어야 했죠. 또한 더 이상 사용되지 않거나 병합되는 모듈이 생기면서 에디터에서 기존 시스템을 자동으로 변환/업데이트하려고 하자 오류가 발생했습니다. 머티리얼 디스플레이스먼트를 제거하면서 광범위한 VFX 재작업도 동반되었는데, 번쩍이는 레이저와 다채로운 폭발이 가득한 게임이기 때문에 작업량이 적지는 않았습니다. 하지만 향후 출시가 수월해졌다는 점을 생각해 보면 여기에 들인 노력은 장기적으로 충분한 가치가 있었다고 생각하고 있습니다.
난관, 버그, 장애물
저희 프로그래머들은 개발, 미팅, 문제 해결 그리고 마이그레이션으로 인한 다양한 버그 수정에 이르기까지, 총 수백 시간을 들여 초기 마이그레이션 작업을 진행했습니다.
언리얼 엔진 4의 주요 버전 간에 마이그레이션을 해 본 경험이 있었음에도, 언리얼 엔진 5.3으로 마이그레이션할 때에도 여전히 초기 문제을 겪어야 했습니다. 마이그레이션을 시작하자마자 수많은 버그와 시스템 비호환성 문제들을 해결해야 했죠. 파손된 셰이더, 머티리얼, 컷씬, VFX, 파티클, 피직스, 스트레치된 텍스처, 깜빡이고 손상된 UI 엘리먼트, 빔 레이저 끊김 현상 등이 있었습니다. 저희가 겪었던 문제를 전부 나열한 것은 아니지만, 이것만 봐도 QA 팀과 외부 테스터들이 발견한 버그와 문제들이 무엇이었는지를 파악할 수 있습니다.
언리얼 엔진 5 마이그레이션 프로젝트를 시작하고 얼마 지나지 않아, 저희는 짧은 블로그를 하나 작성하여 몇 가지 시각적 버그를 소개했습니다. 그리고 이는 현재 진행 중인 프로젝트 상황을 커뮤니티에 공유하고 게임 개발 과정의 불투명성을 해소하는 좋은 방법이 되었습니다.
이미 많은 공간이 환상적으로 보이지만, 루멘의 라이팅(오른쪽 사진)은 각 소행성의 특성을 강조하여 거친 표면에 비주얼 텍스처를 더 표현하는 데 도움이 됩니다.
언리얼 엔진 5를 실행하자마자 초기에 발견된 버그 중 하나는 머리티얼 셰이더 일부가 잘못 연결되어 우주선의 이음새가 빛나 보이는 현상이었습니다. 이걸 본 커뮤니티에서는 바로 플레이어 우주선인 '트론(Tron)' 버전을 요청하게 되었고, 이후 저희는 특별 코스메틱 지원 팩 DLC(Supporter Pack DLC)을 통해 이 현상을 재탄생시켰습니다.
엔진 마이그레이션은 2023년 11월 28일에 시작되었으며, 프로젝트 내내 최적화가 계속되었습니다. 가장 큰 문제는 전반적인 퍼포먼스 저하였는데, PlayStation 5와 Xbox Series X & S에서 가장 심각했습니다. 일부 레벨의 경우, PlayStation 5와 Xbox Series X에서 안정적인 60 fps로 실행되던 것이 30 fps 미만으로 급락하는 문제가 발생하기도 했습니다. 이는 어느 한 가지 이유 때문이 아니라 여러 가지 작은 문제들이 누적되어 생긴 결과였죠. 문제가 발생한 영역에서 불필요한 백그라운드 NPC 우주선들을 제거하고, 블루프린트 네이티브화, 액터/컴포넌트의 틱 속도 최적화를 통해 이러한 퍼포먼스 문제를 대부분 해결할 수 있었습니다.
루멘의 다이내믹 라이팅을 통해 우주정거장 등의 외우주 플랫폼 비주얼이 크게 향상되었습니다(오른쪽).
특징과 장점
루멘 외에도, 언리얼 엔진 5로 전환한 덕분에 NVIDIA 리플렉스(Reflex) 지연 감소, 프레임 재생(Frame Generation), Intel XeSS 업스케일러, 고사양 GPU를 사용하는 PC 플레이어에게 프레임 보간 기능을 제공하는 AMD FSR 3.0 업스케일러 등 활성화 여부를 선택할 수 있는 게임 내 기능도 구현할 수 있었습니다. 모든 플레이어가 이 모든 기능을 적용할 만한 하드웨어를 갖추고 있지는 않으므로, 각 기능별로 선택하여 적용할 수 있게 해 두었습니다.
에버스페이스 2의 유지보수와 향후 콘텐츠 개발은 마이그레이션을 하기 전보다 훨씬 수월해졌습니다. 또한 최신 툴로 전환하게 되면서, 언리얼 엔진이 개발 요구사항을 더 잘 지원할 수 있다는 것을 알게 되었는데,<a href="https://dev.epicgames.com/documentation/ko-kr/unreal-engine/unreal-insights-in-unreal-engine" target="_blank">언리얼 인사이트</a> 프로파일링 애널라이저와 같이 언리얼 엔진 5의 새로운 툴과 기능이 앞으로 있을 확장 작업의 속도를 어떻게 높여줄지 이미 보여주고 있기 때문입니다.
루멘(오른쪽)은 강렬한 햇빛 아래에서도 자연스러운 표면이 선명해 보이게 해줍니다.
동료 개발자들을 위한 조언
엔진 마이그레이션은 어려운 작업이기 때문에, 특히 프로젝트 1.0을 이미 완성한 경우라면 더욱 가볍게 접근해서는 안됩니다. 하지만 저희처럼 향후 지원되는 콘텐츠 수명이 긴 게임이라면 도전할 가치가 있다고 봅니다.
저희는 루멘이 에버스페이스 2에 구현할 만한 기능이라고 생각했으며, 생각했던 것보다도 훨씬 쉽게 구현할 수 있었습니다. 앞서 언급했듯이, 언리얼 엔진 4에서는 베이크한 라이팅과 SSGI를 조합하여 사용하곤 했습니다. 즉, 각 오브젝트의 라이트맵 UV를 사용하여 사전 연산된 라이팅을 지원하는 방식으로 콘텐츠를 만들었던 거죠. 하지만 루멘은 다이내믹 라이팅 시스템이기 때문에 다른 라이팅 솔루션을 사용하여 생성한 기존 콘텐츠와도 잘 어울립니다. 오브젝트가 다이내믹 라이팅용으로 제작되었든 미리 베이크한 라이팅용으로 제작되었든, 루멘을 적용하는 데는 문제가 되지 않으며 따라서 언리얼 엔진 5로 마이그레이션한 콘텐츠도 거의 조정할 필요가 없었습니다.
커뮤니티에서는 마이그레이션 계획을 반기기도 하지만 퍼포먼스 문제를 우려하는 플레이어들도 있다는 것을 잘 알고 있습니다. 마이그레이션을 진행하기 전에 그리고 마이그레이션 과정 중의 마일스톤에서 자동화 퍼포먼스 체크를 수행하면 최적화에 활용할 수 있는 벤치마크와 지표를 얻을 수 있습니다. 저희는 이를 놓치고 있다가 프로젝트에 돌입한 직후 파악하였으며 테스팅 방법론을 개발하고, 관련된 지원 기능을 게임에 추가하고, 이렇게 생성된 데이터로 작업하는 방법을 학습하는 데 상당한 시간을 투자해야 했습니다. 퍼포먼스 관련 문제를 일찍이 파악하고 다룬 덕분에, 플레이어 경험에 영향을 주었을 만한 여러 요인들을 해결할 수 있었습니다.
시간은 언제나 중요한 요인입니다. 예상보다 많은 문제가 발생하겠지만, 이렇게 생기는 버그가 아무리 많아도 대부분은 사소하고 고치기 쉽습니다. 커뮤니티와 작업을 공유하고 프로젝트의 난관에 대해 투명하게 공개하면, 현재 진행하고 있는 작업들에 대해 팬들의 지지를 얻을 수 있습니다.
마지막으로, 이번 마이그레이션은 언리얼 엔진 5와 관련된 게임 업데이트라는 점에서 많은 관심을 받고 있습니다. 언론과 파트너들도 엔진의 성능과 최신 기능에 큰 관심을 보이고 있고요. 인디 스튜디오에게 있어 인지도란 정말 중요한 요소이며, 이런 관심은 저희가 기울인 노력에 주어진 뜻밖의 보너스라고 생각합니다.
산업 단지처럼 광원이 많고 단단한 표면을 여럿 갖춘 지역에서는 루멘을 사용하여 섀도를 걷어낼 수 있습니다(오른쪽).
결론
단기적인 관점에서 볼 때, 언리얼 엔진 5로의 마이그레이션을 통해 새로운 기능을 선보이고 프로세스를 재검토하는 동시에 루멘과 같은 신규 기능을 구현하고 최신 업스케일러 플러그인을 적용할 기회를 얻게 되었습니다. 또한 추후 프로젝트에 활용하게 될 언리얼 엔진 5와 그 기능에 대해 배울 수 있게 되었다는 점도 중요합니다. 장기적으로 보자면, 마이그레이션을 진행하지 않았을 때보다 에버스페이스 2의 향후 콘텐츠 개발이 한층 수월해질 것으로 기대합니다.
아직 해결해야 할 사소한 최적화 문제가 몇 가지 남아 있기는 하지만, 루멘을 구현하고 언리얼 엔진 5로 마이그레이션한 것은 팀 전체와 에버스페이스 2가 거둔 성공이라 생각합니다.
지금 언리얼 엔진을 다운로드하세요!
세계에서 가장 개방적이고 진보된 창작 툴을 받아보세요.
모든 기능과 무료 소스 코드 액세스를 제공하는 언리얼 엔진은 제작에 바로 사용할 수 있습니다.