안녕하세요, 여러분! 저는 더 차이니즈 룸(The Chinese Room)의 프로그래머 조 휘터(Joe Wheater)입니다. 최근에 내러티브 공포 게임인 스틸 웨이크 더 딥(Still Wakes the Deep)의 워터 메커니즘을 담당하는 팀에서 일했습니다. 6월에 PC, PlayStation 5, Xbox Series X|S로 출시된 이 게임에서 플레이어는 1975년 북해의 석유 시추선에 탑승하여 이곳에서 신비롭고 무서운 공포를 만나게 됩니다. 카메론 '캐즈' 맥리어리(Cameron ‘Caz’ McLeary)는 붕괴되고 있는 시추선을 헤쳐나가 탈출할 방법을 찾아야 합니다.
이 게임의 기본 설정상, 플레이어는 대부분의 경우 물속에 있게 됩니다. 시추선의 침수 지역에서든, 시설 아래의 끔찍한 북해에서든 말이죠. 저희는 물방울 하나까지도 위협적인 동시에 사실적으로 느껴지도록 만들고자 했습니다. 여기에서는 언리얼 엔진 5를 사용하여 사실적인 워터 메커니즘을 제작한 경험과 그 결과물을 공유하고, 수중 모험에 뛰어들고 싶어 하는 다른 개발자들에게 도움이 될 만한 팁을 알려드리겠습니다.
난관
우리의 과제는 끝이 없을 것처럼 느껴지게 하면서 플레이어를 극한으로 몰아가고, 또 사실적이면서 가혹하지만 결코 불가능하지 않은 수중 환경을 만드는 작업이었습니다. 게임에는 두 가지 유형의 물이 존재합니다. 하나는 시추선에 스며들어 공간을 점령하고 있는 물이고, 다른 하나는 시설을 둘러싼 광활한 북해입니다.
두 가지 물 모두 폐소공포증, 서브메카노포비아(물에 잠긴 인공조형물에 대한 공포증), 사망 공포증, 오토포비아(고립에 대한 공포증), 심해 공포증, 어둠 공포증, 고소공포증 등 플레이어의 가장 원초적인 두려움을 자극하여 게임의 분위기를 조성하고 긴장감을 고조시키는 데 중요한 역할을 합니다.
플레이어는 붕괴 중인 석유 시추 시설에 갇혀 있습니다. 북해의 거친 파도가 몰아치는 세계에서 가장 위험한 이곳에서 어떻게 탈출할 수 있을까요?
두 종류의 물 모두 게임의 전반적인 스토리텔링과 공포 측면에 기여하지만 서로의 형태, 메커니즘, 기능은 매우 다릅니다. 석유 시추 시설 내부의 물을 어떻게 작업했는지 살펴보겠습니다. 시설 내부의 수위가 높아질수록 게임의 긴장감도 함께 고조되고 플레이어는 그 공포에 한층 몰입하게 됩니다.
가라앉는 공포: 룩 개발
스틸 웨이크 더 딥의 스토리가 전개되면서 숨겨진 비밀이 밝혀지기 시작합니다. 선원들은 괴물로 변해가고, 시추선은 사나운 바다에 이는 파도와 충돌하면서 부숴지고, 물이 점점 차오르며 시추선의 아래 층이 점차 수몰됩니다. 안타깝게도 캐즈와 플레이어는 생존을 위한 여정을 계속하기 위해 시추선 깊은 곳으로 발을 내딛고 침수된 지역을 탐험해야 합니다.
‘Still Wakes the Deep을 플레이하면서 플레이어는 침수된 시추선의 저층부에서 물길을 가르며 게임 메커니즘을 활성화하거나 오브젝트를 찾아내어 탈출해야 합니다.
저희는 물속에서 게임의 여러 챕터들이 진행되도록 독특한 레벨 디자인을 선택했습니다. 또한 플레이어에게 탐험하고 마스터할 수 있는 새로운 메커니즘을 제공하고 싶었고 동시에 이것은 팀에게 흥미롭고 즐거운 도전 과제가 되었습니다. 물은 이 게임의 주요한 위협 요소 중 하나이기 때문에 깊고 어두우며 디테일하면서 위험하게 보이도록 만들고 싶었죠.
이러한 모습을 구현하기 위해 언리얼 엔진의 나이아가라 VFX 시스템을 사용해서 2차원의 얕은 워터 시뮬레이션을 만들었습니다. 이 2D 시뮬레이션은 물 표면만을 시뮬레이션하고 표면의 움직임을 묘사하는 수식을 계산합니다. 이를 통해 (주로 침수 시퀀스에서) 물이 빠르게 흘러 발생하는 표면의 높이 변화로 인한 파도를 생성하여 거칠고 위협적인 룩을 만들어냅니다.
이러한 시퀀스는 격렬하고 통제되지 않는 것처럼 느껴지지만, 실제로는 이를 관리하기 위해 워터 볼륨 시스템을 구성했습니다. 벽과 바닥의 메시를 태그하여 이를 하이트맵 텍스처에 베이킹할 수 있었습니다. 이 하이트 맵 텍스처는 물이 흐를 수 있는 공간을 정의하고, 이 메시들은 시뮬레이션에서 힘이 가해진 물이 부딪히고 튕길 수 있는 경계가 됩니다.
플레이어는 다음 영역으로 진행하기 위해 수중으로 잠수하거나, 부서지고 무너져 내리는 방 안에서 길을 찾거나, 맹렬한 물살을 가르며 나아가야 합니다. 스틸 웨이크 더 딥은 어두운 금속 재질의 환경에서 전개됩니다. 저희는 여러 단계에서 물 자체를 장애물로 작용하도록 하면서도 불가능하거나 답답하게 느껴지지 않는 수준에서 게임의 난이도를 높이고 싶었습니다.
이를 위해 포스트 프로세싱 작업을 통해 수중에 있는 듯한 느낌을 구현했습니다. 또한 물에 입체감을 주고 물속에서 물체가 흐릿해 보이도록 만들기 위해 포그 볼륨, 파티클, 코스틱 효과, 뎁스 오브 필드, 블러, 블룸 이펙트를 적용했습니다.
플레이어가 수면 아래로 이동하면 의도적으로 시야가 흐려집니다. 이 효과는 게임플레이를 흥미롭게 만들고 약간의 난관을 제시할 뿐만 아니라 플레이어가 숨이 차기 전에 움직여야 한다는 것을 인식할 수 있게 도와줍니다.
또한 물에 포그 볼륨과 파티클 시스템을 추가하여 오염수처럼 물이 탁하고 질척해 보이도록 만들었으며 먼지, 파편, 기포 레이어도 추가하여 시야를 가렸습니다. 이러한 파티클 시스템은 특히 움직이는 느낌을 주는데 있어서 큰 도움을 주었습니다. 왜냐하면 수중에서 움직이는 플레이어를 따라 기포를 발생시켜 수면으로 올라가게 하고, 먼지가 부드럽게 소용돌이 치게 하고 물의 흐름을 생기게 했기 때문입니다.
The Chinese Room 이미지 제공
포스트 프로세싱 및 파티클 시스템이 적용된 이미지. 왼쪽부터 오른쪽으로, 첫 번째: 포스트 프로세싱/파티클/포그/라이트 미적용. 두 번째: 포그, 라이트, 파티클이 모두 적용되었지만 포스트 프로세싱이 되지 않음. 마지막: 모든 시스템이 적용되어 마무리된 작업물.
심해 속으로: 공포감 조성
저희는 상승하는 수위가 육지에서 만큼이나 긴박하게 느껴지기를 원했으며, 스토리의 긴장감과 공포가 게임플레이에 반영될 수 있기를 바랐습니다. 이를 위해 펌프 시스템을 개발하고 통합하여 물에 속도와 물결을 추가했습니다. 이렇게 생성된 빠른 속도의 물은 공포를 선사하지만 플레이어의 이동을 돕기도 합니다.
펌프 시스템은 워터 시뮬레이션에 속도를 더하는 캡슐 형태의 오브젝트로 구성되었으며 물 표면에 파도와 물결을 만들어 방향성을 표시합니다. 그런 다음에는 주인공 캐릭터의 팔과 손, 발에 여러 개의 펌프를 부착했습니다. 이 펌프들은 서로 교차하여 플레이어의 수중 행동에 따라 실시간으로 사실적인 물결을 일으킵니다.
저희는 게임의 몰입도를 높이기 위해 플레이어의 행동에 반응하여 움직일 뿐만 아니라 그 안에 잠긴 오브젝트에도 영향을 미칠 수 있는 물을 만들고 싶었습니다. 워터 시뮬레이션에서 시추선의 기름통이나 철근과 같은 물리적 오브젝트가 물 표면의 움직임에 반응하지 않는다는 사실을 발견했습니다.
문제를 해결하기 위해 나이아가라의 GPU 다시 읽기 기능을 활용한 결과, 시뮬레이션 쿼리를 진행하여 특정 위치에서의 물결 방향, 강도, 표면 높이를 이해할 수 있었습니다. 이러한 데이터를 활용해서 부력을 적용하여 오브젝트를 물에 띄우고, 표면 시뮬레이션에 따라 물결의 흐름을 이용하여 오브젝트가 움직이게 만들었습니다. 그러자 오브젝트가 플레이어의 동작에 따라 움직이는 것처럼 보였습니다.
이외에도 개발 과정에서 몰입도를 높이고 사실감을 더욱 향상시킬 만한 다양한 메커니즘을 실험해 봤으나, 안타깝게도 게임플레이 경험에 있어서는 그리 좋은 영향을 주지 않았습니다.
예를 들어, 수영하는 동안 물을 잔뜩 먹은 작업복을 착용하는 느낌은 어떤지 시뮬레이션해 보았습니다. 게임의 주인공 캐즈는 지구상에서 가장 추운 장소에 놓여 있으며 그에 걸맞은 두껍고 튼튼한 옷을 입고 있죠. 이러한 시뮬레이션을 통해 캐즈에게 실제 현실처럼 수영 속도를 늦추고 부력을 줄이는 효과를 줄 수 있었습니다.
베이라 D(Beira D) 선원들이 착용한 유니폼. 플레이어가 수영할 때 실시간으로 물속에 잠기는 기분을 느낄 수 있도록 캐즈에게 사실적인 워터로깅 메커니즘을 구현하는 아이디어를 실험해 보았습니다. 하지만 무거운 소재와 여러 겹 껴입은 복장 덕분에 가라앉는 속도가 너무 빠르고 수면 위로 올라오는 데 어려움이 있었습니다.
이러한 메커니즘을 구현하려고 시도해 봤지만 플레이하기에 수월하지 않았으며 플레이어에게 게임 속 상황을 전달하는 것이 복잡하다는 것을 깨닫게 되었습니다. 더불어, 느린 수영 속도로 인해 플레이어가 한 번의 호흡으로 수중에서 이동할 수 있는 거리는 물론, 디자인 팀에서 수영 게임플레이를 위해 제작하는 공간의 크기도 제한되었습니다. 결국 원활한 경험을 위해 이 메커니즘을 없애긴 했지만 그래도 꽤 흥미로운 아이디어였습니다.
사실적인 물 생성을 위한 툴
언리얼에는 기본으로 제공되는 다양한 툴과 기술이 있다는 것을 알게 되었으며, 이를 사용하여 스틸 웨이크 더 딥의 물을 제작하고 영감을 얻을 수 있었습니다.
싱글 레이어 워터 셰이딩 모델: 이 모델은 언리얼 엔진에서 사실적인 물을 만드는 데 매우 효과적이었습니다. 에픽의 기존 리소스를 구현하는 방법과 그 효과에 대해 많은 것을 배웠습니다.
콘텐츠 예제 샘플 프로젝트: 이 프로젝트에는 엔진의 모든 부분에 유용한 예제가 많이 포함되어 있어, 나이아가라 및 플루이드 시뮬레이션 학습에 핵심적인 요소였습니다.
머티리얼 에디터: 머티리얼 에디터는 시뮬레이션 데이터 위에 텍스처 기반 이펙트를 적용하는 데 사용되었습니다. 물의 비주얼에 이펙트를 추가하는 데 큰 도움이 되었으며 게임 진행에 따른 스토리텔링에도 도움을 주었습니다.
나이아가라: 나이아가라는 시뮬레이션 자체에 사용된 것은 물론, 조각 난 파이프와 물속 파편과 같은 많은 파티클 시스템에도 사용되었습니다. 나이아가라 시뮬레이션 스테이지 학습 리소스 또한 언리얼 엔진에서 플루이드 시뮬레이션이 어떻게 구성되는지 이해하는 데 매우 유용하고 필수적이었습니다.
워터 시스템: 워터 시스템은 나이아가라 데이터 인터페이스를 사용하여 나이아가라에서 시뮬레이션 데이터를 다시 읽습니다. 이를 통해 게임 내 다른 시스템이 시뮬레이션의 현재 상태에 동적으로 반응할 수 있습니다.
포그 볼륨: 볼류메트릭 머티리얼을 사용하여 워터 볼륨 내에 포그를 렌더링했습니다. 이 머티리얼을 통해 2D 배열 렌더 타깃을 샘플링하여 워터 시뮬레이션에서 정보를 수집할 수 있었습니다.
언리얼 엔진 5 선택
저는 더 차이니즈 룸에서 스틸 웨이크 더 딥의 테크니컬 디렉터를 맡은 닉 슬레이븐(Nick Slaven)입니다.
스틸 웨이크 더 딥 제작에 있어 언리얼 엔진은 자연스러운 선택이었습니다. 언리얼 엔진은 제작 과정 전반에서 높은 퀄리티와 제어력을 제공할 뿐 아니라, 엔진으로서의 기능 또한 저희의 전 크리에이티브 디렉터인 댄 핀치벡(Dan Pinchbeck)이 구상한 게임 콘셉트를 구현하는 데 필요한 요소와 완벽하게 일치했습니다.
기존에는 팀의 언리얼 엔진 경험 수준에 편차가 있었지만, 에픽과의 파트너십을 통해 모든 인력들이 언리얼 4.26에 익숙해지도록 교육 세션을 마련하고 이후 언리얼 엔진 5로 전환했습니다. 엔진 버전 업그레이드를 통해 나나이트 및 루멘과 같은 에픽의 최신기술을 활용할 수 있었습니다. 이러한 새로운 기술은 게임의 룩과 공포 분위기를 끌어올리는 동시에 워크플로 효율성도 증대시켰습니다. 예를 들어, 루멘의 리얼타임 라이팅 기능을 사용하면 섀도우 맵이 베이킹될 때까지 기다릴 필요 없이 라이팅 설정의 변경 효과를 즉시 확인할 수 있습니다.
또한 언리얼 엔진에서 제공되는 워터 기술을 활용하여 북해를 효과적으로 시뮬레이션할 수 있었으며, 셰이더 툴은 내부 워터 시뮬레이션에 필요한 기본 요소를 제공해주었습니다. 그리고 게임 내의 모든 시추선 근무자들의 경우에는 메타휴먼을 광범위하게 사용하여 사실성과 스토리텔링을 강화했습니다.
마지막으로 컨트롤 릭 기술을 활용하여 베이라 D 석유 시추선의 변형된 선원을 제작했고, 이 기술로 플레이어에게 공포와 흥미를 선사해주는 사실적이며 초자연적인 크리처를 만들 수 있었습니다.
지금 언리얼 엔진을 다운로드하세요!
세계에서 가장 개방적이고 진보된 창작 툴을 받아보세요.
모든 기능과 풀 소스 코드 액세스를 제공하는 언리얼 엔진은 제작에 바로 사용할 수 있습니다.
디지털 에셋을 검색, 구매, 판매, 그리고 공유할 수 있는 원스톱 마켓플레이스 '팹(Fab)'이 출시되었습니다! 이 새로운 마켓플레이스는 모든 산업의 크리에이터가 언리얼 엔진, Unity 3D, UEFN 및 기타 디지털 콘텐츠 제작 툴에서 사용할 수 있는 콘텐츠를 지원합니다.