유니티는 커넥티드 게임 개발 과정에서 발생하는 어려움을 해결하기 위해 먼저 실시간 멀티플레이어 게임 개발에 주력해왔으며, 이 개발 영역을 민주화하려는 여러 가지 시도를 통해 많은 정보와 아이디어를 얻고 있습니다. 하지만 적합한 신기술을 구축하려면 무엇보다도 모든 개발 단계에서 사용자가 직접 느끼는 피드백이 반영되어야 합니다. 멀티플레이어 커넥티드 게임 분야의 새로운 장을 개척하는 동안 여러분도 함께 개발 과정에 참여하고, 의견을 주시기 바랍니다. 유니티도 성원에 대한 보답으로 업데이트를 자주 출시하고, 모든 정보와 과정을 공유해 드리겠습니다.
지난 블로그 게시물을 통해 UNet 지원 중단을 발표한 이후 보내주신 여러 피드백을 취합하여 앞으로의 계획에 대해 좀 더 상세한 정보를 제공해 드리고자 합니다. 이번 게시물에서는 유니티의 장기적 비전과 올해 가을에 출시되는 첫 릴리스를 소개합니다.
장기적 비전:
유니티는 ‘고성능 최적화’를 통해 멀티스레드를 처리하는 잡 시스템(Job System), Unity 게임 코드 작성을 위한 버스트 컴파일러(Burst Compiler), 데이터 중심의 게임 코드를 작성할 수 있는 엔티티 컴포넌트 시스템(ECS, Entity Component System) 등 개발 중인 여러 기능에 대한 이니셔티브를 소개하였습니다. 이와 같은 요소를 함께 활용한다면 몇 배 더 높은 성능이 보장되어 성능을 크게 개선할 수 있습니다.
여러분이 개발하려는 모든 게임을 규모와 상관없이 지원하기 위해 이러한 이니셔티브를 수립하였습니다. 대용량 지도, 여러 동적 오브젝트나 AI, 심지어 네트워크로 연결된 수많은 플레이어까지 모두 지원 가능합니다.
이 새로운 패러다임에서는 네트워킹 환경에 맞게 컴포넌트를 훨씬 더 쉽게 사용할 수 있습니다. 또한 고도로 구조화된 ECS 데이터를 통해 델타 압축, 보간 등 높은 수준의 시뮬레이션에 적합한 뛰어난 솔루션이 제공됩니다.
유니티는 다음의 주요 원칙을 기반으로 하여 새로운 네트워킹 스택을 구축하고 있습니다.
단기 계획:
단기적으로는 처음부터 다시 새로운 네트워킹 스택을 구축할 예정입니다. 이를 위해 최소한의 전송 계층인 UDP 기반의 송수신 기능을 소스와 함께 프리뷰 패키지 형태로 제공합니다. 바로 사용 가능한 패키지에 포함된 API는 잡 시스템과 호환되며, ECS 기반의 게임과 원활하게 페어링되도록 최적화되어 있지만 둘 다 필수 기능은 아닙니다. 지금은 우선 기본적인 것만 갖춘 시작 단계이며, 게임에 필요한 모든 요소를 구현하려면 네트워크 신뢰성과 시퀀싱 등 여러 중요한 기능이 필요하다는 사실을 감안하고 있습니다.
클라이언트측 예측, 보간, 델타 압축을 위한 완성도 높은 품질의 샘플 코드를 포함하는 FPS 샘플 게임의 전체 소스를 공개할 것이며, 다른 원형에 대해서는 차후에 릴리스할 예정입니다.
장기적 비전:
실시간 멀티플레이어 토폴로지의 현황을 분석한 결과, 전용 게임 서버(DGS) 모델이 실시간 멀티플레이어 게임에 최적의 옵션이라는 결론을 도출했습니다. 이 모델에서 제공하는 기능은 다음과 같습니다.
이러한 이유로 유니티ㅏ Multiplay의 기술을 도입하게 되었습니다. Multiplay의 검증된 전용 서버 오케스트레이션(자동화 관리) 기술을 통해 게임에 맞게 서버 플릿(fleet) 규모를 유연하게 정할 수 있습니다. 또한 Multiplay는 베어메탈(bare-metal)과 ‘버스트 클라우드(burst cloud)’의 하이브리드 호스팅 방식을 통해 비용을 규모에 맞게 최적화합니다. 이러한 기술은 PUBG, 타이탄폴 2(Titanfall 2), 갱 비스트(Gang Beasts)를 비롯한 다수의 게임에서 엔진과 상관없이 실행되는 커스텀 엔터프라이즈 솔루션에 적용되어 이미 검증되었습니다. Multiplay 기능에 대한 자세한 내용은 유나이트 베를린 2018의 Multiplay 관련 세션 녹화본을 참조하세요.
단기 계획:
현재 유니티는 사용자가 직접 액세스할 수 있는 방법으로 Multiplay 기술을 Unity 생태계에 통합하기 위해 노력하고 있습니다. 머지않아 원격으로도 팀원 및 친구들과 게임의 플레이 테스트를 진행할 수 있는 개발 게임 호스팅 서버를 사용할 수 있게 됩니다. 첫 알파 릴리스에는 플릿 프로비저닝, Linux 서버 빌드 업로드 및 배포, 서버 쿼리 프로토콜을 위한 패키지, 그리고 서버 활동을 모니터링할 수 있는 간단한 통계와 로그가 포함될 예정입니다.
장기적 비전:
매치메이킹(Matchmaking)은 여러 플레이어를 서로 매치하여 게임의 즐거움을 최대한으로 높이는 기술로, 생각보다 쉬운 작업은 아닙니다. 게임마다 목표와 매치 규칙이 서로 다르므로 상업용으로 사전 제작된 매치메이킹 솔루션으로는 이러한 특성을 반영하여 지원하기 어렵다는 피드백을 반복적으로 받았습니다.
이 문제를 해결하기 위한 첫걸음으로, 유나이트 베를린에서 Google과 함께하는 오픈소스 매치메이킹 프로젝트 Open Match를 선보였습니다. 이 프로젝트는 확장성을 최우선으로 고려한 설계로 규모에 맞게 기능을 제공하기 위해 추진되었습니다. 이렇게 하면 사용자 프로젝트에 맞게 원하는 대로 매치 로직과 오케스트레이션 모듈을 커스터마이즈할 수 있습니다.
유니티는 Open Match를 중심으로 관리되는 매치메이커를 빌드하고 있으며, 향후에도 발전하고 개선되는 Open Match의 기능을 지속적으로 활용할 것입니다. 또한 Unity 개발자들에게 다음의 고유한 혜택을 추가로 제공할 예정입니다.
단기 계획:
Open Match의 v0.1 버전이 지난 주에 출시되었습니다. 유니티는 앞으로도 지속적으로 Google 및 여러 커뮤니티 구성원들과 협력하여 이 솔루션의 품질과 기능을 개선하고 발전시키기 위해 노력할 것입니다.
또한 곧 Unity 생태계에서 관리되는 매치메이커의 첫 버전을 출시할 예정입니다. 이 버전에는 플레이어 수 구성, 서버 할당 작업과의 원활한 통합, 패키지에 포함된 클라이언트 라이브러리 및 자동 배포 기능이 포함됩니다. 이 버전에서는 플레이어 수가 충족되면 서버가 유연하게 할당되며, 게임 클라이언트가 서버에 연결됩니다.
장기적 비전:
전용 서버를 호스팅할 때 사용자들이 가장 많은 우려를 표하는 부분은 바로 비용입니다. Google 클라우드와 같은 공용 클라우드 환경의 경우 비용은 가상 머신 사양, 사용 시간, 사용된 네트워킹 대역폭(이그레스(egress)), 운영체제 라이선스 비용을 고려하여 책정됩니다. 비용 절감을 위한 방법은 다음과 같습니다.
유니티는 이 5가지 중 아래 4가지 부문에 대한 솔루션을 이미 제시했으며, 현재 서버 런타임 사용 프로필에 대해서도 솔루션을 찾고 있습니다. 새로운 패키지 관리 시스템이 완전히 구현되면 개발자가 최소한의 소비만으로 Unity를 서버 런타임으로 실행할 수 있을 것으로 예상됩니다. 이와 같이 소비 수준이 최소화되면 앞으로는 게임 목적 달성을 위해 서버에서 반드시 필요로 하는 패키지만 포함할 수 있게 됩니다.
단기 계획:
유니티는 ‘헤드리스(headless)’ 모드에서 의도치 않게 실행되고 있는 렌더링, 애니메이션 및 오디오를 제거하는 등 쉽게 해결할 수 있는 작업부터 시작하여 Unity Linux 런타임의 ‘헤드리스’ 버전을 최적화하는 데 주력하고 있습니다. 이를 통해 ‘헤드리스’ 모드가 적용된 Unity 현재 버전에서 안정성을 높이고 가동 시간을 늘리면서 메모리, 빌드 크기 및 CPU 사용을 최소화하고자 합니다.
또한 Unity 2018.3 버전에서는 모든 스탠드얼론 플레이어를 위한 새로운 ‘서버 빌드’ 옵션을 도입하여 개발자 워크플로를 개선했습니다. 이 옵션은 기본적으로 헤드리스 모드로 실행되며, 새로운 UNITY_SERVER 정의를 통해 서버 스크립트 로직을 분리할 수 있습니다.
Is this article helpful for you?
Thank you for your feedback!