진의 여정을 살아 숨 쉬게 만드는 바람, 날씨, 상호작용 파티클에 대해 자세히 다룹니다
쓰시마는 저희 팀이 애정을 기울여 무수한 디테일로 구성한 탐험하기 좋은 아름다운 장소입니다. 이는 초능력적 시각 효과가 가득했던 저희 팀의 지난 게임인 inFAMOUS: Second Son과 상당히 다르죠. 저는 Sucker Punch의 수석 비주얼 이펙트 아티스트 매트 바이니오(Matt Vainio)입니다. 제가 하는 일은 예술적, 디자인적 문제를 기술로 해결하는 것입니다. 이는 inFAMOUS 2 이후로 Sucker Punch에서 제가 쭉 해오던 일입니다. 오늘은 현란한 초능력 게임에서, 현실적이고 진흙, 피, 강철이 어우러지는 아름다운 게임을 만들기까지의 여정과 Ghost of Tsushima의 시각 효과를 어떻게 구현하였는지 다루고자 합니다.
Ghost of Tsushima의 제작을 시작하며 프로젝트에 필요한 주요 개선점 몇 가지를 파악했습니다. 우선, 파티클 시스템의 상호작용성 수준을 높이고 싶었습니다. 저희는 Second Son에서 표현 중심 파티클 시스템에 많은 투자를 하였고, 다양한 초능력을 구현할 수 있었습니다. 해당 시스템을 가져와서 높은 수준의 상호작용성으로 전환하는 것이 Ghost of Tsushima의 주요 목표 중 하나였습니다. 제작 초기부터 바람이 중요한 요소이고, 따라서 파티클 시스템을 적용하는 등의 노력이 필요함을 인지했습니다. 또한, 동물 생태계가 추가된 서사적인 풍경으로 자연 환경을 재현하고 싶었습니다. 더불어, 자연환경 속에서 캐릭터가 이동하고 전투하며 진흙과 피투성이가 되는 모습을 역동적으로 표현하여 “진흙, 피, 강철” 연출을 강조했습니다. 파티클을 더욱 상호적으로 만든 방법이 많지만, 모두 게임 세계에서 얻는 데이터가 필요했습니다. 몇 가지 예시로는 전체적인 바람, 플레이어가 만든 바람의 움직임, 캐릭터의 이동, 지형과 물의 위치 정보, 습도와 같은 날씨 정보, 시각 등이 있습니다.
두 번째 주요 목표는 더욱 큰 규모로 만들어야 한다는 점이었습니다. Ghost of Tsushima는 Second Son보다 훨씬 광범위하지만, Sucker Punch의 시각 효과 팀은 대부분의 개발 기간동안 두 명뿐이었습니다. 따라서, 자동화 시스템을 최대한 활용하여 게임 콘텐츠를 업데이트해야 했습니다. 또한, 역동적으로 변하는 날씨와 시간의 흐름에 영향을 받는 거대한 풍경에 대한 대응도 필요했습니다. 마지막으로, 쓰시마를 탐험하는 플레이어에게 도움이 되도록 몇 가지 요소들은 직접 배치하였습니다.
바람
처음부터 설정한 주요 예술적 연출 목표 중 하나는, 모든 것이 움직여야 한다는 것이었습니다. 이는 파티클을 통해 떠다니는 나뭇잎이나 꽃가루를 추가하면 되는 명확한 부분이지만, 이 외에도 여러 요소가 함께 작동하여 바람이 실제로 부는 것 같은 느낌을 불어넣습니다. 파티클뿐만이 아니라, 나무, 풀, 옷, 밧줄 등이 바람에 맞춰 움직이고 있습니다. 모든 요소는 함께 조화를 이루어, 각각 다른 바람의 상태에 맞춰 적합하게 움직이고 있습니다. 저희는 이 전체적인 바람의 방향을 게임의 거의 모든 효과에 접목하여, 폭탄이 터지거나 모닥불을 피울 때 실제와 같이 바람의 방향에 맞춰 연기가 움직이게 됩니다. 이는 불, 불꽃, 연기를 포함한 거의 모든 것에 적용됩니다. 또한, 풍속을 통계 내어 풍속 증가에 따른 난기류를 추가하기도 했습니다.
Ghost of Tsushima의 아트 디렉터인 제이슨 코넬(Jason Connell)이 리드 엔지니어 중 한 명인 아드리안 벤틀리(Adrian Bentley)와 저에게 퀘스트를 위해 파티클로 방향을 표시할 수 있는지 물어보기 전 까지는, 바람 효과를 길을 찾는 수단으로 사용할 의도는 없었습니다. 이렇게 “윈디케이터”가 탄생하게 되었습니다. 방해물을 피하고자 지속적으로 방향이 변하는 안내 시스템을 만드는 것은 원하지 않았습니다. 그저 목표를 가리키고 길을 찾는 것은 플레이어에게 맡기는 것이 저희의 목표였습니다. 플레이어가 스스로 길을 찾는 것은 매우 중요합니다. 탐험하고 길을 찾으며 몰입하길 원했고, 생각하지 않고 게임의 UI만 따르는 것은 원치 않았기 때문이죠. 이 직접적인 경로 안내는 파티클 시스템이 지형 정보를 습득하여 플레이어 주변의 지형을 나타내기에 구현 가능했습니다.
처음에는 파티클이 지형을 감싸 안고 따라 올라가거나 내려가고 언덕과 계곡을 따라 이어지도록 만들었습니다. 이는 몇 가지 문제가 있었죠. 첫 번째 문제는 산 지형에 절벽을 구성하는 돌 모형이 많다는 것입니다. 다만 절벽 모형은 지형 정보에 속해 있지 않고, 모형의 기초가 되는 역동적인 바둑판 무늬의 그물만 존재했다는 점입니다. 파티클이 돌을 마주치면 즉시 소멸하며, 윈디케이터를 사용하는 데에 어려움을 겪게 됩니다. 또한, 지형을 완벽하게 감싸는 모양이 자연스러워 보이지 않아 다음 시도에서 지형을 바닥으로 설정하여, 오르막을 이동할 때엔 파티클을 위로 올리고, 멀어지는 내리막 지형에서는 평평하게 흐르도록 했습니다. 여러 테스트를 통해 파티클이 경로에서 언덕을 향할 때 속도의 상승을 추가했습니다. 이 테스트를 통해 파티클이 지형에 얼마나 가까운지 혹은 묻히는지 보고자 했습니다. 만약 예상 지점에서 파티클이 너무 가깝거나 묻히게 되면, 가속을 하도록 설정했습니다. 마지막으로, 들판의 풀, 갈대 잎, 불에 탄 지역의 재 등 환경의 변화에 따라 윈디케이터가 다른 요소를 갖게 됩니다. 이 부분은 잠시 후에 다루도록 하겠습니다.
나뭇잎과 함께 모든 식물은 근처 바람 속도에 반응하는 마디로 제작되었습니다. 저희는 코딩 및 환경 팀과 함께 일하며 나뭇가지와 몸통이 따로 움직이게 했으며, 이는 쓰시마에 필요한 다양한 형태의 나무와 관목을 만드는 데 기여했습니다. 큰 나무 몸통과 나뭇가지 움직임 외에도, 잡음을 활용해 잎사귀 표면의 흔들림까지 구현했습니다.
초원과 갈대밭 지역은 특히 게임의 상징적인 요소이며, 렌더링, 환경, 시각 효과 팀 사이에 많은 교류가 필요했습니다. 해당 지역은 절차에 의해 생성된 삼각형의 수풀과, 갈대 줄기와 돌 모델 자원의 혼합입니다. 저희는 파티클을 이용하여 겹쳐지는 호 모양으로 풀을 대체해 파도와 같은 움직임을 얻고자 했습니다. 풀의 구현은 괜찮았지만, 나무나 덤불에는 어울리지 않았고, 구현 비용도 저희가 감당할 수 있는 수준보다 조금 높았습니다. 두 번째 시도에서는 바람에 두 개의 층을 추가했습니다. 첫 번째는 바람의 방향으로 움직이는 큰 잡음 패턴이며, 지형을 따라 움직이는 텍스처를 풀의 작은 디테일을 통해 그 위에 추가했습니다. 이 접근법의 장점은 (비용적인 부분 제외) 나무와 덤불의 굵직한 바람 잡음을 사용할 수 있게 되어, 풀과 나뭇잎과도 자연스럽게 어울린다는 점입니다.
저희는 결국 파티클에 의한 풀 대체 기술을 사용하게 되었지만, 플레이어와 말이 달려갈 때의 풀에는 다르게 적용했습니다. 이는 이전 게임에도 적용되었지만, 주요 개선점 중 하나는 파티클 시스템을 이 대체를 조절하는 데에 사용하여 더욱 향상된 행동을 통한 표현에 활용할 수 있다는 것입니다. 그 중 하나는, 풀이 제자리로 돌아오는 움직임을 자연스럽게 하기 위해 감쇠 파동을 적용하는 것인데, 이는 선형적이고 자연스럽지 못한 방식으로 풀이 제 위치에 돌아오는 것을 방지해 줍니다. 아래의 영상은 풀 움직임 기술의 예이며, 파티클 시스템의 디버그 시점이 이를 제어하고 있습니다. 궤적의 초록 부분은 움직임을, 빨간 부분은 움직임이 줄어드는 것을 나타냅니다. 이를 주의 깊게 살펴보면, 주인공에게서 멀어질수록 풀이 모양이 조금씩 회복하는 것을 볼 수 있습니다. 이는 자연스러운 움직임의 반향을 만들며 풀을 보다 사실적으로 만듭니다.
마지막으로 중요한 것을 덧붙이자면, 캐릭터에 있어서 많은 쓰임새가 있어서 캐릭터 기술 아트 팀이 주도하여 역동적인 옷과 밧줄을 추가했다는 점입니다. 각각의 밧줄과 옷 구현 시에도 나뭇잎과 파티클과 같은 바람 효과를 적용했으며, 장면에 실제로 바람이 움직이는 듯한 모습을 표현합니다.
동물
저희는 초기에 시각 효과 팀이 만든 동물은 멀리서 보기 위한 것이라고 생각했지만, 프로젝트가 진전되며 동물들이 더욱 큰 역할을 할 수 있다는 것을 깨달았습니다. 이 기능을 위해 Second Son에서 파티클 시스템을 만들었던 렌더링 코더인 빌 로큰백(Bill Rockenbeck)과 팀을 짰습니다. 그의 첫 절차는 파티클을 완벽하게 갖춘, 움직이는 그물망 물체를 만들게 하는 것이었습니다. 이 작업이 완료된 후, 윈디케이터를 사용한 것과 동일한 지형 위치 정보를 사용하여 모델의 방향을 지형에 맞추고 필요하면 충돌하게 했습니다.
저희는 개구리, 새, 학, 물고기, 게, 벌레와 같은 동물을 추가하였고, 이 생물들은 진과 다른 캐릭터에게 반응합니다. 캐릭터(진을 포함하여) 근처의 매우 낮은 값의 바람 영역을 사용하여, 동물 파티클 효과는 근처의 사람을 인지할 수 있습니다. 저희는 이 조건을 만족했을 때 파티클의 움직임을 바꾸는 새로운 조건 이벤트 시스템을 사용하였고, 동물이 사람에게서 멀리 흩어지게 했습니다. 이는 발사체와 충격에도 적용되어 화살이나 단검에 동물이 겁을 먹고 도망가도록 설계했습니다.
다음 영상에서 여러분은 해변에서 흩어지는 상호작용 게 효과의 초기 버전을 볼 수 있습니다. 처음에는 고정된 그물망(제가 할 수 있는 최선의 모델링일 것입니다)으로 시작하여 반복했습니다. 저는 게들이 진과의 최소한의 거리를 유지하여 바로 위에 서있는 상황을 방지하고, 겁이 많도록 느껴지게 하고 싶었습니다.
나뭇잎과 결투
Ghost of Tsushima의 특징 중 하나는 바로 바람이며, 아주 많은 잎을 추가하여 멋지지만 자연스럽게 느껴지도록 만들어야 했습니다. 이게 바로 Ghost of Tsushima의 어떠한 장면에서도 화면에 잎이 많이 등장하며, 바람, 환경, 캐릭터와 상호작용하는 이유입니다.
잎을 적절하게 사실적으로 느껴지게 만들기 위해, 지형을 기반으로 알맞게 내려앉도록 많은 노력을 기울였습니다. 각각의 잎은 3D 수학을 사용하여 동글납작한 판으로 모델링 되어서, 땅과 접촉할 때 적용되는 회전력에 반응하여 적절하게 회전하게 만들었습니다. 단지 땅에 내려앉는 것을 넘어서, 다른 진보된 움직임도 모델링했습니다. 예를 들어 물 표면의 잎은 조류와 함께 흐르고, 폭포에서는 떨어지며 시간이 지나면 가라앉습니다.
Ghost of Tsushima의 개발이 거의 끝날 무렵, QA 테스터가 이상한 버그를 가져왔습니다. 모닥불 근처로 떨어진 잎들이 불 밑과 옆에서 타지 않은 채로 있는 것이었죠. 저는 이것이 매우 이상하다는 것에 동의했고, 모닥불 근처에 바람을 배치하여 떨어지는 잎이 반응하게 하여 해결했습니다. 이는 대부분의 지역에서 잎이 불 밖에 있게 해주며, 멋진 디테일이기도 했죠.
결투는 첫 테스트와 초반부터 Ghost of Tsushima에서 시각 효과 팀이 사랑하는 요소가 되었으며, 게임의 디렉터도 게임의 상호작용성과 파티클 시스템을 가장 잘 보여주는 시나리오를 만드는 데에 도움을 주었습니다.
많은 결투에서, 저희는 플레이어와 AI의 움직임에 반응하도록 유지되는 잎을 만들었습니다. 이를 위해 저희가 만든 풀 대체 기술을 용도에 맞게 고치고, 파티클이 정보를 시험하도록 했습니다. 이로 인해 캐릭터가 빠르게 지나갈 때 잎을 멋진 방법으로 표현할 수 있었습니다. 이 부분에서 결투의 목표는 완벽한 사실성이 아닌, 멋진 움직임의 아름다움이었습니다. 사용자 대체 값이 기준점을 넘을 때에 위와 동일한 이벤트 시스템을 사용했고, 그 다음 잎이 낙하하게 만들어 짧은 시간 후에 최초의 움직임을 끝내고 다시 밀릴 수 있게 하였습니다. 그리고 잡음 패턴을 사용하여 스쳐가는 바람에 의해 일시적으로 잎이 땅에서 다시 움직일 수 있게 만들어, 돌풍과 잎의 불안정한 특징을 계산하는 데에 도움을 주었습니다.
다른 결투 형태 역시 역동적인 파티클 시스템을 많이 사용합니다. 예를 들어 흔들리는 등불, 바람에 꺼지는 촛불, 발을 가리는 자욱한 안개, 번개의 일격 등입니다. 저희는 등불에 잎과 비슷한 기법을 적용하여, 물 위에서 움직이고 흔들리는 파티클의 모음과 같이 만들었습니다. 류조와의 두 번째 결투에서 역동적인 촛불을 표현하기 위해, 칼의 움직임에 바람을 추가하여 촛불에 이를 적용했습니다. 바람이 기준점을 넘으면, 이벤트 시스템을 사용하여 불과 빛을 없애고 새로운 연기와 천장의 그을린 효과를 만들었습니다. 추가적으로 플레이어가 구르거나 피하면 바람이 생성되므로, 결투에서 빠른 움직임을 보이면 촛불이 꺼지게 됩니다.
진흙과 피
캐릭터가 달리고, 구르고, 미끄러지고, 떨어질 때 그들의 그물망에 역동적으로 진흙을 추가하게 됩니다. 저희의 세계에 사는 캐릭터가 더러워지는 것은 초반에 확립한 예술적 방향이었고, 게임의 분위기를 만들어 줍니다. 애니메이션 중에 다양한 양의 진흙을 무릎, 팔꿈치, 어깨와 같은 곳에 추가하여 진과 다른 캐릭터가 적당히 지저분한 싸움을 하는 것처럼 보이게 하였습니다. 사무라이 영화의 유명한 전투 장면을 보면 Ghost of Tsushima의 영감을 확인할 수 있습니다. 캐릭터가 발로 진흙을 밀어내고, 땅과의 상호작용을 통해 진흙투성이가 되곤 하죠.
진흙과 같이 전투 중에 캐릭터의 그물망에 역동적으로 피를 추가하여 다친 정도를 보여줍니다. 각각의 충격은 검으로 일격을 가한 곳 주변에 피를 추가합니다. 이는 체계적인 전투 이외에도 컷신이나 연출된 장면에도 사용되었습니다.
캐릭터 모델에 피를 추가하는 것 외에도, 모든 공격은 수천 개의 피 방울과 가닥의 파티클을 만듭니다. 피 방울은 기하학적으로 근처에 떨어지며, 심지어 물에서는 조류에 따라 움직이며 흩어지게 됩니다.
큰 규모로 만들기
규모에 있어 주요 목표는 환경에 어울리는 시각 효과를 만들고 직접 배치할 필요가 없도록 만드는 것이었습니다. 저희는 작은 규모의 팀으로 거대한 세상을 채우기 위해 절차에 의한 배치를 적용할 필요성을 느꼈습니다. 생태 군계가 정말 자주 바뀌기 때문이죠. 모든 시간을 콘텐츠를 유지하는 데에 사용하고 싶지 않았기 때문에, 스스로 수정될 수 있어야 했죠.
성장과 생물 군계
간단한 예로, 저희는 잎이 풀밭이 아닌 숲 지역에서만 떨어지기를 원했습니다. 저희가 시도한 첫 접근법은 매우 단순하여, 섬에서 자라는 나무에게 효과를 부여했죠. 이는 작은 공간에 많은 나무들이 있는 환경이 기하학적으로는 괜찮지만 파티클 시스템에는 너무 과하기 때문에 바로 실패하게 됩니다. 나무에 가까울 때(50 피트 이내)에만 파티클이 나타나게 하여 작은 성공을 거두었지만, 이는 멀리서 지켜볼 때엔 실패처럼 느껴졌습니다. 이 접근법의 다른 문제점은 40 피트 이상의 높이에서 잎이 떨어지고 플레이어가 말을 타고 있으면, 나무를 지나갈 때 시야에 들어오지 않아 잎이 종종 보이지 않는다는 점이었습니다.
저희의 두 번째 접근법은 환경과 같은 방식으로 성장 시스템을 사용하는 것이었고, 동일한 마스크와 표현을 사용하여 같은 공간의 나무 옆에 파티클 시스템을 절차에 의해 배치하였습니다. 이 접근법을 위해 때때로 복잡한 마스크 형태 안에 잎의 원을 겹쳐서 배치해야 했습니다. 원은 마스크 규칙의 가장자리로부터 반경만큼 밀려났고, 이는 성장과 표현 규칙 때문에 잎이 없는 곳과의 큰 차이를 의미했습니다. 저희는 조금 더 작은 배출원을 추가하여 균형을 맞출 수 있었지만, 성능 비용에 있어서는 적합하지 않았습니다. 만약 성장 규칙을 변경하여 어떠한 지역의 밀도와 구멍을 수정하면, 전에 잘 작동했던 숲의 무리가 고장날 수도 있기 때문에 고치기 어려운 영역이기도 했습니다. 이러한 점에도 불구하고 기법은 대체로 잘 작동하였고, 심지어 출하할 뻔한 오류도 있었습니다.
첫 번째 이미지에서는 어느 곳에 나무를 배치할지 정하는 규칙에 근거하여 파티클을 추가하는 성장 도구를 사용하는 것을 보여줍니다. 이는 주요한 오차가 있었고, 저희의 기대치를 채우지 못하게 됩니다. 두 번째 이미지에서 파티클 배출량을 상당히 늘렸습니다. 이는 효과가 있었지만, 다른 곳에 사용할 수 있는 소중한 성능을 차지했습니다. 세 번째 이미지는 저희의 세 번째 접근법인 생물 군계 지도를 보여줍니다. 조명 팀이 실시간으로 접근할 수 있는 환경 성장 마스크의 데이터를 사용하기 위해, 렌더링 프로그래머 중 한 명이 작업했습니다. 이 기술을 활용할 수 있는지 물어봤고 운이 좋게도 그렇게 할 수 있었습니다. 이 능력을 파티클 시스템에 적용하여, 어떤 특정한 파티클이 생물 군계를 만들었는지 알 수 있었습니다. 네 번째 이미지는 파티클이 데이터를 어떻게 읽는지 보여주는 디버그 파티클 시스템입니다. 파란 지역은 풀밭이며 초록 지역은 숲입니다.
첫 단계는 고르지 않았지만, 표본 정보를 사용하여 잡음 패턴을 수정하자 훨씬 자연스러워지고 사용할 수 있게 되었습니다. 이는 지형의 위치, 재료, 바람의 방향 등 다른 특징과 결합하여 저희의 새로운 환경적 분위기 시스템의 핵심이 되었습니다. 어떠한 일반적인 장소에서도, 저희는 수백 개의 증가한 파티클 시스템을 환경에서 제거하고 카메라를 따라가는 단일 시스템으로 대체할 수 있었으며, 이는 환경 생물 군계에 있어 훨씬 정확했습니다.
성장 시스템의 많은 부분을 실시간 생물 군계 시스템에 적용했지만, Ghost of Tsushima의 몇몇 파티클 효과에도 성장 시스템을 활용했습니다. 숲의 가장자리에 있는 새, 해변의 게와 갈매기, 논에 있는 왜가리, 습지의 학이 그 예입니다. 마지막으로 숲 가장자리의 안개층에도 성장 시스템을 사용했습니다. 이 모든 경우에 있어, 환경 팀이 숲과 들판과 해변의 위치를 바꾸어도 시각 효과가 자동으로 따라가게 됩니다.
풍경과 방향 지시 힌트
Ghost of Tsushima에서 풍경은 목표를 찾게 도와준다는 점에서 게임플레이에 중요하고, 분위기와 예술적 연출에 있어서도 중요한 역할을 합니다. 임무를 찾는 일이 가능한 자연스럽게 느껴지도록 하기 위해, 임무의 장소와 도전 콘텐츠를 알려주는 다양한 효과를 만들었습니다. 임무와 도전 콘텐츠를 표시하는 다양한 형태와 규모의 연기, 하이쿠를 지을 기회를 나타내며 빙빙 도는 새, 온천에서 올라오는 증기 등이 그 예입니다.
모두 함께 적용하기
시각 효과는 Ghost of Tsushima의 환경에 있어 필수적인 부분이며, 함께 작동하는 다른 여러 시스템을 포함하고 있는 모든 프레임이 게임의 역동적인 모습을 강화하고 있습니다. 전경에 있는 생물 군계와 동물 요소부터, 배경의 날씨와 콘텐츠 표시까지 시각 효과는 세계에 생기를 불어넣으며 쓰시마 탐험을 즐겁게 만듭니다.
읽어 주셔서 감사드리며, Ghost of Tsushima의 시각 효과를 통해 여러분의 여정을 즐겼으면 합니다. 근간의 기술에 대해 더 알고 싶으시면, 표현 중심의 파티클 시스템에 초점을 맞춰 제가 발표했던 2014년 Game Developers Conference 영상에서 확인할 수 있습니다.
댓글 작성이 종료되었습니다.