로그인

회원가입 | ID/PW 찾기

취재

[KGC] (영상) 블레스, 바람과 구름의 움직임을 만들다

네오위즈 황선일 테크니컬 아트디렉터의 ‘블레스 월드 만들기’

석모도 2013-09-28 02:59:01
방대한 세계관을 지향하는 <블레스>의 목표는 ‘광활한 월드와 유저가 세계 곳곳을 돌아다닐 수 있도록 ‘갈 수 없는 곳을 최소화하는 것이었다. 또, 이동 중 로딩은 몰입을 방해하는 요소이기 때문에 모든 지역을 심리스 방식으로 연결하려 했다.

보다 사실적인 세계의 구현을 위해 네오위즈 블레스 스튜디오는 유저, NPC, 몬스터 외에도 바람에 흔들리는 갈대밭이나 나무처럼 자연구조물이 끊임없이 움직이고, 흔들리고, 반응하도록 만들었다. 그리고 이것들이 유저와 상호작용하는, 생동감 있는 세계를 표현하려고 했다.

네오위즈 블레스 스튜디오의 황선일 테크니컬 아트디렉터(TA)는 이러한 목표를 가지고 <블레스>를 개발하면서 생긴 문제점과 이에 대한 해결 방법을 27일 KGC 2013에서 공개했다. 발표에 앞서 하늘을 날아다니는 탈것의 시점으로 <블레스> 세계를 살펴보자. /디스이즈게임 남혁우 기자


■ 어디든지 갈 수 있는 거대 지형 만들기

<블레스>의 개발이 시작된 2009년 하반기에는 언리얼 엔진 3의 지형제작 시스템인 ‘랜드스케이프가 없었다. 그래서 초기에는 터레인으로 월드 프로토타입의 개발을 시작한 후 랜드스케이프’가 나오고 나서 개발 툴을 바꿨다.

랜드스케이프는 텍스처를 기반으로 하며, 기존에 자주 쓰이던 터레인이 비해 사용 편의성이 뛰어났다. 또한 단위면적당 더 많은 트라이앵글을 더 가볍게 사용할 수 있었기 때문에 4배 이상 섬세한 지형을 개발할 수 있었고, 제작시간도 단축됐다.



또한 최근 세계적으로 많이 사용하는 지형제작 툴인 월드머신을 활용해 지형을 구성했고, 산맥, 지형침식 등 효과를 빠르게 표현할 수 있었다.

맵은 유저가 모든 지역을 자유롭게 탐험할 수 있도록 끊김이 없는 심리스 방식으로 만들었다. 언리얼 엔진 3는 레벨스트리밍 기능의 성능이 좋기 때문에 룸 방식이나 존로딩 방식의 온라인게임은 제작자가 필요에 따라 다양한 방법으로 레벨스트리밍을 할 수 있다. 

하지만 거대한 월드맵을 한꺼번에 엔진에서 읽어 들이는 것은 힘들기 때문에 심리스 방식 MMORPG는 레벨 스트리밍에 대응할 수 있도록 격자 블록 형태로 균일하게 맵을 나눠야 한다.


나눠진 블록은 건물 등의 ‘일반 리소스와 지형을 표시하는 지형 리소스’로 분리된다. 리소스를 나눈 이유는 성격에 따라 별도로 관리해야 하기 때문이다. 예를 들어 지형 리소스는 먼 거리에서 지평선을 형성하기 때문에 일반 리소스보다 스트리밍 거리가 더 길어야 한다.

일반 리소스는 랜드마크 등 원거리에서 보여야 하는 S타입, 일반적인 건물 등의 A타입, 저사양 유저를 위해 더 가까운 거리에서 스트리밍해야 하는 C타입, 그리고 실내 건물을 표현한 I타입 등 용도에 따라 세분된다.

분할된 리소스는 월드세팅 툴을 통해 체계적으로 관리된다. 이 툴은 하나 이상의 블록을 동시에 편집할 수 있으며 블록 간 광원이 끊어져 보이는 현상을 없애는 기능을 지원한다.




■ 바람의 움직임도 만들다. 인터랙티브 월드

<블레스>의 게임 내 시간변화(TOD)를 통해 세계는 새벽/낮/저녁/밤의 4가지 시간대가 자연스럽게 변화한다. 단순히 광원만 바뀌는 것이 아니라 낮에 등장하는 NPC가 저녁이 되면 사라지거나, 밤이 되면 도둑이 등장하는 등 시간대에 따라 게임 콘텐츠도 달라진다.

블레스 스튜디오는 TOD 구현을 위해 조명 및 환경 설정을 통합해서 관리할 수 있는 기능인 ‘BL환경 볼륨’을 자체적으로 개발했다.
 
게임 내 시간 변화

기존의 텍스처 기반 스카이박스는 하늘과 구름의 표현에 대한 제한과 용량의 한계가 있었다. 작은 규모의 맵이면 크게 상관없겠지만 <블레스>는 광활한 하늘에 다양하게 구름이 표현돼야 할 뿐만 아니라 시간에 따라 구름이 바뀌어야 하기 때문에 변화가 필요했다.

그래서 ‘루미온’이라는 건축 비주얼라이제이션을 활용해 파라미터 설정만으로 자연스럽게 하늘을 표현하는 기능을 BL환경 볼륨에 추가했다. 다만 루미온은 게임제작을 위한 툴이 아니라 실시간 렌더링에 적합하지 않았다. 그래서 이를 최적화하고 추가적으로 필요한 기능을 더하는 작업이 필요했다. 

<블레스> 스카이박스 시스템

<블레스>는 풀, 나무, 깃발, 빨랫줄 등 모든 사물이 움직이는 동적 환경을 지향하고 있다. 이를 구현하기 위해 초기에는 피직스를 적용해 봤으나, 많은 수의 애셋에 적용하니 제대로 된 퍼포먼스를 낼 수 없었다. 특히 저사양 PC에서는 아예 구현이 불가능했다.

그 대신 언리얼 엔진 3에서 기본적으로 지원하면서 피직스보다 가벼운 ‘월드 포지션 오프셋을 적용해 봤더니 보다 많은 오브젝트를 실시간으로 움직일 수 있었다.

월드 포지션 오프셋

‘피벗 페인터는 에픽게임스에서 제공하는 맥스 스크립트 툴로 오브젝트에 계층구조를 만들어서 오브젝트 간에 자연스러운 움직임을 표현하게 해준다. 이를 활용해 나뭇가지와 잎사귀 오브젝트에 계층과 축 정보를 입력하면 바람에 자연스럽게 흔들리는 모습을 표현할 수 있다.

피벗 페인터

<블레스>는 바람의 움직임도 자연스럽게 표현하기 위해 월드 윈드 패턴을 만들었다. 월드 윈드 패턴의 특징은 필드에 부는 바람의 모양을 텍스처로 정의할 수 있다는 것이다. 이를 통해 나무나 풀이 일정한 주기로 흔들리는 것이 아니라 가을 바람에 갈대가 흔들리는 듯한, 보다 현실적인 모습을 구현해냈다.

월드 윈드 패턴

 

 

 

■ 메모리가 집중되는 곳을 바로 찾아낸다. 월드 최적화 

<블레스>는 맵이 광활한 만큼 크고 작은 일이 어디에서 발생할지 모르기 때문에 이를 관리하는 것도 쉬운 일이 아니다. 개발팀은 이러한 문제를 해결하기 위한 툴도 만들었다.

먼저 ‘월드 메모리 체크 툴은 말 그대로 <블레스> 세계의 메모리 분포 현황을 확인하기 위한 도구다. 특정 지역에 메모리가 집중되면 유저의 플레이에 지장이 생길 수 있으므로 이 툴을 통해 빠르게 메모리 분포를 확인하고 문제가 생길 경우 해결하는 것이 필요했다.


‘매시브LOD는 거대한 대도시나 다수가 모인 그룹 등 메모리를 많이 차지하는 애셋을 카메라가 멀어짐에 따라 메모리를 적게 차지하는 스태틱매쉬로 교체하는 기능이다. 이는 언리얼 엔진 3의 기본 기능으로 주로 대도시 최적화에 쓰인다.