▲ 유니티 로랑 기버트 매니저

유니티는 20일부터 24일까지 샌프란시스코 모스콘 센터에서 개최되는 GDC 2023에 참가, 21일 유니티 2023 로드맵 세션을 시작으로 여러 세션에서 개발자들에게 그래픽 및 최적화뿐만 아니라 멀티플레이 게임의 설계까지 도움이 되는 다양한 기술 소개 및 적용 사례를 소개했다.

그 중 하나가 다량의 오브젝트를 더욱 효율적으로 처리할 수 있는 새로운 컴포넌트 시스템이자 데이터 기반 프레임워크인 ECS였다. 이를 싱글플레이뿐만 아니라 멀티플레이 게임에서도 활용해 대량의 오브젝트들이 출몰하는 환경에서 다수의 유저가 동시에 원활히 움직일 수 있는 기술을 소규모의 인원으로도 쉽게 구현할 수 있도록 하는 것이 유니티의 지향점 중 하나다. 이러한 기술을 소개하는 것에 그치지 않고 실제 활용 사례를 보여주고자 유니티의 로랑 기버트 매니저와 선블링크의 저스틴 라라비 CTO가 GDC 2023 무대에 올랐다.


이미 여러 차례 발표를 통해 알려진 것처럼, ECS는 ‘엔티티 컴포넌트 시스템’의 약자로, 데이터 지향 기술 스택의 근간을 이루는 시스템이다. 기존 유니티는 오브젝트 기반으로 설계됐는데, 그러다보니 다량의 오브젝트를 생성하거나 관리하는 것이 다소 제약이 있었다. 반면 데이터 지향인 ECS가 적용되면 일일이 오브젝트를 생성하지 않고 데이터 체계로 관리, 다수의 오브젝트를 더 원활하게 처리할 수 있게 된다.

유니티 2022부터 지원을 시작한 ECS는 기존의 오브젝트 기반 시스템과도 호환이 된다. 그래서 개발자들이 더욱 유연하게 게임을 설계할 수 있게끔 했다. 그뿐만 아니라 ECS는 대규모 데이터 스트리밍을 위해 구축된 만큼, 엄청나게 많은 수의 유닛이 한꺼번에 움직이는 환경은 물론이고 방대한 오픈월드 구축, 그리고 여러 유저가 동시에 접속하는 멀티플레이 게임에서도 높은 효율을 보여준다. 특히 ECS에 호환하는 넷코드가 도입되면서 소수의 인원으로도 멀티플레이 게임을 개발하기가 더욱 쉬워졌다.


작년 12월 6일 10명 정도 규모의 인디 게임 스튜디오인 선블링크가 개발, 출시한 '히로이쉬'가 ECS를 적극 활용해 소수의 인원이 성공적으로 멀티플레이 게임을 구축한 사례 중 하나였다. '히로이쉬'는 MOBA 요소가 결합된 라인형 RTS 게임으로, 각 유저는 영웅과 덱을 편성해 서로의 본진을 깨기 위해 치열하게 전투를 펼치게 된다.

그간 시중에 존재했던 모바일 RTS류가 아닌, PC와 닌텐도 스위치 등 멀티플랫폼에서 다양한 유형의 게이머들이 코어한 게임플레이를 즐길 수 있도록 기획한 만큼 여러 가지 도전적인 과제들이 있었다. 라라비 CTO는 이를 구축하는 과정에서 DOTS로 다양한 기능을 구축할 수 있었다고 설명했다. 통상 DOTS, ECS는 다수의 오브젝트를 더욱 원활하게 구현할 수 있다는 점만 강조됐다. 그러나 라라비 CTO는 구현뿐만 아니라 관리 차원에서도 훨씬 편해졌다고 설명했다.

▲ 선블링크 저스틴 라라비 CTO

▲ 10명 규모의 개발팀 선블링크가 ECS를 활용해 구축한 멀티플레이 RTS, '히로이쉬'

DOTS 도입 이전에는 유니티에서 오브젝트 혹은 프리팹을 찾아서 그 아래에 묶여있는 것들을 체크해나가야 했다. 그러나 DOTS가 도입되고 ECS를 지원하면서 오브젝트를 일일이 찾지 않고 데이터를 체크해서 정리하는 식으로 파이프라인이 간소화됐다. 오브젝트뿐만 아니라 UI, AI, 애니메이션 등 여러 부문에서 지원하는 만큼, 오브젝트의 하위창을 따로 살펴보면서 버그픽스를 하는 수고도 덜었다.

'히로이쉬'는 여타 라인형 RTS와 차별화를 주기 위해 라인이 주기적으로 바뀌는데, 이때 유닛이 서로 충돌을 피하다가 엉키는 일도 잦았다. 싱글플레이에서는 무난했지만 멀티플레이가 되면서 게임 스케일이 확장됐는데, 그러면서 더더욱 오류도 자주 일어났다. 이에 선블링크에서는 ECS를 활용하고 DOTS로 전환, 데이터로 로직을 일괄 관리해서 혼선을 피했다.

▲ 차별화를 주기 위해 라인도 복잡하게 설계하고 주기적으로 바뀌는데

▲ 그러다보니 유닛 네비게이션과 AI 등 여러 가지를 신경써야만 했다

또한 지연 현상을 최소화하기 위해서 ECS 넷코드 도입도 서둘렀다. 유닛이 생성되어 루트를 찾고, 아군끼리는 서로 부딪히지 않게 피하면서 적에게 돌진하고 전투하는 등 다양한 동작들을 라이브러리 기반으로 수행하면 컴파일러를 활용해도 딜레이를 줄이는 것에 한계가 있었다. 영웅을 포함해 플레이어가 각자 최대 30기의 유닛을 소환하게 되는데, 이는 최대 120기의 유닛이 한 전장에서 맞붙는 걸 상정해야 한다는 뜻이었다. 그뿐만 아니라 네트워크 환경까지 고려해야 하는데, 10명 규모의 개발팀이 그 모든 것을 상정해서 구축하는 것은 기존의 방식으로는 쉽지 않았기 때문이었다.


▲ 여기에 멀티플레이 환경에서 지연도 고려, 오브젝트 기반이 아닌 더 빠르고 확실한 방법이 필요했다

물론 DOTS를 기반으로 하는 ECS는 프로그래머가 아닌 기획자, 아티스트들이 쉽게 이해할 수 있는 분야가 아니었다. 그래서 선블링크에서도 적용하기 전에 내부에서 의견 충돌을 겪곤 했다. 특히 데이터는 오브젝트와 달리 시각화되지 않은 만큼, 이해도 차이가 발생할 수밖에 없었다.

이에 유니티가 오브젝트 기반에서 활용한 프리팹 개념을 ECS에서도 적용한 엔티티 프리팹을 활용, 기획자와 아티스트들의 이해를 도우면서 게임을 구축해나갔다. 이러한 편의성에 힘입어 선블링크는 10명이서 PC, 모바일, 닌텐도 스위치에 대응하는 멀티플레이 기반 라인형 RTS을 완성하고 출시할 수 있었다.

▲ 데이터 자체는 시각화된 것이 아니지만, 아티스트의 편의를 위해 시각화된 형태도 지원한다

유니티 ECS 패키지는 2022.2 테크스트림부터 지원하며, 자세한 정보는 유니티 홈페이지를 통해서 확인할 수 있다.