엔씨소프트의 PC MMORPG '쓰론 앤 리버티 (이하 TL)'에서는 이용자의 게임 플레이에 깊이를 더해줄 수 있는 거대 탑승물인 '배틀캐리어와 '기간트리테'가 등장한다.
배틀캐리어와 기간트리테는 기존 MMORPG에서는 볼 수 없었던 새로운 형태의 탑승물로, 전자는 공성전에서 공성 병기로, 그리고 후자는 교통수단으로 활용된다.
TL은 해당 거대 탑승물을 움직이는 지형으로 구현하면서 이용자에게 색다른 경험을 제공할 수 있게 됐는데, TL의 상징물과도 같은 배틀캐리어와 기간트리테가 어떻게 구현할 수 있었는지, 그리고 이를 구현하기 위해 직면하게 된 과제를 어떤 방식으로 풀어나갔는지에 대해 '넥슨 개발자 콘퍼런스 2025 (NDC25)'에서 소개했다.
해당 강연은 엔씨소프트 퍼스트스파크 게임즈의 임재호 서버 프로그래머와 이재윤 클라이언트 프로그래머가 진행했으며, 임재호 개발자는 공성병기인 배틀캐리어의 탄생 과정을, 그리고 이재윤 개발자는 기간트리테와 개발 노하우를 공유했다.
TL에는 엘리베이터와 배, 관람차와 같은 움직이는 지형이 존재하는데, 앞서 언급한 바와 같이 배틀캐리어는 공성전에서 활용하는 공성병기로 이용자가 골렘으로 변신해 직접 지형을 들어 자유롭게 이동할 수 있는 것이 특징이다. 지형으로 변신하거나 이동 중일 때도 자유롭게 탑승하고 하차할 수 있으며 전투까지 가능해 플레이의 흐름을 끊지 않는 몰입감을 제공한다.
다음으로 기간트리테는 하늘을 나는 고래 형태의 이동 지형으로, 기존 게임의 비공정과 유사해볼 수 있으나 단순한 탈 것이 아닌 애니메이션되는 생명체로 구현되는 시도가 이뤄진 요소다. 이동 동선 또한 월드의 풍경을 감상할 수 있도록 설계됐다.
두 이동 지형은 모두 PvP에 활용되는 거대 탑승물 요소이기에 서버 검증이 핵심적으로 이뤄져야 했으며, 기간트리테의 경우에는 감성 전달을 위한 애니메이션도 중요했다.
용도는 다르나, 배틀캐리어와 기간트리테는 탑승 가능한 지형이라는 공통점이 있기에 서버에서는 같은 기반 위에서 구현됐다. 배틀캐리어는 월드에 캐리어를 미리 배치해 플레이어 조작으로 골렘으로 변신해 합체할 수 있으며 합체하는 동안 내부 및 외부 요소로부터 자유로울 수 있게 했다.
성벽까지 자유롭게 걸어서 이동이 가능하며, 분절 없는 전투와 탑승이 가능하다는 것이 특징이다. 아울러 떨어지더라도 갈고리로 재탑승도 가능하다. 배틀캐리어가 원하는 위치에 도달하면 올리기 및 내리기 스킬을 사용해 성벽을 넘어갈 수 있다.
이와 같은 배틀캐리어를 서버에 구현하기 위한 목표를 실현하기 위해 성능, 자유도 , 검증으로 나뉘어 진행했다. PvP 기준으로 이동과 전투 검증을 먼저 진행하고, 자유로운 전투와 탑승, 그리고 플레이어가 들어서 자유롭게 이동 가능한 지형의 자유도를 살펴봤다. 마지막으로 오픈월드 1000vs1000 공성전에서 활용할 수 있는 성능을 확인했다.
구현을 위해서는 지형 데이터를 확인해야 했는데, 일반 지형과 동일한 방식의 지형 데이터를 활용해 합쳐 변신 및 이동, 내리기 등이 가능했다. 배틀캐리어에 성능을 담기 위해 탑승한 플레이어와 캐리어, 골렘 플레이어로 3개 층 구조로 설계했다. 즉 멀티스레드 구조인 것이다.
2층 구조로도 가능하지만, 배틀캐리어는 월드에 미리 배치된 독립적인 서버 오브젝트로서 독립적으로도 탑승할 수 있어야 했기에 3층 구조로 이뤄지도록 했다.
TL의 서버는 액터 모델을 행위자가 자신의 상태만 직접 수정할 수 있으며, 서로에게 영향을 주기 위해서는 반드시 메시지를 통해서만 소통하는 액터 모델을 활용했다. 덕분에 모든 액터가 서로 다른 스레드에서 적용된다. 서로 다른액터와 서로 다른 스레드로 동작하면서 마치 지구는 계속 움직이고 있지만 우리는 지구가 움직이고 있다는 사실을 직접 움직이지 않는 이상 인지 할 수 없는 것과 동일한 효과를 얻게 된다.
특히 로컬 좌표 값이 변경될 때만 클라이언트에게 전달되는 내부 상호작용 방식을 활용했으며, 다른 좌표계와 상호작용할 때에는 글로벌 좌표를 대입하면서 외부 상호작용도 이뤄지도록 구성했다. 따라서 필요할 때만 계산하도록 하면서 효율성을 살린 것이다.
배틀캐리어로 인한 애로사항도 있었다. 좌표계의 변환 문제가 대표적으로, 이동 및 탑승은 클라이언트 요청으로 부터 시작하나, 이동 스킬 및 밀쳐내 기스킬과 같이 100% 서버만으로 경로를 생성해야 하는 상황에서는 충돌 계산 및 변환, 관리가 필요했다. 가령 배틀캐리어가 움직이는 동안에 캐릭터가 탑승을 시도할 수 있기 때문이다. 이에 중간 지점들의 좌표계를 모두 최종 목적지 좌표계 기준으로 경로를 생성하는 해결책을 적용하게 됐다.
결론적으로 MMORPG에 적합한 검증과 성능 목표를 달성하기 위해 대용량의 정밀한 지형 데이터 사용했으며 액터 모델과 계층 구조, 로컬 좌표계를 도입해 배틀캐리어 서버를 구현했다는 것이다. 아울러 엘리베이터와 관람차, 배 등 움직이는 기믹으로 다양하게 활용할 수 있게 됐으며, 싱글 게임 수준의 콘텐츠를 MMORPG에서 구현할 수 있는 가능성을 확인했다.
다음으로 기간트리테는 TL의 상징과도 같은 존재로, 월드 어디에서든 그 모습을 확인할 수 있고 이용자가 직접 탑승하거나 다양한 아이템을 제공하는 등 다양한 역할을 수행하는 지형 탑승물이다.
기간트리테의 시작은 기획과 아트, 테크팀의 긴밀한 논의로 제작됐다. 각 담당팀은 기간트리테에 기대하는 바와 상상하는 결과물이 달랐다. 기획팀은 월드 전역을 날아다니며 다수의 유저가 탑승하 객체를 원했으며, 아트팀은 비주얼적으로 압도적인 결과물과 유려한 애니메이션을 원했다. 테크팀의 경우에는 개발 단계에서 여타 게임에서 제공하는 수준의 시스템으로 제한했다.
하지만 궁극적으로는 TL의 상징물과도 같은 존재라는 동일한 지향점을 가지고 있었기에 관점을 차츰 맞춰갔다. 논의를 통해 기간트리테가 월드 어디에서나 목격할 수 있는 거대 탑승물로 TL의 상징적인 존재를 목표로 했다.
기간트리테 제작 시 당면한 과제로는 크게 레퍼런스 부족과 동기화, 리소스 제작 방식 등이 있다. 새로운 시도가 이뤄진 요소인 만큼 적절한 레퍼런스가 없었다. 비슷한 콘셉트의 레퍼런스가 존재하기는 했으나 TL과는 부합하지 않았다.
또 서버와 클라이언트가 어느 수준까지의 정확도를 가진 위치 동기화를 제공할 것인지에 대한 방법론적인 면에서도 일반적인 지형의 동기화와 접근이 달라야 했다. 리소스의 경우 물리 엔진에서 애니메이션되는 충돌체에 대한 처리를 제공하지 않기에 기존과 다른 접근 방식이 필요했다.
우선 서버의 동장과 서버 클라이언트 간의 동기화를 정해두고 작업에 돌입했다. 기본적으로 서버에서는 애니메이션만 제외하면 기간트리테는 배틀캐리어와 구조적으로 동일하다고 정의했다. 애니메이션을 추가할 경우 서버용 애니메이션 데이터를 추가로 관리해야 하기에 정확한 위치 동기화를 기대하기 어려웠다. 결론적으로 서버에서는 기간트리테의 애니메이션을 하지 않기로 했다.
비주얼적인 측면에서 최초에 테크팀은 아트팀에 최대한 천천히 움직이고 적은 애니메이션으로 제작해달라고 제안했다. 하지만 테스트 모델은 기존에 추구했던 압도적인 느낌이 없었고, 굉장히 먼 하늘에서 이동하는 객체이다 보니 웬만한 애니메이션으로는 움직이는 느낌을 제공하지 못했다. 결국 최종 버전에서는 전장이 400m 정도에 날개가 역동적으로 움직이도록 하면서, 위아래로 20m 정도 씩움직이는 객체가 됐다.
개발 시 기간트리테에 올라탈 수 있도록 구현하는 것부터 시도했다. 하지만 물리 엔진(스켈레탈 메시)에서는 애니메이션되는 충돌체를 지원하지 않는다는 과제가 있었으며 이를 해결 하기 위해 스켈레탈 메시 자체 컬리전을 끄고, 지형이 될 스태틱 메시를 관절마다 붙이는 작업을 진행했다.
또 비주얼과 컬리전 간 이격이 너무 커지는 문제로 인해 애니메이션될 수록 공중에 뜨거나 땅 속에 묻히는 현상이 있었다. 이에 컬리전을 쪼개서 최대한 촘촘히 붙이는 방식을 시도했다. 컬리전의 조인트 부분에 빠지는 문제는 본을 기간트리테 지면 쪽으로 최대한 옮기고 조인트 부분의 컬리전을 보강 및 평평하게 했다.
과한 애니메이션 시, 탑승한 캐릭터의 미끄러짐 현상이 발생했는데, 본들의 애니메이션이 일정 각도 이내에서 이뤄지도록 하고, 물리엔진에 의한 슬라이딩 발생도 이동 패킷으로 공유하도록 서버와 동기화했다.
좌표 동기화도 과제였다. 서버는 애니메이션 시퀀스의 첫 프레임을 기준으로 한 컬리전 데이터만 가지고 있었기 때문이다. 이에 각기 다른 좌표계 변환이 필요했다. 내 PC에서의 월드 좌표를 애니메이션된 로컬 좌표로 변환하고 0프레임 로컬 좌표를 애니메이션 로컬 좌표로 바꿔 월드 좌표로 변환했다.
TL의 배틀캐리어는 전투 가능한 이동 지형으로, 더욱 다이나믹한 다대다 전투 상황을 제공하면서 전략적 위치 변화를 통해 적극적으로 다양한 유저의 개입을 유도했으며 소위 말뚝 딜이라는 형태의 전투에서 벗어나기 위한 장치로 활용되는 효과를 가져왔다.
아울러 MMORPG에서 애니메이션 되는 움직이는 지형, 즉 기간트리테를 제작하는 새로운 시도를 통해 틀에 박힌 배와 엘리베이터, 함선에서 한 걸음 더 나아가게 됐으며, 이용자들에게 색다른 경험을 제공할 수 있었다.
임재호 개발자는 여전히 도전 과제는 남아있는 상태라고 밝혔다. 바로 서버와 클라이언트 간의 시야 및 거리 문제를 꼽았다. 현재 기간트리테는 비 전투존으로 설정하면서 근거리 인터랙션만 제한적으로 허용하고 있는 중이다. 그는 "이번 강연이 제2의 기간트리테를 더욱 멋지게 만드는 계기를 제공하는 자리가 됐으면 한다"라고 전했다.
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.