에픽게임즈의 아티스트 및 엔지니어 팀은 PC, 콘솔 및 현재 모바일 플랫폼에서 맛볼 수 있는 경험을 똑같이 유지하기 위해서, 유지하기 쉬우면서도 어떤 플랫폼에서 FNBR을 플레이하든 동일한 환경과 게임성을 보여줄 수 있는 솔루션을 구현했습니다. 이 포스트에서는 언리얼 엔진 4에서 이 목표를 달성하는 과정에서 부딪혔던 난관들과 제작한 솔루션들에 대해서 살펴보겠습니다.
크로스플레이 문제에 대한 이해:

포트나이트 배틀로얄(FNBR)에서 말하는 크로스플레이란, 각각 다른 플랫폼(PC, 콘솔, 그리고 모바일)으로 게임을 하는 플레이어들이, 같은 서버의 같은 맵에서 같은 애셋들을 가지고 플레이를 할 수 있다는 뜻입니다. 이것은 놀라운 업적이기는 하지만, 이를 위해서는 아트 및 엔지니어링 분야에서의 몇 가지 장애물들을 극복해야 했습니다.
일대일이란?:

FNBR의 크로스플레이를 만드는 과정에서 가장 중요했던 과제 중 하나는, 모든 플랫폼에서 동작하는 단 하나의 맵과 애셋들을 만드는 것이었습니다. 이 과제가 그렇게 중요한 이유는, 진정한 크로스플레이 경험을 위해서는 게임 맵과 맵 상에 있는 모든 아이템이 서로 일대일 관계를 유지해야하기 때문입니다. 일대일이라는 표현은 즉, 어떤 플랫폼에서 FNBR을 플레이하든, 게임 맵과 맵에 포함된 애셋들은 모두 같아야 한다는 뜻입니다. PC 게임에서 표시되는 실제 게임 맵과 애셋은 콘솔 및 모바일 디바이스에서 표시되는 게임 맵 및 애셋과 같습니다. 이렇게 해야 어떤 플랫폼도 콘텐츠 누락이나 차이로 인해 유리하거나 불리해지지 않습니다.
하나의 메시로 모든 플랫폼 지원하기:

다양한 하드웨어에서 똑같은 게임 맵과 애셋 세트를 사용하려면 LOD (레벨 오브 디테일) 시스템의 작동 방식에 몇 가지 큰 변화가 필요했습니다. 그렇다고 너무 걱정하지 마십시오. LOD 시스템은 여전히 같은 방식으로 작동하지만, 이제 새로운 설정인 최하 LOD(Minimum LOD)라는 새로운 설정을 제공합니다. 이 설정을 통해 LOD를 플랫폼 별로 어떻게 사용할지 지정할 수 있습니다. 그 작동 원리를 더 자세히 이해하기 위해, 자동 LOD 생성 툴을 통해 생성된 스태틱 메시 및 그 LOD 3개를 다음 예제 이미지에서 확인해 보겠습니다.

이 스태틱 메시를 PC에서 사용할 경우, PC는 (일반적으로) 메모리 양이 많기 때문에 세 개의 스태틱 메시를 모두 사용할 수 있습니다.

그러나 콘솔에서 동일한 스태틱 메시를 사용할 경우, 콘솔은 (일반적으로) 메모리가 제한되어 있기 때문에 첫 번째 스태틱 메시는 제거하고 나머지 두 개만 사용하도록 허용합니다.

마지막으로 PC와 콘솔보다 가용 메모리가 훨씬 적은 모바일 장치에서 이 스태틱 메시를 사용할 경우, 첫 번째와 두 번째 스태틱 메시를 제거하고 마지막 메시만 사용합니다.
각각의 플랫폼에서 사용할 수 있는 LOD를 제한함으로써, 콘텐츠를 크게 변경하지 않고도 렌더링 성능을 높일 수 있었습니다. 스태틱 메시 에디터의 LOD 세팅에서 최하 LOD와 관련된 설정을 찾을 수 있습니다. 아래 이미지는 위 예제에서 사용된 '나무 스태틱 메시'가 각 플랫폼마다 다른 LOD 범위를 사용하도록 구성한 방식을 보여줍니다. 콘솔(Co) 및 모바일(Mo) 칸의 값을 확인해 보세요.

LOD 시스템에 플랫폼 별로 LOD를 지정하는 유연성을 확보하는 한편, 또 다른 중요한 부분은 스태틱 메시의 콜리전이 플랫폼 간에 똑같이 유지되도록 하는 것이었습니다. 이것이 중요한 이유는 서로 다른 콜리전 오브젝트를 사용하는 스태틱 메시가 있으면 다른 플랫폼에 비해 유리한 플랫폼이 생길 수 있기 때문이며, 이런 상황은 무슨 수를 써서든 피해야 했습니다.

다행히 모든 플랫폼에서 동일한 게임 맵과 애셋을 사용하기 때문에 이 문제는 극복하기 쉬웠는데, 스태틱 메시에 콜리전 오브젝트가 추가되었는지만 확인하면 됩니다. 일단 이 작업이 끝나면, 이 스태틱 메시는 해당 메시를 사용하고자 하는 모든 플랫폼에 적용이 됩니다.
드로 콜 제한하기 :
언리얼 엔진 4 프로젝트의 렌더링 성능을 높이는 가장 좋은 방법 중 하나는 1프레임에서 요청되는 드로 콜(Draw Call)의 수를 줄이는 것입니다. '드로 콜'이라는 용어가 무슨 뜻인지 알지 못하시는 분들을 위해 설명 드리자면, 이 용어는 게임 월드를 구성하기 위해 한 프레임 동안 몇 개의 스태틱 메시와 메시에 적용된 머티리얼을 화면에 그려야 하는지를 나타내는 용어입니다. 그러나 드로 콜을 제한한다는 것은 머티리얼과 트라이앵글을 모두 최적화한다는 뜻인데, 월드의 애셋 수가 엄청난 FNBR 과 같은 규모의 게임에서는 문제가 될 수 있습니다. 이 불가능에 가까운 작업을 돕기 위해, 계층형 레벨 오브 디테일(HLOD) 및 프록시 지오메트리와 같은 툴이 많이 사용되었습니다.이런 툴을 어떻게 조합하여 사용했길래 드로 콜의 수를 제한할 수 있었는지 궁금하실 수 있습니다. 첫 번째로 다음 이미지처럼 HLOD 툴을 사용해 서로 가까이 있는 스태틱 메시를 일명 '클러스터'라는 그룹으로 배치하였습니다.

일단 HLOD 클러스터가 생성되면, 프록시 지오메트리 툴을 사용해 HLOD 클러스터의 오브젝트에 대해 고도로 최적화 된 대체 스태틱 메쉬 및 텍스처를 절차적으로 생성합니다. 프록시 지오메트리 툴이 작업을 완료하면, 다음 이미지와 같은 결과물을 얻게 됩니다.

위의 그림을 처음 보았을 때는 프록시 지오메트리 툴이 제대로 작동하지 않았거나 뭔가 잘못 설정된 것으로 생각할 수도 있지만, 그렇지 않습니다. 프록시 지오메트리의 결과물이 조금 이상하게 보이는 이유는, 실제로 게임을 플레이하는 플레이어들은 위 이미지와 같은 시점에서 보지 않기 때문입니다. 아래 이미지에서 실제 게임 속에서는 어떻게 보이는지 확인할 수 있습니다.

위 이미지에서 강조 표시된 영역을 보면 HLOD 및 프록시 지오메트리 툴을 사용해 멀리 있는 오브젝트를 대체한 결과물과의 차이점을 알 수 있습니다. 이 영역은 너무 작고 알아보기도 힘들기 때문에, 아래 이미지처럼 다시 확대해 보았습니다.

('Original'이라 써 있는) 상단 이미지는 HLOD 및 프록시 지오메트리를 사용하지 않은 경우 해당 영역이 어떻게 보이는지 나타냅니다. 저 위의 이미지 속에서 강조 표시되었던 작은 영역은 총 424 개의 스태틱 메시로 구성되어 있으며 556,445 개의 트라이앵글을 렌더링해야합니다. 이렇게 작고 매우 멀리 있는 것을 그리기 위해 엄청난 양의 리소스를 사용하고 있는 것입니다.
('Proxy'라고 써 있는) 하단 이미지는 HLOD 및 프록시 지오메트리 툴을 사용한 후에 해당 영역이 어떻게 보이는지 나타냅니다. 이제 이 작은 영역에는 단 하나의 스태틱 메시와 트라이앵글 1215개의 렌더링이 필요합니다. 물론 둘 사이에는 약간의 시각적 차이가 있을 수 있지만, 플레이어들은 지금 우리가 보고 있는 것처럼 화면을 확대해서 볼 일이 없다는 점을 생각해 보시기 바랍니다. 또한 언리얼 엔진 4 프로젝트에서 얻을 수 있는 성능상의 이점을 고려한다면, 멀리 떨어진 오브젝트가 원본과 완벽하게 일치하지 않더라도 그만한 가치가 충분히 있는 것입니다.
마무리:
이 블로그 포스트에서 다룬 FNBR을 어떤 플랫폼에서든 플레이할 수 있게 해 준 놀라운 신기능들은 모두 언리얼 엔진 4.19 릴리즈에서 찾아보실 수 있습니다. 언리얼 엔진 프로젝트에서 HLOD 및 프록시 지오메트리 툴을 사용하는 방법에 대해 더 자세히 알고 싶다면, 아래 링크를 통해 해당 툴에 대해 다룬 언리얼 엔진 4 공식 문서를 참조하시기 바랍니다.HLOD 툴

HLOD 툴은 하나의 스태틱 메시 및 텍스처로 합쳐진 스태틱 메시 그룹을 만드는데 사용됩니다.
프록시 지오메트리 툴

프록시 지오메트리 툴은 멀리 있는 오브젝트의 렌더링 비용을 낮추기 위해 사용할 수 있는 고도로 최적화된 스태틱 메시 및 텍스처를 절차적 생성하는데 사용됩니다.
언리얼 엔진 4를 처음 접하셔서 어디에서 다운로드 할 수 있는지 궁금하신 분들은, 다음 링크를 통해 다운로드하실 수 있습니다.