언리얼 엔진 4에서 언리얼 엔진 5로 전환, '퍼스트 디센던트' 개발기
해당 강연은 넥슨게임즈의 김준환 리드 엔진 프로그래머가 자리했으며, 퍼스트 디센던트 개발 과정에서 제작했던 빌드들. 그리고 해당 빌드에서 사용했던 엔진 단에서의 주요 기술 등을 설명하고자 했다.
먼저, 강연자는 퍼스트 디센던트에 대한 소개와 엔진 개발 정책. 그리고 개발 히스토리를 이야기하며 본격적인 강연을 시작했다. 강연의 소재인 ‘퍼스트 디센던트’는 넥슨 게임즈가 현재 개발 중인 F2P 루트 슈터 장르 타이틀이다. 언리얼 엔진 4에서 개발이 시작되어 현재 언리얼 엔진 5에서 개발되고 있으며, PC와 콘솔 등 다양한 플랫폼에서의 출시를 목표로 개발 중이다.
엔진팀이 엔진 개발 정책에서 가장 먼저 고민을 했던 것은 언리얼 엔진과 인하우스 엔진의 차이였다. 고민 과정에서는기능 개발이 우선인지. 엔진 버전 상향이 우선인지. 무엇이 더 중요한지를 체크하고자 했으며, 반복 작업을 빠르게 진행하기 위한 방법 등이 기준이 됐다.
고민에서 나온 결론은 버전 상향 이외에는 언리얼 엔진과 인하우스 엔진이 큰 차이가 없다는 것이었다. 단지 고려한 것이 있다면, 해당 시점에 필요한 모든 기능은 개발을 한다는 기조였다.
이는 곧 엔진 버전 상향은 개의치 않고 개발을 진행을 한다는 방향성이었다. 엔진 버전 상향으로 인해서 개발 내용과 추가된 기능이 중첩될 경우에는 복잡도와 사용 적극성 등을 고려해서 어디에 병합할 것인지를 기조로 두었다는 설명도 덧붙였다.
이 과정에서 엔진 버전 컨트롤은 퍼포스(Perforce)를 사용하는 결정을 내렸다. 브랜치는 엔진 개발 전용으로 두는 결정을 내렸는데, 이는 게임 개발 브랜치에 엔진 개발을 하면서 셰이더나 리소스 변경으로 개발이 멈추는 것을 방지하고자 위함이었다. 이후 엔진 개발이 안정화가 되었을 때 게임 개발에 적용하는 것으로 개발 프로세스를 구축했다는 설명이다.
기능의 병합은 언리얼 퍼포스에 상위 버전이 올라오면 병합을 진행했다. 이 경우, 공식 발표가 없더라도 버전업을 진행했으며, 병합에는 3~10일 정도의 근무일이 소요됐다. 다만, 언리얼 엔진 4에서 언리얼 엔진 5로 전환이 이루어질 때에는 별도 기준으로 작업이 이루어졌다.
가장 처음 선보인 MVP 빌드는 UE4.23을 기준으로 제작됐다. 성능 프로파일링 같은 경우는 언리얼 엔진 4.23에는 프로파일러가 베타로 들어와 있었음에도 불구하고. 반복 작업을 위해서 펑션 트레이스를 제작해서 이를 빠르게 결과를 확인하도록 제작했다. 강연자는 해당 기능을 통해서 프로그램의 흐름이나 CPU 부하 등을 파악하는 데 이점을 가질 수 있었다는 설명을 남기기도 했다.
한편 개발 팀은 이 시점에서 PS4 개발을 위해 데브킷을 수령하게 됐다. 데브킷 수령 이후 엔진팀은 빌드 패키징을 진행했고 프레임 향상을 위한 성능 분석을 시작했다. 그리고 개발 측면에서 만들어낸 기능들을 보다 적극적으로 적극적으로 사용할 수 있게 별도의 작업을 진행했다. 그 결과, 최대 4ms 의 GPU 타임이 감소되는 등 유의미한 결과를 도출해냈다.
이는 스태틱 메시(Static Mesh, 그래픽 카드에서 렌더링할 수 있는 폴리곤 세트로 구성되는 지오메트리 조각)로 배치했다. 오브젝트가 파괴 이벤트를 받으면, 그 시점에 파괴 오브젝트를 지연 로딩하고. 이를 시뮬레이션 하는 형태로 설계되어 있다. 다만, 머티리얼은 항상 동일하게 사용하도록 강제됐다. 이는 머티리얼이 달라지게 되면, 지연 로딩 시 텍스처를 재로딩하는 시간이 필요하기 때문이다. 엔진팀을 이를 막고 무조건 메쉬를 빠르게 올리는 형태로 최적화를 진행했다는 설명이다.
두 번째 결과물인 FGT 빌드는 언리얼 엔진 4.25를 기준으로 제공되었고 G-buffer(광원 등에 관련된 데이터를 저장하기 위해서 사용하는 모든 텍스처를 의미)최적화를 우선 순위로 삼았다.
이는 PS4와 Xbox One에 한정된 최적화. 메모리 누수를 최소화하는 데에 초점을 맞추기 위함이었다. 최적화 진행 결과 기존 레이아웃은 G-Buffer A/B/C가 있는 것에서 G-buffer A/B만을 사용하는 형태로 최적화가 이루어졌다.
실제 성능 비교를 보면, Xbox One에서 1ms~1.5ms 사이의 최적화를 확인됐다. 컴프레션과 비 컴프레션의 상태를 비교해보았을 때에는, 정밀도 측면에서는 최종 결과물의 차이가 나왔다. 물론 이는 동적인 영상에서는 인지하기가 힘든 부분이기는 하지만. 그럼에도 퀄리티의 차이를 만들어 낸다는 설명이다.
아니면 레벨 스트리밍 볼륨(레벨 스트리밍 -로딩화면 없는 월드를 만들기 위해서 플레이 도중 레벨을 비도기 로드/언로드 하는 기법-을 보조하는 시스템)을 사용할 것인지를 결정했다. 필드 영역은 256M X 256M로 제한해서 사용했다. 이는 메모리를 넉넉하게 사용할 수 없었기 때문이었다.
이러한 개발 과정을 거쳐, FGT 빌드에서는 PS4와 PS5. 그리고 PC 버전까지의 시연이 나왔다. 현재 UE 5로 전환을 마친 상황에서는 일부 시퀀스가 바뀌기는 했지만, 큰 무리 없이 컷신과 플레이를 보여줄 수 있도록 기능들을 추가했다.
‘일단 업데이트를 시도해 보자’는 것에서 출발해, 엔진팀 내에서 1인이 코드 병합을 시작했으며, 이후에는 팀원들이 투입되면서 병렬로 개발이 시작됐다. 이후에는 실제 게임 패키징과 서버에서의 동작을 확인하고 병합이 완료되는 과정을 거쳤다. 이 모든 과정에는 약 4개월 정도의 시간이 걸렸다. 전환을 우선 순위로 두고 버그 대응을 이후에 진행하는 것으로 기조를 잡았다.
UE 5로 전환이 되고 나서, 월드 파티션(대규모 월드를 관리하기 위한 자동 데이터 관리 및 거리 기반 레벨 스트리밍 시스템)으로의 전환도 이루어졌다. 월드 파티션 기능이 추가되면서 학습 시간이 필요했고. 엔진 전환이 되면서 추가된 파일의 수가 많이 늘어난 관계로 성능 부하가 발생하기도 했다. 그 결과, 하드웨어 부분에서 최적화를 진행하는 것으로 이어졌다.
UE 5에서 제공하는 ‘나나이트’의 사용도 CBT 빌드에서 진행됐다. 다만, UE 5.0.3 에서는 나나이트 사용에 제한이 있어, 일부 기능이 지원되지 않는 상황이었다. 개발팀은 이를 해결하고자 메인 브랜치를 확인하고. 현재는 해당 기능의 코드를 부분 병합해서 사용하고 있다. 나나이트는 현재 퍼스트 디센던트의 비주얼 측면에서 많은 부분을 차지하고 있는 상태다.
이러한 결과에서 도출된 비주얼은 두 기능이 차이를 보이고 있다. 광원 측면에서 루멘을 적용한 것이 더 나은 비주얼을 보여주고 있음을 알 수 있다.
이외에도 VRS(Variable-Rate Shading, 셰이딩 되는 픽셀 수 를 조건에 따라서 다르게 표현하는 것) 기능도 적용했다. 시각적 측면에서 최적화에 관련된 기술이며, 개발팀은 불필요한 부분의 셰이딩을 낮추는 해당 기능을 통해 4K 환경에서의 최적화 성능 조정과 부스트를 확보하고자 했다.
퍼스트 디센던트는 현재 개발 중이며, 오는 10월 20일부터 10월 27일까지 일 주일 간 스팀을 통해서 베타 테스트를 진행할 예정이다. 아직 발매일은 공개되지 않았으며, 지원 플랫폼은 PC와 PS4 및 PS5. Xbox One 및 Xbox Series X|S로 확정된 상태다.
정필권 기자 mustang@ruliweb.com |