일반적으로 사람들은 언리얼 엔진 애플리케이션이 데스크톱, 모바일 OS 또는 콘솔 중 어떤 플랫폼용으로 빌드되었는지와 상관없이, 게임플레이 로직을 실행하고 화면에 게임 월드를 렌더링하는 디바이스에서 언리얼 엔진 애플리케이션을 경험하게 됩니다. 멀티플레이어 네트워크 게임에서 애플리케이션의 여러 인스턴스에 게임플레이 로직의 일부를 분산시킬 수는 있지만, 각 개별 인스턴스는 여전히 해당 플레이어를 위해 로컬로 게임 월드 렌더링 작업을 수행합니다. HTML5 디플로이 옵션을 사용하여 웹 브라우저 내부에서 실행 가능한 프로젝트 버전을 만들 때조차 게임 로직과 렌더링은 여전히 각 사용자의 웹 브라우저 내에서 로컬로 일어납니다.
하지만 픽셀 스트리밍을 사용하면 사용자가 볼 일이 없는 컴퓨터에서 언리얼 엔진 애플리케이션이 원격으로 실행됩니다. 이 컴퓨터는 조직 내 어딘가에 있는 실제 데스크톱일 수도 있고, 클라우드 호스팅 서비스에서 제공하는 가상 머신일 수도 있습니다. 언리얼 엔진은 CPU, GPU, 메모리 등 해당 컴퓨터에서 사용 가능한 리소스로 매 프레임마다 게임 로직을 실행하고 렌더링합니다. 이렇게 렌더링한 결과물을 미디어 스트림으로 연속 인코딩한 뒤, 웹 서비스의 경량 스택을 통해 전달합니다. 그러면 사용자는 다른 컴퓨터와 모바일 디바이스에서 실행되는 표준 웹 브라우저에서 해당 브로드캐스트 스트림을 볼 수 있습니다.
사용자 입장에서는 결과적으로 YouTube나 Netflix 등의 서비스에서 비디오 스트림을 시청하는 것과 같지만, 다음 두 가지 측면에서 다릅니다.
- 미리 녹화된 비디오 클립을 재생하는 것이 아닌, 언리얼 엔진이 실시간으로 생성하는 렌더링된 프레임과 오디오를 재생하는 스트림입니다.
- 사용자는 브라우저를 통해 플레이어 웹 페이지에서 다시 언리얼 엔진으로 전달되는 키보드, 마우스, 터치 이벤트와 커스텀 이벤트를 전송하여 경험을 제어할 수 있습니다.
장점
픽셀 스트리밍 시스템을 사용하면 다음과 같은 몇 가지 장점이 있습니다.
-
모바일 디바이스와 경량 웹 브라우저에 다른 방식을 사용할 때보다 더 나은 퀄리티의 그래픽을 표시할 수 있습니다. 강력한 GPU로 네이티브 데스크톱 애플리케이션에서 렌더링할 때만 가능했던 렌더링 기능을 사용하여 복잡한 씬을 고해상도로 표시할 수 있습니다.
-
사용자가 대용량 실행파일이나 콘텐츠 파일을 미리 다운로드하지 않아도 되며, 아무것도 설치할 필요가 없습니다. 사용자가 다운로드해야 하는 것은 재생할 미디어 스트림뿐입니다.
-
별도의 패키지를 여러 개 만들어 배포하지 않고도 다수의 플랫폼을 지원할 수 있습니다. 애플리케이션을 Windows, Linux 및 Mac용 패키지로 한 번 만들면, 사람들이 어느 플랫폼에서든 해당 콘텐츠를 경험할 수 있습니다. 사용자는 데스크톱, iOS, Android 플랫폼의 Google Chrome 및 Mozilla Firefox를 비롯해 WebRTC 연결 모델을 지원하는 모든 최신 브라우저에서 스트림을 볼 수 있습니다. (자세한 내용은 픽셀 스트리밍 레퍼런스를 참조하세요.)
-
픽셀 스트리밍 시스템에는 로컬 네트워크 내에서 누구나 비교적 쉽게 구성할 수 있는 최소한의 컴포넌트가 포함되어 있습니다. 하지만 웹 서비스 디플로이 경험이 있는 팀이 커스텀 클라우드 호스팅 플랫폼을 제작하기 위한 기반으로 사용할 수 있을 만큼 강력합니다.
-
픽셀 스트리밍은 WebRTC 피어 투 피어 통신 프레임워크를 사용하여 사용자와 언리얼 엔진 애플리케이션 간의 지연시간을 최소화합니다.
아키텍처
다음 이미지는 단순한 픽셀 스트리밍 구성의 컴포넌트를 보여줍니다.
컴포넌트
-
픽셀 스트리밍 플러그인: 이 플러그인은 언리얼 엔진 내부에서 실행됩니다. 비디오 압축으로 렌더링되는 모든 프레임의 최종 결과를 인코딩하고, 이러한 비디오 프레임을 게임 오디오와 함께 미디어 스트림으로 패킹한 뒤, 이 스트림을 직접적인 피어 투 피어 연결을 통해 연결된 하나 이상의 브라우저로 전송합니다.
-
시그널링 및 웹 서버: 시그널링 및 웹 서버는 브라우저와 픽셀 스트리밍 플러그인 간의 연결을 협상하고, 미디어 스트림을 재생하는 HTML 및 JavaScript 환경을 브라우저에 제공하는 역할을 합니다.
연결 프로세스
-
모든 픽셀 스트리밍 컴포넌트를 시작할 때 언리얼 엔진 내부에서 실행되는 픽셀 스트리밍 플러그인은 먼저 시그널링 및 웹 서버와의 연결을 설정합니다.
-
클라이언트가 시그널링 서버에 연결되면, 서버는 JavaScript로 작성된 플레이어 위젯과 컨트롤 코드가 포함된 HTML 페이지를 제공합니다.
-
사용자가 스트림을 시작하면, 시그널링 서버는 클라이언트 브라우저와 언리얼 엔진 애플리케이션 간에 직접 연결 설정을 협상합니다.
이 연결이 작동하려면 브라우저와 언리얼 엔진 애플리케이션은 서로의 IP 주소를 알아야 합니다. 둘 다 같은 네트워크에서 실행 중인 경우 보통 자체 IP 주소에서 바로 서로에게 표시됩니다. 하지만 두 엔드포인트 간에 실행되는 네트워크 주소 변환(Network Address Translation, NAT) 서비스가 둘 중 한쪽의 외부 표시 IP 주소를 변경할 수도 있습니다. 이를 해결하려면 보통 STUN 또는 TURN 서버를 사용하여 각 컴포넌트에 외부 표시 IP 주소를 알려 줍니다. 자세한 내용은 호스팅 및 네트워킹 가이드를 참조하세요.
-
클라이언트와 언리얼 엔진 애플리케이션 간의 연결이 설정되는 즉시, 픽셀 스트리밍 플러그인은 브라우저에 직접 미디어 스트리밍을 시작합니다. 클라이언트의 입력은 플레이어 페이지의 JavaScript 환경을 통해 언리얼 엔진 애플리케이션으로 직접 다시 전송됩니다.
-
시그널링 및 웹 서버는 미디어 스트림 재생이 시작된 후에도 브라우저와 언리얼 엔진 애플리케이션 간의 연결을 유지하므로, 브라우저에서 시작된 연결 해제를 처리할 수 있습니다.
위에 표시된 아키텍처 구성에 대한 단계별 지침은 픽셀 스트리밍 시작하기를 참조하세요.