스릴 넘치는 멀티플레이어 Histera의 세계 융합 | Unity

이 새로운 멀티플레이어 FPS에서 DOTS 성능 향상으로 플레이어를 시공간을 넘나들며 이동시키는 StickyLock의 방법을 알아보세요.
소규모 개발팀이 어떻게 혁신적인 게임 메커니즘을 빠른 속도의 1인칭 슈팅 액션에 도입할 수 있었을까요? StickyLock 팀은 경쟁이 치열한 FPS 시장에서 승리하기 위해서는 새로운 시도가 필요하다는 것을 알고 있었습니다. 서로 다른 시대를 연결하는 포털로 시작된 글리치는 새로운 맵과 함께 플레이어를 다른 시대로 이동시키는 게임 메커니즘인 글리치로 발전했습니다. 하지만 이 대담한 비전을 실현하려면 놀라운 성능, 견고한 멀티플레이어 인프라, 혁신적인 그래픽 요소, 그리고 이 모든 것을 하나로 묶을 수 있는 강력한 파트너가 필요했습니다.
This content is hosted by a third party provider that does not allow video views without acceptance of Targeting Cookies. Please set your cookie preferences for Targeting Cookies to yes if you wish to view videos from these providers.
FPS 장르를 새로운 차원으로 끌어올리다
테크니컬 아티스트이자 프로그래머에서 프로듀서로 변신한 자멜 지아티는 StickyLock 팀과 함께 히스테라 작업을 시작했을 때 야심찬 프로젝트가 시작되었다는 것을 알았습니다. 이 박진감 넘치는 8x8 1인칭 슈팅 게임은 성능 저하 없이 실시간으로 겹치는 맵과 타임라인에서 플레이어를 이동시킵니다.
노련한 Unity 개발자인 제이멜은 맵과 캐릭터 컴포넌트를 즉시 교체할 수 있는 확장 가능한 프로세싱과 백엔드 기능이 필요하다는 것을 알고 있었습니다. 이를 위해 개발팀은 성능 향상을 위해 유니티의 데이터 지향 기술 스택(DOTS)과 엔티티 컴포넌트 시스템(ECS)을 채택하고, 멀티플레이어 백엔드 인프라를 처리하기 위해 유니티 게임 서비스(UGS)를 활용했습니다.
결과:
- 수십만 개의 엔티티와 컴포넌트(한 레벨에만 23만 개 이상)를 처리할 수 있는 효율적이고 성능이 뛰어난 백엔드 프레임워크입니다.
- UGS를 사용하여 수백에서 수천 시간의 개발 시간 절약

글리치로 플레이어를 평행 시대로 이동시키기
히스테라의대표적인 기능은 레벨 내 한 구간이 완전히 다른 시대로 전환되어 고유한 경기장, 행동, 무기 세트가 등장하는 글리치 게임플레이 메커니즘입니다. 이러한 갑작스러운 설정의 전환은 게임에 많은 흥미를 불러일으켰지만, StickyLock 팀에게는 도전과제를 안겨주기도 했습니다.
This content is hosted by a third party provider that does not allow video views without acceptance of Targeting Cookies. Please set your cookie preferences for Targeting Cookies to yes if you wish to view videos from these providers.
글리치는 세 가지 단계로 진행됩니다. 첫 번째 단계인 예상은 플레이어에게 글리치가 임박했음을 시각적으로 알리는 동시에 뒤에서는 에셋 전환을 관리할 준비를 하는 단계입니다. 다음 단계는 해체 단계로, 현재 시대의 비주얼이 다음 그래픽 세트를 위해 자리를 비우기 시작합니다. 이 전환 과정에서 새 시대의 지형이 형성되기 시작하면 기존 시대의 충돌이 제거됩니다.
새로운 시대로 접어들면서 플레이어는 새로운 비주얼과 충돌 구역을 엿볼 수 있으며, 독특한 텍스처 맵을 사용하여 탐색 가능한 지역과 임박한 충돌 구역을 묘사하여 플레이어가 위험 지점을 피할 수 있도록 안내합니다. 플레이어가 이러한 지역에 있는 것을 발견하면 게임에서 피해를 입혀 이동을 유도하며, 전환 후에도 플레이어가 해당 지역에 남아 있으면 치명적인 피해로 확대됩니다. 이는 극적인 충격파 효과로 정점을 찍으며 새로운 시대의 비주얼과 충돌을 공고히 하여 글리치 시퀀스를 완성합니다.
글리치를 제작하려면 트랜지션, 플레이어 이동, 충돌 관리를 위한 고급 시스템이 필요했습니다. 유니티의 유연성 덕분에 팀은 이를 자동화하는 커스텀 툴과 스크립트를 개발하여 플레이 도중 맵 전체가 이동하더라도 원활한 게임플레이를 보장할 수 있었습니다. 자멜은 "독특한 전장"이라며 "우리는 이를 제대로 구현하는 데 정말 집중했습니다."라고 설명합니다.

서브씬으로 워크플로 간소화하기
글리치는 기술적으로 구현하는 것뿐만 아니라 시각적 일관성이나 게임플레이 흐름을 방해하지 않으면서도 레벨에 녹아들어야 했기 때문에 큰 도전이었습니다. 팀은 유니티의 서브씬 컴포넌트를 사용하여 이 균형을 맞췄습니다.
서브씬은 다른 씬을 참조하는 게임 오브젝트 모노비헤이비어입니다. 이는 엔티티 씬이라고 하는 엔티티 표현으로 변환됩니다. 서브씬은 열림, 닫힘, 언로드 등 다양한 상태로 존재할 수 있으며 이 상태는 메모리 및 가시성 로드에 영향을 줍니다. 개방형 서브씬에서는 게임 오브젝트를 실시간으로 수정하고 변환할 수 있으며, 폐쇄형 서브씬에서는 엔티티 표현을 메모리에 로드할 수 있습니다. 이 설정은 엔티티 데이터를 효율적으로 처리하여 복잡한 씬을 관리하고 성능을 최적화하는 데 도움이 됩니다.
"사소해 보이는 디테일이 큰 차이를 만들어냅니다."라고 Jamel은 말합니다. "단일 씬 내에서 여러 맵 섹션을 처리할 수 있습니다. 이 접근 방식은 아티스트가 중복 없이 개별 서브씬에 집중할 수 있도록 하여 워크플로를 간소화할 뿐만 아니라 충돌을 최소화합니다. 특정 시간에 어떤 하위 장면이 활성화되어 있는지 명확하게 파악할 수 있습니다."

지연 문제 해결 및 높은 틱률에 대한 최적화
"글로벌 멀티플레이어 경험을 제공하는 것은 UGS를 통해 해결할 수 있는 가장 큰 과제입니다."라고 자멜은 말합니다. "차량 설정 및 관리에 대한 걱정을 덜어주는 동시에 전 세계 여러 지역에 적절한 서비스 품질을 제공할 수 있도록 보장합니다."
StickyLock 팀은 다양한 핑 레벨을 가진 플레이어를 위한 경험의 균형을 맞추기 위해 열심히 노력했습니다. 고핑 플레이어는 게임에서 지연을 고려하여 더 공정한 타격 등록이 가능하므로 지연 보상의 혜택을 받을 수 있습니다. 하지만 서버 "되감기"로 인해 저핑 플레이어가 엄폐물 뒤에서 공격을 받을 수 있으므로 부정적인 영향을 미칠 수 있습니다. 멀티플레이 호스팅 대시보드의 배치 및 성능 인사이트와 Netcode for 엔티티 패키지의 즉시 사용 가능한 예측, 롤백, 랙 보정 기능은 모든 플레이어에게 보다 원활하고 공정한 멀티플레이어 경험을 제공하는 데 핵심적인 역할을 했습니다.
Jamel은 비용 증가 없이 더 높은 틱 속도로 운영하기 위해 서버를 튜닝하는 데 많은 노력을 기울였다고 강조합니다. 유니티 팀의 경험을 통해 최적화 기회를 파악할 수 있었고, 서버를 구성하여 팀이 실시간으로 신속하게 조정할 수 있었습니다. 마지막으로, 유니티의 규칙 기반 매치메이킹을 통해 StickyLock 팀은 게임 디자인과 대기 시간 및 지연 시간 간의 균형을 맞출 수 있었습니다.
"서버 RAM 및 CPU 사용량에 대한 인사이트를 얻고, 여러 지역에서 고품질 서비스를 유지하며, 매치메이킹 규칙의 유연성과 함께 서버 기능을 관리하는 것은 모두 우리에게 필수적인 일입니다."라고 Jamel은 말합니다. "유니티는 게임플레이 개선과 비용 관리 사이에서 불리한 트레이드오프를 피할 수 있도록 항상 성능을 향상할 수 있는 방법을 찾고 있습니다."

DOTS로 성능 한도 높이기
시간을 가로지르는 게임플레이는 매끄러운 전환을 넘어 멀티플레이어 프레임워크에서 겹치는 평행 세계를 제작하는 데 있어 엄청나게 높은 성능을 구현해야 하는 과제가 추가됩니다. 이를 위해 StickyLock 팀은 엔티티 컴포넌트 시스템(ECS) 패키지, 피직스, C# 잡 시스템, 버스트 컴파일러로 구성된 유니티의 데이터 지향 기술 스택(DOTS)을 선택했습니다.
2020년 초에 DOTS와 ECS를 도입하는 데에는 몇 가지 위험이 따랐습니다. 기술을 얼리 어답터로 도입한 팀이었기 때문에 기술 향상에 투자하고 새로운 워크플로에 즉시 적응해야 했지만, 샘플을 살펴본 후 Jamel과 팀은 위험보다 보상이 더 크다고 판단하여 바로 뛰어들었습니다.
“특히 5개의 서로 다른 시대를 관리해야 하는 과제에 직면해 있습니다."라고 말합니다. 다른 스타일에서 메시나 머티리얼을 재사용할 수 없기 때문에 배치가 더 많이 깨지게 됩니다. ECS를 사용하면 이러한 제약에도 불구하고 고품질 비주얼을 유지하는 데 필요한 성능을 확보할 수 있습니다."
C# 잡 시스템을 사용하면 작업을 효율적으로 병렬 처리할 수 있으며, Burst는 기존 .NET 런타임의 오버헤드를 우회하여 C# 코드를 고도로 최적화된 네이티브 머신 코드로 컴파일합니다. 이 네이티브 코드는 대상 플랫폼에 맞게 특별히 맞춤화되어 성능이 향상됩니다. 제이멜은 DOTS가 팀에 가져다준 이점에 대해 "퍼포먼스 예산을 시스템에 많이 사용했다면 지금과 같은 퀄리티로 5개의 다른 시대를 렌더링할 수 없었을 것"이라고 말합니다.

UGS로 시간 벌기
제이멜은 연결성 외에도 개발 시간을 단축할 수 있는 다른 방법을 찾아 팀의 역량을 강화할 시간을 확보해야 했습니다. 그는 개발자가 게임플레이에 집중할 수 있도록 UGS를 도입했으며, 이를 통해 "수백에서 수천 시간의 개발 시간을 절약할 수 있을 것"이라고 예상합니다.
이 팀은 멀티플레이 호스팅, 매치메이커, 인증, 클라우드 콘텐츠 전송(CCD)을 사용했습니다. 여러 퍼스트 파티 서비스를 사용하는 것의 이점은 처음부터 StickyLock에게 분명했습니다. "퍼스트 파티 서비스는 통합 및 유지 관리가 더 쉽습니다."라고 Jamel은 말하며, "UGS 서비스는 향후 콘솔로 이식하고자 할 때를 대비해 크로스 플랫폼입니다."라고 덧붙입니다.
멀티플레이 호스팅은 하룻밤 사이에 성공할 경우 빠르게 확장할 수 있도록 설계되었습니다. "요즘은 하룻밤 사이에 게임이 인기를 얻는 경우가 더 흔합니다. 성공적인 타이틀을 다수 출시한 경험이 있는 서비스 덕분에 안심할 수 있었습니다."라고 자멜은 말합니다. 또한 Authentication의 크로스 플랫폼 기능을 통해 적절한 시기에 멀티플랫폼 확장이 가능하도록 Histera를 준비할 수 있으며, CCD는 팀이 콘텐츠와 출시 파이프라인을 쉽게 관리하여 게임의 성장에 따라 적절한 콘텐츠와 기능을 제공하여 플레이어의 참여를 유도할 수 있도록 지원합니다.
강력하고 확장 가능한 멀티플레이어 백엔드 인프라와 멀티플랫폼 지원 인증 및 플레이어 커뮤니케이션을 갖춘 제이멜은 멀티플레이 및 UGS 팀의 지원을 받으며 자신 있게 출시에 임하고 있습니다.