TECHARTNOMAD | MAZELINE.TECH

TECH.ART.FLOW.IO

[번역][기술 분석] 대규모 오픈 월드 게임 제작 프로세스 및 기술 탐구 - 대규모 환경 제작 기술 개요

jplee 2026. 6. 7. 22:47

저자: Kerry

이전 글에 이어 이번에는 대규모 오픈 월드 환경 제작 기술에 대해 알아보겠습니다. 이 글은 현재 업계의 전반적인 방식을 훑어보고 거시적인 지식 청사진을 제공하는 것을 목표로 합니다. 사실 게임 장르와 아트 스타일에 따라 제작 기술의 세부 사항은 크게 달라지며, 현재 업계에 표준적이고 효율적인 단일 프로세스가 존재한다고 말하기는 어렵습니다. 따라서 자잘한 기술적 세부 사항들은 다른 글에서 차례대로 다루겠습니다.


오픈 월드라고 하면 과연 지도 크기가 얼마나 되어야 오픈 월드라고 할 수 있을까요? 다음은 현재 시중에 나와 있는 오픈 월드 게임의 지도 크기 목록입니다. 자세한 설명은 아래 영상을 참조하세요.

https://www.youtube.com/watch?v=UvFdMax3wlA

 

  • 포트나이트(Fortnite): 5.5 k㎡, ~2k x 3 k
  • 마블 스파이더맨(Marvel's Spider-Man): 11 k㎡, ~ 2k x 5k
  • 호라이즌 제로 던(Horizon Zero Dawn): 22 k㎡, ~ 4k x 5k
  • 배틀그라운드(PUBG): 64 k㎡, ~ 8k x 8k
  • 젤다의 전설 브레스 오브 더 와일드(The Legend of Zelda: Breath of the Wild): 72 k㎡, ~ 8k x 9k
  • 레드 데드 리뎀션 2(Red Dead Redemption 2): 75k㎡ ~8k x 9k

마지막으로 제가 최근에 플레이하고 있는 《어쌔신 크리드 오디세이》를 예로 들면, 전체 지도 크기는 256 k㎡(16k x 16k)이며 그중 육지 면적이 약 40%인 100 k㎡를 차지합니다. 최고 높이는 800~1000m에 달합니다(직접 돌아다니며 눈대중으로 추정한 수치).

지형 생성

이렇게 거대한 지형을 생성할 때 3D MAX와 같은 모델링 소프트웨어로 만든 정적 모델 파일을 직접 사용하는 것은 당연히 불가능합니다. 일반적으로 게임 엔진에는 지형 생성과 렌더링을 지원하는 자체적인 지형 시스템(Landscape)이 마련되어 있습니다.

엔진의 지형 시스템은 높이 맵(Height Map)을 기반으로 지형을 구성합니다. 동일한 버텍스 밀도일 때 모델 데이터 형태의 지형은 높이 맵보다 6~7배 많은 메모리를 차지합니다. 또한 지형 시스템은 강력한 LOD(Level of Detail) 기능을 제공하여, 멀리 있는 지형 메시의 버텍스 수를 최적화하고 줄여주며 타일 분할 렌더링 등의 기능을 지원합니다.

타일 기반의 분할 관리(Chunking)는 오픈 월드 제작의 핵심 전제입니다.

세계는 여러 개의 레벨로 구성되며, 각 레벨은 고유의 리소스 로딩과 디스플레이를 제어합니다. 일반적으로 하나의 레벨에는 하나의 Landscape 지형이 포함됩니다.

언리얼 엔진(Unreal Engine)의 지형 시스템을 예로 들면, 하나의 Landscape 지형은 여러 개의 Component로 구성됩니다. 이 Component는 렌더링의 기본 단위로, 지형이 Component 단위로 나뉘어 한 블록씩 렌더링됨을 의미합니다.

각 레벨의 지형 크기, 각 지형 파츠의 개수와 크기, 파츠를 구성하는 버텍스의 수, 그리고 각 버텍스 간격이 게임 월드에서 몇 미터에 해당하는지를 합리적으로 기획하는 것은 게임 성능에 중대한 영향을 미칩니다.

Far Cry 5의 기준을 살펴보면 다음과 같습니다:

지형 작업 파이프라인(Workflow)

현재 가장 널리 쓰이는 작업 파이프라인은 World Machine -> Houdini -> 게임 엔진 순서입니다.

지형 제작 작업 파이프라인을 한 문장으로 요약한다면 다음과 같을 것입니다:

World Machine은 지형을 생성하는 역할을 합니다(특징: 빠름). Houdini 단계에서는 World Machine의 결과물을 가공하여 그곳에서 할 수 없는 작업들을 자동화합니다(특징: 자동화). 마지막으로 게임 엔진으로 넘어가면, 수많은 아티스트들이 묵묵히 땀 흘리며 환경의 디테일을 조금씩 다듬는 공간이 됩니다(특징: 수작업, 디테일).

레이어(Layer) 개념: 게임 제작은 반복적인 이터레이션 과정입니다. 제작 초기에는 게임 내에서 다양한 새로운 아이디어를 시도하며, 이를 빠르게 복원하거나 재작업할 수 있어야 합니다. 따라서 《고스트 리콘: 와일드랜드》에서는 포토샵(PS)의 레이어와 유사한 '레이어 개념'을 도입했습니다.

이 레이어 개념에 대해 개인적으로는 그저 제작 과정에서 형성된 파이프라인의 개념일 뿐이라고 생각합니다. 실제 개발에서는 이러한 틀에 얽매이지 않겠지만, 알아두면 매우 유용합니다.

  • Base 레이어: World Machine으로 제작한 원본 리소스(높이 맵, 웨이트 맵 등)를 Base 레이어로 정의합니다. World Machine은 완전하고 전문적인 툴셋을 제공하므로, 월드의 프로토타입을 구축하여 빠르게 검증하기에 아주 좋은 선택입니다.
  • Macro 레이어: World Machine의 연산 결과를 바탕으로 브러시 등의 도구를 사용해 지형의 거시적(Macro) 구조를 수작업으로 조정하는 내용이 Macro 레이어가 됩니다. 편집 결과가 마음에 들지 않으면 Macro 레이어의 내용을 쉽게 지우고 초기 높이 맵 상태로 되돌릴 수 있습니다. 이 단계의 소프트웨어로는 World Creator를 사용하는 것을 추천합니다.

Macro는 거시적이라는 의미입니다.

  • DCC 레이어: 다음으로 Houdini 단계로 넘어가 다양한 절차적(Procedural) 툴을 통해 지형을 세분화합니다. 예를 들어 도로망, 하천, 마을의 분포를 생성하며 이러한 출력물을 DCC 레이어로 정의합니다. 이 단계에서는 경사도, 높이, 거칠기 및 World Machine의 기타 마스크(Flow map, Smoothness 등)를 기반으로 지형 머티리얼 분포를 정의하거나, 경사도, 고도, 지표면 머티리얼, 밀도, 볕이 드는 면 등의 규칙에 따라 생물 군계의 분포를 생성하는 등의 중요한 작업도 수행합니다. 절벽의 자동 생성 등은 나중에 자세히 다루겠습니다.
  • Micro 레이어: 마지막으로 이 세 레이어를 엔진으로 가져옵니다. 대규모의 거시적 관점에서 작업을 마친 후에는 자연스레 미시적인 디테일에 대한 수동 조정이 필요하며, 이 단계에서의 수정을 Micro 레이어라고 정의합니다.

Micro는 미시적이라는 의미입니다.

World Machine 단계

지형 생성은 일반적으로 World Machine 워크플로를 선택하여 시작합니다.

NASA 등의 웹사이트에서 지형 데이터를 표현하는 Heightmap(높이 맵)을 가져온 후 프랙탈 노이즈(Fractal Noise) 기능을 결합하고, 침식(Erosion) 모델링을 적용해 지형을 섬세하게 깎아냅니다.

World Machine은 Heightmap 출력 외에도 유용한 정보를 레이어별로 내보낼 수 있습니다. 웨이트 맵인 Splat Map(혹은 Weight Map)은 초기 텍스처링의 기준이 되며, 그 밖에도 고정밀 글로벌 지도인 Visa Map 등도 추출할 수 있습니다.

웨이트 맵(Splat Map 또는 Weight Map)은 하나 또는 여러 개의 RGBA 비트맵 그룹으로 구성되며, 각 채널이 정규화된 가중치 역할을 하여 월드 내의 특정 위치에 어떤 텍스처를 칠할지 제어하는 데 사용됩니다.

Houdini 단계

World Machine은 거대한 오픈 월드의 프로토타입 구조를 빠르게 구축하고 간단한 텍스처 외형을 가질 수 있도록 도와줍니다.

World Machine에서 생성된 높이 맵과 Splat Map 등의 리소스를 활용하여 Houdini에서 지형을 재구성할 수 있습니다. Houdini의 강력한 사용자 정의 절차적(Procedural) 기능을 이용하면, 임의의 규칙을 설정해 지형을 절차적으로 다듬고 복잡한 자연 법칙을 시뮬레이션하여 생태계 분포나 지표면 머티리얼 등을 정교하게 만들 수 있습니다.

주요 작업 내용은 다음과 같습니다:

  1. 지형을 더욱 세분화하고 도로망, 하천, 마을, 도시의 분포를 자동화하여 완성합니다. 고도 맵, Splat Map, 웨이포인트(Way Point) 정보를 출력합니다.
  2. 자연 물리 규칙에 따라 생물 군계의 분포 상태를 시뮬레이션합니다. 분포 밀도 맵, Splat Map, 포인트 클라우드(Point Cloud) 정보 등을 출력합니다.
  3. 지형에 맞춰 절벽, 하천 등의 메쉬 모델을 자동으로 생성합니다. 정적(Static) 모델을 출력합니다.

Houdini에서 내보낸 데이터는 바로 엔진 에디터로 연결되며, 주로 사용되는 데이터 유형은 비트맵, 포인트 클라우드 정보, 모델입니다.

게임 엔진 단계

리소스가 게임 엔진 단계로 들어오면 환경 편집에 있어 분업과 협업이 시작되며, 각자 자신이 맡은 구역을 담당하게 됩니다. 따라서 엔진은 합리적인 다중 사용자 협업 솔루션을 제공해야 하며, 오류를 방지하기 위해 많은 제작 규범을 마련해야 합니다.

이 단계에서 가장 중요한 문제는 Houdini의 자동화된 결과물과 수동으로 수정한 내용을 어떻게 동기화할 것인가입니다. 《고스트 리콘: 와일드랜드》 프로젝트 팀이 제시한 해결책은 엔진에서 수정된 정보를 다시 Houdini로 보내(역류), Houdini가 자동화 정보를 재계산한 다음 엔진으로 동기화하는 방식이었습니다. 이에 대한 개인적인 의견으로는, 그러한 탄탄한 기술력을 갖추지 못한 회사나 팀이라면 이런 시도는 피하는 것이 좋습니다. 개인적으로 생각하는 최선의 해결책은 Houdini에서 엔진으로 한 번 출력되면 픽스된 것으로 간주하고, 이후의 모든 수정은 수작업으로 조정하는 것입니다 (대규모 이터레이션으로 인해 Houdini의 재계산이 필요한 경우를 제외하고 말이죠).

하지만 이 단계에서도 편집 속도를 높이는 데 도움이 되는 자동화 도구들을 개발할 수 있습니다. 예를 들어 도로/하천/교량 편집 툴, 오브젝트 프리팹(조합) 생성기, 오브젝트의 지형 자동 스냅 기능, 군계 생성기 등이 있습니다.


렌더링 분석

앞서 지형 제작의 워크플로에 대해 논의했습니다. 아래에서는 지형 렌더링과 관련된 기술을 간략히 분석해 보겠습니다. 이번에도 《어쌔신 크리드 오디세이》의 프레임 캡처 화면을 예로 들겠습니다.

화면은 GPA로 캡처한 것이며 초기 분석 결과는 이렇습니다. 화면에 보이는 것들은 지형, 캐릭터, 암벽 모델, 식생의 네 가지 범주로 나뉩니다.

주인공 발밑 주변의 지형 메시는 눈에 띄게 테셀레이션(Tessellation, 곡면 세분화)이 적용되어 있습니다. 세분화 영역이 도로에 집중되어 있는 것을 보면, 도로 머티리얼에만 테셀레이션 기능이 적용되어 있음을 알 수 있습니다. 주인공이 서 있는 면적이 지형의 기본 메시 한 단위와 대략 비슷하므로 지형의 정밀도는 0.5m로 추정됩니다.

한 화면에 나타나는 지형 머티리얼의 개수는 4~5개로, 진흙 섞인 돌, 잔디, 흙, 암석 재질이 있습니다. 웅덩이의 구현은 데칼(Decal)로 처리되었을 것으로 보입니다.

암벽 모델은 지형의 경사면(슬로프)에 대량으로 사용되었습니다.

지형 머티리얼(Terrain Material)

이렇게 방대하고 다양한 지형지물을 구현하면서 가까운 곳의 고품질 디테일 요구까지 충족하려면 Tilling(타일링) 머티리얼 블렌딩이 유일한 선택입니다. Substance나 Quixel 등을 통해 고정밀의 타일링 가능한 PBR(물리 기반 렌더링) 텍스처를 얻은 후, 여러 장의 웨이트 맵을 통해 다양한 유형의 머티리얼을 혼합하여 다채로운 지형지물을 만들어냅니다. 이러한 웨이트 맵을 Splat Map이라고 합니다.

하지만 이렇게 거대한 지형의 블렌딩 웨이트 맵을 수작업으로 그리는 것은 불가능합니다. 다행히도 World Machine이나 Houdini에서 지형을 제작할 때, 알고리즘을 통해 이러한 지형 머티리얼의 분포를 자동 생성할 수 있습니다. 또한 다양한 규칙에 의해 생성된 마스크(Mask)를 얻어 최종적으로 우리가 원하는 Splat Map으로 합성하고 출력할 수 있습니다.

멀리 있는 지형에 여전히 타일링 머티리얼 혼합 방식을 사용하면 반복되는 패턴이 뚜렷하게 보이게 됩니다. 따라서 먼 배경을 렌더링하기 위해 '거시적인 조감도'에 해당하는 Global Color Map을 사전에 베이킹하여 내보내 사용합니다.

지형 머티리얼 솔루션

지형 혼합 기술의 3가지 핵심 요소

(1) 현재 픽셀이 어떤 텍스처를 사용하는가 (2) 각 텍스처 레이어의 가중치는 얼마인가 (3) 혼합(Blending) 알고리즘은 무엇인가

솔루션 1: 언리얼 엔진의 지형 머티리얼은 아주 고전적인 방식을 채택하고 있습니다. 한 장의 웨이트 맵(Weight Map)은 4개의 채널을 가지고 있어 4가지 머티리얼만 혼합할 수 있으며, 4가지를 초과하면 새로운 웨이트 맵을 생성해야 합니다. 또한 하나의 머티리얼에는 알베도(Albedo), 노멀(Normal), 러프니스/메탈릭(Roughness/Metallic)의 3장 텍스처가 포함되므로 4개 레이어의 머티리얼을 위해서는 총 13개의 텍스처 샘플링이 필요합니다. 따라서 셰이더(Shader) 연산 비용이 매우 높다는 것을 알 수 있습니다. 이 방법을 사용해 지형을 렌더링하려면 지형 머티리얼에 대한 철저한 기획과 제어가 필수적입니다.

우리에게 이미 익숙한 웨이트 텍스처(맵)

솔루션 2: 일부 자체 개발 엔진에서는 종종 ID Map 방식을 채택합니다. 지형을 그릴 때 엔진이 자동으로 현재 구역 내에서 가중치가 가장 높은 4가지 머티리얼을 선별한 후, 이들의 인덱스(Index)와 가중치를 ID Map에 저장합니다. 그런 다음 셰이더가 ID Map 정보를 디코딩하여 해당하는 머티리얼과 가중치를 알아냅니다.

솔루션 3: 런타임 가상 텍스처(Runtime Virtual Texturing, RVT) 기술입니다. 요약하자면, 지형 머티리얼 혼합을 컴퓨트 셰이더(Compute Shader)에서 미리 계산해 거대한 실시간 텍스처 한 장에 캐싱해두는 방식입니다. 셰이더 샘플링 시에는 이 거대한 텍스처에서 자신에게 해당하는 '한 조각'만 가져오면 되며, 그 결과물은 이미 텍스처 혼합이 완료된 상태입니다. 예전에는 여러 장의 이미지(텍스처)를 샘플링하고 혼합해야 했지만 이제는 단일 레이어 머티리얼과 동일해져서 셰이더 성능이 비약적으로 향상됩니다.

데칼(Decal)

데칼은 씬의 머티리얼 다양성을 효과적으로 향상시켜주지만, 겹쳐서 그리는 Overdraw 성능 비용이 발생합니다.

런타임 가상 텍스처 기술의 또 다른 이점은 데칼의 성능 소모를 극적으로 줄일 수 있다는 점입니다. 따라서 기존의 한계를 넘어 씬에 대량으로 배치하여 사용할 수 있습니다.

물웅덩이, 자갈, 도로 긁힘 자국 등의 데칼 유형이 널리 사용되며 절차적(Procedural) 방식으로 배치됩니다.

《파 크라이 5(Far Cry 5)》는 이 데칼 기술을 한 단계 더 발전시켜 테셀레이션 기능까지 갖추도록 했습니다.

흥미롭게도 이러한 국소적인 테셀레이션 적용 방식은 카메라 근처의 지형 전체에 직접 테셀레이션을 적용하는 것보다 성능이 뛰어나며, 시각적 효과와 조정 가능성 또한 훨씬 좋습니다.

역자 개인적으로 신기하게 생각한 점은 2019년 겨울에 중국 모사의 프로젝트에 메시 데칼을 추가 할때 이미 위 글처럼 처리 했던 적이 있다는 점인데... 사람의 생각이란 다 비슷한거 같긴 하다고 생각이 들었습니다.

TERRAIN DECAL EDITOR 制作功能需求 第一版 – MY NAME IS JP

 

TERRAIN DECAL EDITOR 制作功能需求 第一版

这主要通过两个步骤完成。首先,创建一个基于网格的基本贴花。 Overview: Collect the opinions of artists participating in the X2M project and propose alternative opinions. Because the number of mixed textures of the terrain is lim

leegoonz.blog

 

지형과 정적 메쉬(Static Mesh)의 블렌딩

지형과 지면 위 오브젝트 사이에는 어쩔 수 없이 접합 문제가 발생합니다. 주요하게는 텍스처, 노멀, 지오메트리 세 가지 측면의 매칭이 필요합니다.

이를 처리하는 흔한 방법으로는 트라이플래너 매핑(Triplanar Mapping), Pixel Depth Offset, 디스턴스 필드(Distance Field) 블렌딩 등이 있습니다. 그러나 이러한 솔루션들은 각기 장단점이 있으며, 현재로서는 가상 텍스처 기술이 이 문제를 해결하는 최적의 대안입니다. 이 문제에 대해서는 별도의 글에서 상세히 소개하겠습니다.

절벽(Cliff) 렌더링

지금까지 논의한 모든 지형 머티리얼 효과는 월드 공간의 XZ 평면을 기반으로 했으며, 앞서 언급한 지형 텍스처들은 모두 위에서 아래로 '투영(Projection)'된 것입니다. 아직 지형의 수직면(경사면)을 어떻게 처리할 것인지에 대해서는 고려하지 않았습니다.

이는 곧 경사가 가파른 구간(아래 그림 1의 붉은색 영역 참조)이 있을 때 텍스처가 늘어나는 변형이 일어난다는 뜻입니다(그림 2의 산비탈 영역 참조).

그림 1

그림 2

이 문제를 해결하기 위해 도입된 고전적인 방법 중 하나가 트라이플래너 매핑(Triplanar Texture Mapping)이며, 그 결과는 다음과 같습니다(그림 3).

그림 3

하지만 이 방법을 사용하면 일반 지형 렌더링 비용의 3배가 소모됩니다. 《파 크라이 5(Far Cry 5)》에서는 이러한 오버헤드를 최적화하기 위해 여러 가지 트릭을 썼으나, 과정이 다소 복잡하므로 본 글의 논의 범위에서는 벗어납니다.

앞서 언급했듯이 타일링(Tiling) 머티리얼은 원거리에서 패턴 반복이 확연히 나타납니다. 절벽은 수직면이기 때문에 앞서 미리 구워둔 Global Color Map을 사용해 먼 풍경을 렌더링할 수 없습니다. 따라서 원거리의 절벽에 대해서는 셰이더 내부에서 타일링감을 줄이는 별도의 처리를 할 수 있습니다(그림 4).

그림 4

마지막으로 벼랑 구조의 입체감을 더하기 위해, Houdini에서 이 절벽 구역들을 감지하고 절벽을 감싸는 전용 모델(Cliff Wrapper Mesh)을 생성한 뒤 관련된 배치 정보를 엔진으로 출력하여 절차적으로 배치합니다(그림 5, 6).

그림 5

그림 6


절차적/자동화 기술

지금까지 지형 제작 및 렌더링 관련 기술과 프로세스에 대해 살펴보았습니다. 다음 단계는 지표면과 그 위의 오브젝트들을 더욱 풍성하게 채워 넣는 것인데, 이토록 방대한 지형을 100% 수작업으로 편집하는 것은 매우 어렵습니다.

이어지는 내용에서는 식생(Vegetation), 절벽, 도로 시스템의 세 가지 분야를 중심으로, 대표적인 절차적 환경(씬) 제작 기술 세 가지를 상세히 소개하겠습니다.

식생(Vegetation)

먼저 밀도 맵(Density Map) 기반의 식생 배치 방식을 이야기해보겠습니다.

이름 그대로 하나의 그레이스케일 맵(흑백 이미지)을 사용해 식생 모델의 분포를 제어하는 방식입니다. 하나의 그레이스케일 정보 층은 단 한 종류의 식물 분포만을 제어할 수 있습니다.

일반적으로 높이 맵의 크기를 기준으로 1픽셀이 1제곱미터를 나타낸다고 할 때, 이 정도 정밀도로는 정확한 위치 좌표를 표현하기엔 역부족입니다. 그래서 아티스트에게 각 픽셀 당 몇 그루의 식물을 배치할지 제어할 수 있는 '밀도 파라미터'를 제공하는 것이 보통이지만, 식생 모델 간의 겹침(클리핑) 현상은 고려되지 않습니다.

따라서 이런 배치 기술은 풀밭이나 덤불처럼 넓은 면적에 연속적으로 자라는 식생에 훨씬 적합합니다.

숲과 같이 복잡한 생태계의 경우, 생물 군계의 분포는 여러 규칙을 고려해야 합니다. 개체군의 다양성, 우점종과 열성종의 구조, 수자원과 일조량 분포 요소, 나무의 수령(나이) 등이 포함됩니다.

이러한 시뮬레이션 과정은 대개 물리 기반 분포를 따르며, 출력 결과에는 방대한 양의 정보를 저장해야 합니다.

우리는 이 같은 물리 시뮬레이션 기반 분포 과정을 Houdini에서 구현하여 최종적으로 일련의 포인트 클라우드(Point Cloud) 데이터를 만들어냅니다. 각 포인트에는 오브젝트 ID와 매트릭스 데이터(위치, 회전, 스케일 포함)가 저장되어 있습니다. 마지막으로 이 정보를 엔진으로 불러와(Import) 해당 식생 유형의 인스턴스를 생성하고 위치, 회전, 크기를 설정합니다.

보시다시피 포인트 클라우드 기반 배치 방식은 복잡한 형태의 오브젝트 배치를 지원하며, 각 오브젝트의 ID, 위치, 회전 등의 모든 정보가 하나의 '포인트 클라우드' 데이터로 저장됩니다.

식생 외에도 데칼, 바위, 프랍(Props) 등 모든 개별 모델들은 포인트 클라우드 방식을 통해 자동화 배치를 구현할 수 있습니다.

절벽

절벽 제작의 주제로 다시 돌아가 보겠습니다. 위에서 절벽 렌더링에 따른 약간의 성능 이슈와 절벽 메시 모델을 Houdini에서 자동으로 생성할 수 있다고 언급했습니다. 이제부터는 《파 크라이 5》에서 절벽을 감싸는 래퍼(Wrapper) 레이어를 자동 생성하는 방식과, 《어쌔신 크리드 오디세이》에서 활용한 바위(암석) 메쉬를 겹겹이 쌓는 솔루션에 대해 알아보겠습니다.

아래 이미지는 《파 크라이 5》에서 Houdini를 사용하여 절벽 래퍼 레이어를 생성하는 워크플로입니다. 경사도를 자동으로 감지하는 것은 아주 간단한 작업이며, 이후 경사면 구역에 알맞은 토폴로지 구조의 모델을 생성하게 됩니다. UV를 생성할 필요는 없으며, 텍스처 매핑은 월드 공간(World Space) 트라이플래너 매핑(Triplanar Mapping) 방식을 사용하여 샘플링합니다.

《어쌔신 크리드 오디세이》는 매우 직관적이고 거친 방식을 썼습니다. 경사면(비탈길) 구역이 바위 모델들로 적절하게 채워진 것을 볼 수 있으며, 이를 통해 지형 렌더링 시 경사면 처리에서 드러나는 결점들을 감춰줍니다. 마찬가지로, 머티리얼 렌더링에는 타일링 텍스처와 트라이플래너 매핑 기법이 혼합되어 사용되었습니다.

도로망(Road Network)

위의 프로세스들을 통해 대자연의 가장 기본적인 모습을 다 만들어 냈으니, 이제부터 인류의 흔적인 '길'을 추가할 차례입니다.

가장 먼저 우리 게임이 어떤 형태의 길을 필요로 하는지를 고민해야 합니다. 흙길이나 돌길 정도만 필요하다면 Splat Map에 칠해서 관련 머티리얼 영역을 직접 확보해 주면 끝납니다(아래 그림에 묘사된 흙길처럼요).

하지만 이 방식은 머티리얼 텍스처의 방향성을 표현할 수 없습니다. 만약 고속도로와 같은 시각적 효과를 원한다면 별도의 모델을 사용하거나 대규모의 데칼을 써야 합니다(예: 고스트 리콘 시리즈의 방식).

분할된 도로 모델들을 재사용하여 이어 붙이고 망을 구성하는 것은 아주 좋은 아이디어지만, 구부러진 커브 길의 연결 문제를 해결하지 못합니다. 물론 다양한 형태의 조립용 파츠를 미리 여러 개 만들어두고 일정한 규칙에 따라 연결할 수야 있겠지만, 그렇게 하면 제약이 크고 통제하기도 까다롭습니다.

스플라인 메시(Spline Mesh)는 일종의 메쉬 변형 기술로, 두 개의 점을 이용해 하나의 스플라인 곡선을 제어하고, 이 곡선을 따라 정적 메쉬를 변형시킵니다. 절차적으로 출력되는 데이터 포인트와 스플라인 메쉬를 결합하는 방식은 절차적 도로망 생성을 위한 대표적인 솔루션 중 하나입니다.

도로망의 생성

도로 네트워크는 게임 전체의 플레이 요소를 꿰뚫는 중요한 내용으로, 플레이어가 월드를 탐험하는 방향을 제시하는 첫 번째 요소입니다. 따라서 도로의 분포는 기획된 디자인 도면을 그대로 재현하면서도 지형의 고저차를 고려하여 세심하게 조정되어야 합니다.

이를 위해서는 길찾기 알고리즘 기반의 Houdini 도로 플러그인이 필요합니다. 사용자가 입력한 출발점과 도착점을 바탕으로 합리적인 경로를 계산해 낸 후, 더 나아가 세부적인 가지(Sub) 도로망까지 생성합니다.

Houdini가 출력하는 리소스는 다음과 같습니다:

  1. 도로 궤적 포인트 데이터. 스플라인 메시와 결합하여 도로 메시를 구성합니다.
  2. 도로의 높이 맵(Height Map). 기존 지형을 평탄하게 메워 스플라인 메시가 지형과 매끄럽게 밀착하도록 합니다.
  3. Splat Map. 도로 양옆의 머티리얼(재질)을 제어하는 데 사용됩니다.

게다가 이 과정에서 도로 궤적에 따라 도로 위의 데칼을 배치할 정보까지 한꺼번에 생성하여 이를 포인트 클라우드 데이터로 내보낼 수도 있습니다.

수역(Water Bodies)

바다를 제외한 수역(물가)의 형태 또한 무척 다양합니다. 제작 차원에서는 크게 두 가지 부류로 나눌 수 있습니다: A: 강, 하천, 호수 / B: 시냇물, 운하, 연못.

강과 호수 등은 지형을 구성할 때 이미 형태가 조각(Sculpt)되어 있습니다. 따라서 Houdini에서 수면에 해당하는 수위를 계산하고 알맞은 모델을 생성하기만 하면 됩니다. 모델의 크기는 레벨의 크기에 맞춰 분할합니다(예: 1제곱킬로미터 단위).

시냇물은 도로 생성 방식과 유사하게 접근할 수 있습니다. 길찾기 알고리즘을 이용해 산꼭대기에서부터 강을 향해 물줄기를 유도하며 그에 맞는 메시를 생성합니다.

그 외에 규모가 작은 물웅덩이나 수역은 수작업으로 평면 모델을 배치해 주거나, 스플라인 메시 곡선 툴을 사용해 재빨리 물줄기 모양을 잡아당겨 만드는 식으로 작업합니다.


대규모 씬(환경) 제작 기술에 대한 이야기는 일단 여기까지 적겠습니다. 사실 자동화나 절차적 생성 부분은 제 주력 분야는 아니며 프레젠테이션(PPT)에서 발췌한 내용들이 꽤 있습니다. 절차적 기술은 매우 새롭고 신선한 기술적 방향성으로 도전 과제들로 가득 차 있지만, 앞으로 게임 제작 기술의 발전에 있어 이 기술이 갖는 의미를 다 함께 지켜봤으면 합니다.

다음 편에서는 렌더링 관련 내용을 중점적으로 다루겠습니다. 각 기술 솔루션마다 독립적인 편으로 편성하여 여러분과 더욱 깊이 있는 디테일을 논의할 계획입니다. 관심 있으신 분들은 좋아요와 구독 부탁드리며, 여러분의 관심이 저에게 큰 원동력이 됩니다.

덧붙여, 새로운 기회를 찾으시는 분들은 언제든 개인 메시지 주시길 바랍니다. TA(테크니컬 아티스트)와 환경 편집(레벨 디자인) 포지션을 모집 중입니다(근무지: 광저우, 모 게임사). 감사합니다.

https://www.gdcvault.com/play/1025480/Terrain-Rendering-in-Far-Cry

 

Terrain Rendering in 'Far Cry 5'

The talk will describe in detail the terrain rendering systems that have been developed in the production of 'Far Cry 5'. This session will cover the GPU compute pipeline used for LODing, culling, stitching and rendering the height field terrain....

www.gdcvault.com

 

https://www.gdcvault.com/play/1024708/-Ghost-Recon-Wildlands-Terrain

 

'Ghost Recon Wildlands': Terrain Tools and Technology

'Tom Clancy's Ghost Recon Wildlands' is an open world shooter developed by Ubisoft Paris. It is the biggest action-adventure open world games published by Ubisoft, with the game world including a wide variety of environments such as mountains,...

www.gdcvault.com