Matchmaker를 이용해 여러 인스턴스가 한 서버에서 만날 수 있도록 만들기

  • 준비물
    • aws, azure, gcp와 같은 클라우드 플랫폼에서의 gpu 인스턴스

Azure에서 문서로 잘 정리 해 놓았고 개발자들이 Aws를 통해 실험을 해 보았지만 가격측면에서 불리해서 GCP로 인스턴스를 만들기로 했습니다.

N2에 해당하는 n2-standard-2 서울에서 월 74$를 내고 사용할 수 있습니다.

gpu를 할당하기위해선 제한이 있습니다. 가용영역인 인스턴스여야하고 할당 가능한 지역(region)이어야 합니다.

서울 리전은 Nvidia T4 GPU만 사용가능합니다.


GPU할당량 조정하기

GCP → IAM → 할당량 →필터 : GPU , all → GPUs (all regions)에 할당량을 조정해야합니다.

이유는 모든 것이 다 갖춰졌어도 여기서 할당량을 갖춘 것에 맞게 채우지 않으면 사용할 수 없기 때문입니다.

하지만 문제가 생겼습니다. 아래와 같은 문제로 고객 센터에 문의하였습니다.

 


메일이 왔습니다.

필요한 정보들을 적어주고 답장을 보냈습니다.


환경 설정

그럼 인스턴스에 접속해서 pixel streaming 관련 파일들을 설치하겠습니다.

Pixel streaming는 windows운영체제가 필요하지만 비싸기 때문에 linux에 x-window를 설치할 예정입니다. 하지만 그 전에 x-window로 pixel streaming이 돌아가는지 확인해야합니다.

x-window는 windows가 아닙니다. linux에서 GUI응용 프로그램을 실행한 것입니다. 네트워크 프로토콜 기반의 그래픽 사용자 인터페이스입니다.

Pixel streaming은 Unreal Engine을 기반으로 하기 때문에 Unreal Engine이 x-window에서 돌아가는지 확인해보았습니다.

https://docs.unrealengine.com/4.27/ko/SharingAndReleasing/Linux/BeginnerLinuxDeveloper/SettingUpAnUnrealWorkflow/ [ Ubuntu에서 Unreal 프로그램 구동하기 - Epic Games ]

 

다음은 GCP에서 linux로 x-window 구성하기를 해보겠습니다.

 

'Unreal > Pixel Streaming' 카테고리의 다른 글

local에서 matchmaker 적용해보기 - pixel streaming  (0) 2022.01.27
  • 준비물
    • Unreal 엔진 →에픽게임즈 https://www.epicgames.com/store/ko/download 실행파일 다운로드
    • 에픽게임즈 실행파일에서 Unreal 엔진 다운로드 v4.7이상
    • nodejs 및 express 다운로드 서버가 express로 돌아갔었습니다.
    • 언리얼 프로젝트가 있다면 상관없지만 없다면 에픽게임즈에서 무료로 데모 프로젝트를 다운로드할 수 있습니다.

 

로컬에서 프로젝트를 브라우저로 띄워보기

1. 언리얼 엔진을 실행시켜주세요 준비물이 모두 준비된 상태에서 가능합니다.

2. 단 탭의 편집 → 에디터 개인설정 → 좌측 탭 레벨 에디터 →Play in Standalone Game →추가 실행 옵션 파라미터에 호스트와 포트 및 오디오 믹서를 설정하는 파라미터 참조 AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=8888

3. 독립형 게임으로 실행

아래와 같은 이런 창이 생성됩니다.

4. C:\Program Files\Epic Games\UE_4.27\Samples\PixelStreaming\WebServers\SignallingWebServer\platform_scripts\cmd 경로로 폴더 열기 및 run_local을 실행. express가 없다는 에러가 나오면 설치해주세요. npm install express

5. 아래처럼 Streamer Connect라는 표현이 뜬다면 성공

6. WebRTC가 사용 가능한 브라우저 ex) 크롬에서 localhost를 치고 들어가기

7. 성공


Docs에서 제공하는 Pixel 스트리밍 호스팅 및 네트워킹 가이드

https://docs.unrealengine.com/4.27/en-US/SharingAndReleasing/PixelStreaming/Hosting/

위에서는 로컬 서버에 연결하여 테스트해 보았습니다. AWS, GCP, Azure와 같은 클라우드 서비스에서도 사용이 가능합니다.

더 복잡한 네트워크나 개방형 인터넷을 통해 서비스를 배포하려고 하거나 사용자 경험과 연결 흐름을 재설계하려는 경우 설정을 다시 생각해야 할 수 있습니다. 아래와 같은 설정을 생각하여 재설계가 가능합니다.

기본적인 시나리오

브라우저로 Signaling서버를 통해 P2P로 통신하는 구조


다중 플레이어 엔드포인트 시나리오

하지만 이건 그냥 한 사람이 방송하고 나머지가 보는 스트리밍 구조랑 같다. 방송하는 사람 외에는 자신만의 캐릭터가 없다.


매치메이킹을 통한 다중 풀 스택

여러 호스트들(인스턴스)이 Matchmaker서버를 통해 한 곳에서 만나는 구조


*주문형 확장

클라이언트가 연결을 시도할 때마다 새 서버 인스턴스를 가동할 수 있습니다.

출처 및 참고자료

https://tensorworks.com.au/blog/an-open-architecture-for-scalable-pixel-streaming/#11-streaming-protocols [Unreal 커뮤니티에서 본 한 블로그]

https://docs.unrealengine.com/4.27/en-US/SharingAndReleasing/PixelStreaming/[Unreal Pixel 스트리밍 Docs]

https://www.youtube.com/watch?v=ApUBVnQK0Qw&ab_channel=WilliamOrving [ Youtube 강의 ]

제제훈 킹아~

+ Recent posts