픽셀 스트리밍 개요

픽셀 스트리밍 시스템을 이루는 구성 요소와 일반적 관점에서 어떻게 어우러지는지에 대한 설명입니다.

Windows
MacOS
Linux

사람들이 언리얼 엔진 응용 프로그램을 경험할 때는 보통 데스크톱 플랫폼이든 모바일 OS 든 콘솔이든 게임플레이 로직을 실행하고 게임 월드를 화면에 렌더링하는 바로 그 기기에서 경험하게 됩니다. 멀티플레이어 네트워크 게임에서 게임플레이 로직을 다수의 응용 프로그램 인스턴스에 분산시킬 수는 있지만, 개별 인스턴스 각각은 여전히 해당 플레이어의 게임 월드 렌더링 작업을 로컬에서 처리합니다. HTML5 디플로이 옵션을 사용하여 프로젝트를 웹 브라우저 안에서 실행할 수 있는 버전으로 만든다 해도, 게임 로직과 렌더링은 여전히 각 사용자의 웹 브라우저 안에서 일어납니다.

그러나 Pixel Streaming (픽셀 스트리밍)을 사용하면, 언리얼 엔진 응용 프로그램을 원격에서, 사용자가 확인하지도 못할 컴퓨터에서 실행합니다. 예를 들어 조직 내 어딘가 있는 물리 데스크톱 컴퓨터일 수도, 클라우드 호스팅 서비스가 제공하는 가상 머신일 수도 있습니다. 언리얼 엔진은 그컴퓨터에서 사용할 수 있는 자원, 즉 CPU, GPU, 메모리 등을 사용하여 게임 로직을 실행하고 모든 프레임을 렌더링합니다. 이렇게 렌더링한 출력을 미디어 스트림으로 연속 인코딩한 뒤, 웹 서비스 경량 스택을 통해 전달합니다. 그러면 사용자는 컴퓨터나 모바일 디바이스에서 실행되는 표준 웹 브라우저에서 그 방송 스트리밍을 볼 수 있습니다.

픽셀 스트리밍으로 클라우드에서 렌더링

결과적으로 사용자는 YouTube 나 Netflix 같은 서비스에서 비디오 스트리밍을 시청하는 것과 같지만, 차이점이 두 가지 있습니다.

  • 미리 녹화된 비디오 클립 재생이 아닌, 언리얼 엔진이 실시간 생성하는 렌더링 프레임과 오디오를 재생하는 스트리밍입니다.

  • 사용자는 브라우저에서 키보드, 마우스, 터치 이벤트는 물론 플레이어 웹 페이지에서 발생하는 커스텀 이벤트를 언리얼 엔진으로 다시 전송하여 경험을 제어할 수 있습니다.

장점

픽셀 스트리밍 시스템을 사용할 때의 장점은 여러가지 있습니다.

  • 모바일 디바이스와 경량 웹 브라우저를 통해 전에 없던 수준의 그래픽을 표시할 수 있습니다. 강력한 GPU 를 탑재한 데스크톱 응용 프로그램에서 렌더링할 때나 가능했던 렌더링 기능을 사용하여 복잡한 씬을 고해상도로 표시할 수 있습니다.

  • 사용자는 커다란 실행파일이나 콘텐츠 파일을 미리 다운로드하거나 설치할 필요가 없습니다. 사용자가 다운로드할 것은 재생할 미디어 스트림 뿐입니다.

  • 별도의 패키지를 다수 만들어 배포하지 않고도 여러 플랫폼을 지원할 수 있습니다. 응용 프로그램 패키지를 Windows 용으로만 만들어도 사람들은 어느 플랫폼에서든 그 콘텐츠를 경험할 수 있습니다. 사용자가 스트림을 볼 수 있는 브라우저는 WebRTC 접속 모델을 지원하면 되며, 데스크톱, iOS, Android 플랫폼의 Google Chrome 및 Mozilla Firefox 에 포함되어 있습니다. (픽셀 스트리밍 레퍼런스 를 참조하세요.)

  • 픽셀 스트리밍 시스템에는 로컬 네트워크 내에서 누구나 비교적 쉽게 설정할 수 있는 최소한의 구성 요소가 포함되어 있습니다. 하지만 웹 서비스 배포 경험이 있는 팀이 커스텀 클라우드 호스팅 플랫폼을 만들기 위한 기반으로 사용할 수 있을 만큼 강력합니다.

  • 픽셀 스트리밍은 WebRTC 피어 투 피어 통신 프레임워크를 사용하여 사용자와 언리얼 엔진 응용 프로그램 사이 대기 시간을 최소화합니다.

아키텍처

다음 이미지는 간단한 픽셀 스트리밍 설정의 구성 요소를 요약한 것입니다.

픽셀 스트리밍 아키텍처

구성 요소

  1. Pixel Streaming Plugin 픽셀 스트리밍 플러그인 - 이 플러그인은 언리얼 엔진 안에서 실행됩니다. H.264 비디오 압축 코덱으로 렌더링되는 모든 프레임 최종 결과를 인코딩하고, 그 비디오 프레임을 게임 오디오와 함께 미디어 스트림으로 패킹한 뒤, 그 스트림을 WebRTC Proxy Server (WebRTC 프록시 서버)로 전송합니다.

  2. WebRTC Proxy Server WebRTC 프록시 서버 - WebRTC 프록시 서버는 픽셀 스트리밍 플러그인이 만든 미디어 스트림을 직접 피어 투 피어 연결을 통해 연결된 하나 이상의 브라우저로 중계하는 역할을 합니다.

  3. Signaling and Web Server 시그널링 및 웹 서버 - 시그널링 및 웹 서버는 브라우저와 WebRTC 프록시 서버 간의 연결 협상 및 브라우저에 미디어 스트림을 재생하는 HTML 및 JavaScript 환경을 제공을 담당합니다.

연결 프로세스

  1. 모든 픽셀 스트리밍 구성 요소를 시작할 때, 언리얼 엔진 안에서 실행되는 픽셀 스트리밍 플러그인은 먼저 WebRTC 프록시 서버와의 연결을 수립하고, 미디어 스트림 전송을 시작합니다.

  2. 그러면 WebRTC 프록시 서버는 시그널링 및 웹 서버에 연결하여, 새로운 연결을 받을 준비가 되었다고 알립니다.

  3. 클라이언트가 시그널링 서버에 접속하면, 서버는 JavaScript 로 작성된 플레이어 위젯과 컨트롤 코드가 포함된 HTML 페이지를 제공합니다.

  4. 사용자가 스트림을 시작하면, 시그널링 서버는 클라이언트 브라우저와 WebRTC 프록시 서버 사이 직접 연결 수립을 협상합니다.

    이 연결의 정상 작동을 위해, 브라우저와 WebRTC 프록시 서버는 서로의 IP 주소를 알아야 합니다. 둘 다 같은 네트워크에서 실행중인 경우, 보통 서로의 IP 주소에서 직접 볼 수 있습니다. 하지만 두 종점 사이 실행되는 네트워크 주소 변환(NAT) 서비스가 한 쪽의 외부 표시 IP 주소를 바꿀 수도 있습니다. 이 문제의 해결에는 보통 STUN 또는 TURN 서버를 사용하여 각 구성 요소에 외부 표시 IP 주소를 알려줍니다. 자세한 내용은 호스팅 및 네트워킹 가이드 문서를 참조하세요.

  5. 클라이언트와 WebRTC 프록시 사이 연결이 수립되자 마자 WebRTC 프록시는 브라우저에 직접 미디어 스트리밍을 시작합니다. 클라이언트의 입력은 플레이어 페이지의 JavaScript 환경이 WebRTC 프록시로 직접 전송하여 언리얼 엔진에 전달합니다.

  6. 시그널링 및 웹 서버는 미디어 스트림 재생 시작 이후에도 브라우저와 WebRTC 프록시 서버 사이 연결을 유지하므로, 필요에 따라 사용자를 스트림에서 추방하고 브라우저에서 발생한 연결 해제를 처리할 수 있습니다.

위에 표시된 아키텍처 설정에 대한 단계별 안내는 픽셀 스트리밍 시작하기 문서를 참조하세요.

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼