▲ 유니티 허쉬 반살 PM(좌), 에릭 불레이 소프트웨어 개발자(우)

유니티는 지난 15일, 멀티플레이 테크 데모 '메가시티 메트로'를 출시했다. 유나이트 2023에서 공개된 '메가시티 메트로'는 유니티가 DOTS와 ECS를 발표하면서 제시한 데모 '메가시티'를 기반으로 한 멀티플레이 데모 게임이다.

2019년 공개됐던 '메가시티'는 당시 기존의 오브젝트 기반 방식이 아닌 데이터 기반 기술 스택으로 수백만 개 이상의 오브젝트를 동시다발적으로 빠르게 렌더링하는 가능성을 보여주었다. 그렇다면 이를 기반으로 멀티플레이 기능을 더한 '메가시티 메트로'는 개발자들에게 유니티의 어떤 멀티플레이 관련 기능을 보여주고자 한 것일까? GDC 2024에서 유니티의 허쉬 반살 PM과 에릭 불레이 소프트웨어 개발자는 메가시티 메트로에 적용된 기술, 그리고 앞으로 유니티6에서 선보일 멀티플레이 게임 개발 관련 기능을 짚어나갔다.


멀티플레이 게임은 싱글플레이에서 얻을 수 없는 유저 간의 상호작용, 그로 인해 발생하는 협동과 경쟁의 경험을 제공한다. 이러한 경험은 유저들이 각각 기술이나 상황이 다르기 때문에 개발적으로는 추가로 뭔가 하지 않아도 이전과는 다른 재미를 제공할 수 있다. 반면 이런 변동성, 비일관성을 고려해야 하기 떄문에 싱글플레이와는 다른 복잡한 기술들이 요구된다.

조금 더 구체적으로 이야기하자면 각 유저 간의 실력 차이부터 유저들의 네트워크 모델 차이, 레이턴시 등, 싱글플레이 게이믈 개발할 때 고려하지 않아도 되는 요소들을 개발 과정에서 신경써야 한다. 서버나 멀티플레이 관련 부문의 전문 인력까지 보유할 수 있는 상황이면 괜찮지만, 그렇지 않으면 이 분야에 신경을 쓰다가 게임의 핵심 메커니즘이나 콘텐츠 등에 소홀할 여지가 있다.

물론 유니티는 '메가시티 메트로' 이전에 멀티플레이 게임 개발을 위한 넷코드 솔루션을 지원해왔다. P2P 협동에 게임오브젝트 대응 넷코드로 개발한 '쉽 오브 풀즈'나 엔티티 대응 넷코드로 대규모 멀티플레이를 구축한 '히스테라' 등, 소규모 개발 인력으로 유니티의 멀티플레이 관련 기능을 적극 활용해 멀티플레이를 쉽게 구축한 사례도 있다.

▲ 메가시티 메트로 데모 이전에도 소수 인원이 성공적으로 멀티플레이 게임을 구축한 사례는 있었다

그러나 엔티티 대응 넷코드는 DOTS와 ECS부터가 최근에 유니티에 도입된 만큼, 개발자들에게 다소 생소한 영역이기도 하다. 아울러 이를 활용한 넷코드는 물론, 대규모 멀티플레이를 위해 서버를 구축하거나 혹은 매칭을 하는 등 추가 사항까지 고려해서 개발할 필요도 있었다. 그래서 유니티는 엔티티 대응 넷코드 기반에 100명 이상의 플레이어가 함께 플레이하는 '메가시티 메트로'를 직접 제작하고, 이에 활용된 기술을 공개했다.

한편, 지난 메가시티 데모와 '메가시티 메트로의 데모는 몇 가지 변경점이 있었다. 최근 트렌드인 크로스플랫폼, 멀티플랫폼을 원활하게 지원하기 위해 유니버설 렌더링 파이프라인으로 옮겼으며, 물리 및 그래픽 또한 이에 맞춰서 조정했다. 이렇게 구축한 틀에 넷코드를 넣은 것으로 끝이 아니었다. 엔티티 대응으로 짠 이유는, 백 명 이상의 플레이어가 접속했을 때 그 각각의 플레이어를 오브젝트 프리팹으로 불러오면 처리가 늦어지기 때문이었다. 그로 인해 지연이 발생하는 것을 막고자 데이터에서 미리 정리된 유저의 정보를 동시다발적으로 가져오고, 필요한 것부터 바로 불러와서 지연을 줄였다.





▲ 메가시티 메트로 데모는 유니티가 직접 자사 엔진으로 대규모 멀티플레이 게임을 구축하는 정석을 담았다

이러한 근간 위에 앞서 언급한 서버 호스팅, 매치메이킹, 그외에 유저들이 '멀티플레이 게임'하면 당연히 있어야 한다고 여기는 모든 것들을 구현해야했다. 이 부분에서 유니티는 그간 개발자들을 돕기 위해 유니티가 지속적으로 준비해왔던 솔루션을 데모에 적극 활용했다. 계정 보안 문제는 유니티의 플레이어 인증 솔루션을, 매칭은 매치메이커로 구현했다. 매치메이커의 밸런스는 클라이언트에 내장된 리더보드의 정보를 샘플러로 추출해 클라우드로 이전, 그 정보를 토대로 각 유저의 스킬 격차 지표가 100 이상이 넘지 않도록 했다. 서버는 유니티 클라우드 기반의 데디케이트 서버를 구축했다.


▲ 매치메이킹 시스템 등 멀티플레이 경쟁 게임에서 빠질 수 없는 기능을 추가해둔 한편



▲ 게임 서버 호스팅을 위한 서버 빌드와 업로드 절차와 그 내부 로직 구조도 공개했다

위에서 보듯 메가시티 메트로는 유니티에서 지원하는 기술들을 조합해 대규모 인원이 한 곳에서 플레이하는 멀티플레이 게임을 완성하는 모범답안이다. 그간 곳곳에 흩어져있던 유니티의 솔루션이나 네트워크 기술을 한 곳에 모으고, 멀티플레이에서 기본적으로 갖춰야 할 요소들을 어떻게 만들었는지 보옂었기 때문이다.

그러나 메가시티 메트로에서 보여주지 못한 것, 그리고 추가되지 않은 솔루션도 있다. 먼저 메가시티 메트로에는 로비와 피어 투 피어 서버 방식을 지원하지 않는다. 특히 로비는 게이머 간의 커뮤니케이션이나 시작 전 준비, 로딩 중 대기하는 공간 등 여러 가지로 활용되는 만큼 일부 개발자들은 아쉬운 평을 말하기도 했다.

또한 유저 간의 바람직하지 못한 채팅과 유해성 문제를 막기 위한 솔루션은 아직 적용되지 않았고, 메가시티 메트로의 데모가 플레이어 간의 PVP로 이루어지기 때문에 협동을 중시하는 설계 방식에 참고하기 어렵다는 점도 문제였다. 아울러 100명 단위의 대규모 인원이 들어가는 멀티플레이 게임이 아닌, 소규모 게임에 쓰기에 엔티티 대응 넷코드의 효율은 높지 않았다. 다만 이 부족한 부분을 미리 해소하기 위해 유니티는 유니티 게이밍 서비스 샘플에 오브젝트 대응 넷코드로 제작한 샘플 '보스룸'이 이미 발표된 바 있다.

▲ 메가시티 메트로에서 보여주지 못한 로비 외에도

▲ 데모가 아닌 라이브 서비스를 위한 멀티플레이 게임 관련 기능도 꾸준히 개발하고 있다

유니티6에서는 한 발 더 나아가, 이런 멀티플레이 관련 기능을 '멀티플레이 센터'로 한 곳에 모아서 접근성을 높일 예정이다. 아울러 이터레이션을 효과적으로 줄이고 테스트할 환경을 만들기 위해 테스트 단계에서 멀티플레이 모드를 지원한다. 또한 서버 최적화나 워크플로우 증진, 멀티플레이 서비스 구축에 필요한 SDK를 한 곳에 모은 멀티플레이어 서비스 SDK도 유니티6에서 지원하게 된다. 반살 PM과 불레이 개발자는 "그간 유니티의 뛰어난 멀티플레이 기술을 한 곳에 보기 어려웠지만, 6에서는 더 발전된 기술을 더 편하게 찾아서 구현할 수 있을 것"이라면서 "메가시티 메트로는 이에 앞서 그 기능을 총망라, 어떻게 적용되는지 그 정석을 보여준 샘플"이라고 강조했다.