멀티플레이어 협동 게임을 위한 분산 권한 활용 방법

EMILY RAINE / UNITY TECHNOLOGIESContributor
Sep 29, 2025|11 분
Dagger Directive의 야간 투시경
이 웹페이지는 이해를 돕기 위해 기계 번역으로 제공됩니다. 기계 번역으로 제공되는 콘텐츠에 대한 정확도나 신뢰도는 보장되지 않습니다. 번역된 콘텐츠의 정확도에 관해 의문이 있는 경우 웹페이지의 공식 영어 원문을 참고해 주시기 바랍니다.

아케인 알파카스가 올해 초 스팀에서 그들의 매력적인 FPS 슈터 다agger Directive의 첫 번째 데모를 출시했을 때, 전반적인 피드백은 좋았지만 커뮤니티는 이 게임을 함께 하고 싶다는 것을 분명히 했습니다. 그 반응을 바탕으로 팀은 게임에 멀티플레이어 기능을 추가하기로 결정했습니다. 그들은 궁극적으로 유니티 6에 포함된 내장 멀티플레이어 솔루션 모음을 사용하기로 결정하기 전에 몇 가지 다른 솔루션을 테스트했습니다. 우리는 프로그래머이자 디자이너인 다니엘 파울러와 앉아 유니티의 게임 오브젝트를 위한 넷코드, 릴레이 및 기타 네트워킹 서비스를 활용하여 플레이어를 연결하는 방법과 분산 권한 (DA)가 어떻게 전체 작업을 지원하는지에 대해 배웠습니다.

아케인 알파카스가 어떻게 시작되었고 무엇을 만들고 싶었는지에 대한 이야기를 시작해 보겠습니다.

다니엘 파울러, 프로그래머이자 디자이너: 몇 년 전에 회사를 시작했습니다. 그 전에 우리는 – 웨이드 히바르, 코디 롤랜드, 그리고 저 – 오큘러스에서 온워드라는 VR FPS 게임을 작업했고, 대기업에서 일하는 것에서 벗어나고 싶었습니다.

이 프로젝트는 제가 혼자 시작했고, 필요에 따라 다른 두 사람을 점차적으로 합류시켰습니다. 마이크로프로스와 퍼블리싱 계약을 체결한 후 데모를 출시했습니다. 데모는 정말 잘 진행되었고, 커뮤니티에서 가장 큰 피드백 포인트였던 멀티플레이어를 추가하고 싶었습니다. 그 이후로 게임은 잘 진행되고 있습니다. 우리는 출시했고, 콘텐츠 팩을 출시할 예정입니다.

몇 주 전, 유니티 팀과 이야기한 후 네트워킹 업데이트를 출시했습니다 – 그들은 우리에게 피드백을 주었고, 우리도 몇 가지를 공유했으며, 우리는 검토하고 구현한 많은 좋은 아이디어를 얻었습니다. 현재 멀티플레이어는 훨씬 더 안정적이며, 커뮤니티로부터 대부분 긍정적인 피드백을 받았지만 여전히 해결해야 할 몇 가지 문제가 있습니다.

훌륭하네요! 이 프로젝트와 관련하여 다른 일은 무엇이 있나요?

이 프로젝트는 4년 반 전에 시작했습니다. 그 당시 우리는 온워드를 퀘스트로 포팅하고 있었고, 고급 PC VR 게임을 휴대폰으로 옮기려고 했습니다. 그 과정에서 우리는 많은 것을 제거해야 했습니다 – 특히 풀을 제거해야 했고, 오큘러스에서 컴퓨트 셰이더를 사용할 수 없었습니다. 그래서 나는 프로젝트를 시작하고 어떻게 많은 양의 풀을 생성하고 효율적으로 실행할 수 있는지 보고 싶었습니다. 결국, 나는 플레이어가 맵을 돌아다닐 때 수백만 개의 폴리곤으로 된 풀, 작은 식물 및 꽃을 생성하기 위해 Burst 컴파일러를 사용하는 맞춤형 풀 시스템을 구축했습니다.

플레이어는 임무를 시작할 시간을 선택할 수 있으며, 플레이하면서 시간이 진행됩니다. 따라서 오전 6시에 임무를 시작하고 한 시간을 기다리면 태양의 위치가 그만큼 이동합니다. 우리는 완전한 실시간 조명을 사용했고, 우리만의 하늘 셰이더를 만들었습니다. 후처리도 이에 영향을 받으며, 하루 동안의 모든 값과 변화하는 방식을 보유하기 위해 스크립터블 오브젝트를 지원하고, 조명과 시간대가 AI 행동 및 센서에 영향을 미칩니다.

나는 실시간 조명도 다루고 싶었기 때문에 시간대 관련 기능을 추가했습니다. 우리는 또한 두 번째 게임을 준비하고 있었습니다. 이것은 나의 재미있는 주말 프로젝트였습니다. 그리고 잠시 후, 나는 몇몇 캐릭터를 추가하기 시작했고, 이곳에 전체 게임이 있는 것 같은 느낌이 들기 시작했습니다. 나는 그것을 좀 더 발전시켰고, 직장 동료들이 플레이해 보도록 했고, 그들은 즐겼습니다.

실시간 조명과 수백만 개의 풀 폴리곤이 가능한 이유는 우리가 유니버설 렌더 파이프라인 (URP)포워드+ 렌더링, GPU 레지던트 드로어GPU 오클루전 컬링을 사용하고 있기 때문입니다. 우리는 Unity 2021.3에서 Unity 6으로 업그레이드하기 전에 SRP 배처를 사용하고 있었습니다. 레지던트 드로어와 오클루전 컬링은 SRP 배처에 비해 성능을 약 20% 향상시켰습니다. 낮은 복잡도의 셰이더와 텍스처도 성능 향상에 도움이 되었습니다. 우리는 진행하면서 RenderDoc으로 샘플링하여 모든 것이 작동하는지 확인하고 문제가 발생할 때마다 수정했습니다. 결국, 당신은 중간 그래픽 설정에서 SteamDeck에서 30-60 fps로 플레이할 수 있습니다.

나는 플레이어가 원하는 대로 할 수 있는 큰 오픈 환경을 구축하고 싶었습니다. 이것은 콜 오브 듀티와 같은 것이 아니라, 같은 적들이 같은 위치에 스폰되는 같은 복도를 내려가는 것보다 더 샌드박스적입니다. 나는 플레이어가 다양한 목표에 접근하는 방식을 선택할 자유를 주고, 시간대를 혼합하고 싶었습니다. 그리고 협동 플레이를 통해, 이들은 개인이나 두 팀으로 나누거나 네 명의 큰 그룹으로 남아 있을 수 있습니다. – 이것은 꽤 많은 것을 추가했습니다.

우리는 게임을 확장할 예정입니다. – 우리는 다섯 개의 추가 임무가 있습니다. 우리는 첫 번째 콘텐츠 팩을 마쳤고, 12개의 무기, 14 또는 16개의 유니폼 옵션, 그리고 많은 새로운 장비를 추가했습니다.

나는 예전의 Delta ForceGhost Recon 게임을 정말 즐겼기 때문에, 그와 비슷한 것을 만들고 싶었다. 나는 엔지니어라서 예술가가 아니라서 아트 스타일을 간단하게 유지해야 했다. 내가 할 수 있는 아트를 하는 데 집중했기 때문에, 만약 내가 게임 전체를 혼자 해야 한다면 할 수 있을 것이다. 그게 게임 스타일이 나온 곳이다. 하지만 나는 실시간 조명 효과와 후처리를 오래된 텍스처와 저폴리 모델과 혼합하는 것이 꽤 잘 작동했다고 생각한다. 그것은 여러 가지를 함께 추가하는 것 같다.

나는 Valheim이 나왔을 때 많은 영감을 주었다고 생각한다. 그 이전에는 후처리와 조명 효과가 없었고, 90년대 중반의 게임처럼 보였다. 그런 다음 그들이 가진 많은 효과를 보고, 나도 할 수 있을 것 같다고 생각했다.

Unity 6으로 전환한 것은 언제인가요?

프로젝트는 Unity 2019에서 시작되었고, 그 후 Unity 2021.3로 업그레이드했다. 나는 작년 말까지 그 상태로 있었고, GPU 오클루전 컬링을 테스트하기 위해 Unity 6으로 업그레이드했다. 그것은 성능을 15%에서 20% 증가시켰다.

이전에는 SRP 배처를 URP와 몇 가지 다른 것들과 함께 사용했으며, 모든 것을 끄고 GPU 오클루전 컬링만 사용했다. 나는 LOD를 사용하지 않지만, 화면 크기에 따라 컬링할 수 있는 설정이 있어서, 그것을 모두 켰고, 다시 한 번 성능이 15%에서 20% 향상되었다. 우리는 이제 Steam 덱에서 게임을 실행하고 있다. 나는 성능 향상을 본 이후로 돌아가지 않았다.

Dagger Directive의 게임 플레이

네트워킹 측면에 대해 좀 더 이야기해 보자 – Relay를 어떻게 사용하고 있나요?

주로 플레이어를 위해서, 그들이 라우터에서 많은 것을 설정할 필요가 없도록 하기 위해서이다. 나는 며칠 동안 여러 멀티플레이어 시스템을 테스트하고 어떤 것이 잘 작동하는지 보기 위해 포트 포워딩을 시도했다. 우리는 처음에 꽤 빨리 설정했지만, Unity 6 멀티플레이어를 네트워킹에 사용하기로 결정한 후 Relay를 설정했고, 그 이후로 그렇게 테스트를 해왔습니다.

성능을 위해 우리는 네트워크 시뮬레이터를 사용하고 있으며, 잘 작동하고 있습니다. 핫스팟에서 휴대폰에 연결하는 것만으로도 성능 테스트에 많은 도움이 되었습니다.

당신은 분산 권한도 사용했습니다. 그것은 어떻게 이루어졌나요?

우리는 데모를 출시한 후 이 게임의 멀티플레이어를 고려했습니다. 가장 큰 피드백 포인트는 사람들이 협동 플레이를 원한다는 것이었습니다 – 우리는 그것이 큰 일이 될 것이라는 것을 알고 있었지만, 두 번째 게임을 위해 아끼고 있다고 생각했습니다.

하지만 피드백의 양과 퍼블리셔와 이야기한 후, 우리는 앉아서 얼마나 걸리는지 보자고 결정했습니다. 나는 포톤과 포톤의 퓨전 시스템을 시도한 후 몇 가지 다른 라이브러리를 살펴보았습니다. 나는 그냥 나만의 것을 만들 생각을 했지만, GameObjects를 위한 Netcode를 시도해 보기로 결정했습니다. 나는 기본적으로 게임 전체가 완료되었기 때문에 분산 권한을 시도하기로 결정했습니다 – GameObjects의 소유권 변경 요청 및 승인 문제를 다루고 싶지 않았습니다.

협동 게임이기 때문에 사람들이 속이는 것은 우리가 걱정하는 문제가 아닙니다 – 그들이 친구들과 속이고 있다면, 그건 그들의 문제입니다. 우리는 게임에 치트도 있으므로, 그들은 무한 탄약 등을 켤 수 있습니다 – 그래서 그들이 객체를 복제하더라도 별로 중요하지 않습니다.

그것이 내가 DA를 선택하는 데 도움이 되었습니다. 우리는 이 모든 것을 빠르게 설정할 수 있었고, 다른 두 멤버는 콘텐츠를 마무리하는 동안 나는 모든 네트워킹 작업에 집중할 수 있었습니다. 나는 모든 작업을 완료하는 데 12주 또는 13주가 걸릴 것이라고 예상했지만, 실제로는 약 14주가 걸렸습니다.

Dagger Directive의 게임 플레이

당신은 Relay를 사용하고 있었으니, 가끔 직접 연결 모드로 실행하는 것 같군요?

그렇습니다 나는 또한 플레이어들이 직접 실행하고 친구들이 그들에게 직접 연결할 수 있도록 직접 연결을 설정했습니다. 그들은 라우터에서 포트 포워딩을 설정해야 하지만, 나는 그것을 설정하는 방법에 대한 지침이 있습니다. 하지만 호스트 마이그레이션이 없기 때문에, 호스트가 나가면 모든 사람에게 게임이 종료됩니다.

이 기능은 우리가 스튜디오를 종료하거나 Unity가 릴레이 서버를 종료하는 경우에 더 유용합니다. 플레이어는 적어도 직접 연결된 게임을 계속할 수 있기를 바랍니다.

이해가 됩니다. 그것은 매우 미래 지향적이며 플레이어에게도 좋습니다. 그래서 듣게 되어 기쁩니다.

내가 지난 15년 동안 작업한 거의 모든 게임은 멀티플레이어였고, 내가 있었던 모든 곳에서 문제가 있었습니다. 무언가가 예기치 않게 종료되면 우리는 무언가를 수정하기 위해 허둥지둥해야 했습니다. 나는 그런 것들에 미리 대비하고 싶었습니다.

당신은 토론에서 호스트 마이그레이션과 소유권 이전에 대해 언급했습니다. DA가 이러한 것들에 가져다주는 가치에 대해 어떻게 생각하십니까? 당신의 게임에 좋은 추가 사항이며 개발에 도움이 되나요?

특히 호스트 마이그레이션은 거의 매끄럽게 진행되었습니다. 다시 말해, 그것은 내가 과거에 작업한 게임에서 항상 문제가 되었던 것 중 하나입니다. 호스트가 갑자기 사라지면 우리는 많은 것을 전환하고 누가 무엇을 소유하는지 결정해야 합니다.

하지만 많은 것들이 잘 작동했습니다. 나는 이 일을 영원히 해왔기 때문에 그런 일이 발생하는 것을 보았고 처음에는 매우 의심스러웠습니다. 하지만 우리는 문제를 겪지 않았거나, 만약 작은 문제가 발생하면 문서를 확인하면 보통 "다음 사람에게 이 게임 오브젝트를 자동으로 전송하는 상자를 체크하는 것을 잊었습니다"와 같은 경우입니다. 그것은 내가 모든 것을 제대로 설정했는지 확인하는 문제였으므로, 문제가 발생하면 이 시스템으로 빠르게 수정할 수 있습니다.

<2>여기에서 <3>Dagger Directive<3>의 얼리 액세스를 확인하고 팀의 최신 업데이트를 확인하세요. 분산 권한 및 기타 Unity 멀티플레이어 솔루션에 대해 자세히 알아보고, Unity 개발자들의 이야기를 리소스 페이지<8>에서 확인하세요.