에픽게임즈는 Google이 WebRTC 버전에서 공개한 취약성을 알고 있으며, EOS SDK에 미치는 영향과 향후 단계에 대해 조사하고 있습니다. 자세한 내용은 여기를 참고하세요.
일반적으로 사람들은 언리얼 엔진 애플리케이션이 데스크톱, 모바일 OS 또는 콘솔 중 어떤 플랫폼용으로 빌드되었는지와 상관없이, 게임플레이 로직을 실행하고 화면에 게임 월드를 렌더링하는 디바이스에서 언리얼 엔진 애플리케이션을 경험하게 됩니다. 멀티플레이어 네트워크 게임에서 애플리케이션의 여러 인스턴스에 게임플레이 로직의 일부를 분산시킬 수는 있지만, 각 개별 인스턴스는 여전히 해당 플레이어를 위해 로컬로 게임 월드 렌더링 작업을 수행합니다. HTML5 디플로이 옵션을 사용하여 웹 브라우저 내부에서 실행 가능한 프로젝트 버전을 만들 때조차 게임 로직과 렌더링은 여전히 각 사용자의 웹 브라우저 내에서 로컬로 일어납니다.
하지만 픽셀 스트리밍을 사용하면 사용자가 볼 일이 없는 컴퓨터에서 언리얼 엔진 애플리케이션이 원격으로 실행됩니다. 이 컴퓨터는 조직 내 어딘가에 있는 실제 데스크톱일 수도 있고, 클라우드 호스팅 서비스에서 제공하는 가상 머신일 수도 있습니다. 언리얼 엔진은 CPU, GPU, 메모리 등 해당 컴퓨터에서 사용 가능한 리소스로 매 프레임마다 게임 로직을 실행하고 렌더링합니다. 이렇게 렌더링한 결과물을 미디어 스트림으로 연속 인코딩한 뒤, 웹 서비스의 경량 스택을 통해 전달합니다. 그러면 사용자는 다른 컴퓨터와 모바일 디바이스에서 실행되는 표준 웹 브라우저에서 해당 브로드캐스트 스트림을 볼 수 있습니다.

사용자 입장에서는 결과적으로 YouTube나 Netflix 등의 서비스에서 비디오 스트림을 시청하는 것과 같지만, 다음 두 가지 측면에서 다릅니다.
- 미리 녹화된 비디오 클립을 재생하는 것이 아닌, 언리얼 엔진이 실시간으로 생성하는 렌더링된 프레임과 오디오를 재생하는 스트림입니다.
- 사용자는 브라우저를 통해 플레이어 웹 페이지에서 다시 언리얼 엔진으로 전달되는 키보드, 마우스, 터치 이벤트와 커스텀 이벤트를 전송하여 경험을 제어할 수 있습니다.
장점
픽셀 스트리밍 시스템을 사용하면 다음과 같은 몇 가지 장점이 있습니다.
-
모바일 디바이스와 경량 웹 브라우저에 다른 방식을 사용할 때보다 더 나은 퀄리티의 그래픽을 표시할 수 있습니다. 강력한 GPU로 네이티브 데스크톱 애플리케이션에서 렌더링할 때만 가능했던 렌더링 기능을 사용하여 복잡한 씬을 고해상도로 표시할 수 있습니다.
-
사용자가 대용량 실행파일이나 콘텐츠 파일을 미리 다운로드하지 않아도 되며, 아무것도 설치할 필요가 없습니다. 사용자가 다운로드해야 하는 것은 재생할 미디어 스트림뿐입니다.
-
별도의 패키지를 여러 개 만들어 배포하지 않고도 다수의 플랫폼을 지원할 수 있습니다. 애플리케이션을 Windows 또는 Linux용 패키지로 한 번 만들면, 사람들이 어느 플랫폼에서든 해당 콘텐츠를 경험할 수 있습니다. 사용자는 데스크톱, iOS, Android 플랫폼의 Google Chrome 및 Mozilla Firefox를 비롯해 WebRTC 연결 모델을 지원하는 모든 최신 브라우저에서 스트림을 볼 수 있습니다. (자세한 내용은 픽셀 스트리밍 레퍼런스를 참조하세요.)
-
픽셀 스트리밍 시스템에는 로컬 네트워크 내에서 누구나 비교적 쉽게 구성할 수 있는 최소한의 컴포넌트가 포함되어 있습니다. 하지만 웹 서비스 디플로이 경험이 있는 팀이 커스텀 클라우드 호스팅 플랫폼을 제작하기 위한 기반으로 사용할 수 있을 만큼 강력합니다.
-
픽셀 스트리밍은 WebRTC 피어 투 피어 통신 프레임워크를 사용하여 사용자와 언리얼 엔진 애플리케이션 간의 지연시간을 최소화합니다.
아키텍처
다음 이미지는 단순한 픽셀 스트리밍 구성의 컴포넌트를 보여줍니다.

컴포넌트
-
픽셀 스트리밍 플러그인: 이 플러그인은 언리얼 엔진 내부에서 실행됩니다. 비디오 압축으로 렌더링되는 모든 프레임의 최종 결과를 인코딩하고, 이러한 비디오 프레임을 게임 오디오와 함께 미디어 스트림으로 패킹한 뒤, 이 스트림을 직접적인 피어 투 피어 연결을 통해 연결된 하나 이상의 브라우저로 전송합니다.
-
시그널링 및 웹 서버: 시그널링 및 웹 서버는 브라우저와 픽셀 스트리밍 플러그인 간의 연결을 협상하고, 미디어 스트림을 재생하는 HTML 및 JavaScript 환경을 브라우저에 제공하는 역할을 합니다.
연결 프로세스
-
모든 픽셀 스트리밍 컴포넌트를 시작할 때 언리얼 엔진 내부에서 실행되는 픽셀 스트리밍 플러그인은 먼저 시그널링 및 웹 서버와의 연결을 설정합니다.
-
클라이언트가 시그널링 서버에 연결되면, 서버는 JavaScript로 작성된 플레이어 위젯과 컨트롤 코드가 포함된 HTML 페이지를 제공합니다.
-
사용자가 스트림을 시작하면, 시그널링 서버는 클라이언트 브라우저와 언리얼 엔진 애플리케이션 간에 직접 연결 설정을 협상합니다.
이 연결이 작동하려면 브라우저와 언리얼 엔진 애플리케이션은 서로의 IP 주소를 알아야 합니다. 둘 다 같은 네트워크에서 실행 중인 경우 보통 자체 IP 주소에서 바로 서로에게 표시됩니다. 하지만 두 엔드포인트 간에 실행되는 네트워크 주소 변환(Network Address Translation, NAT) 서비스가 둘 중 한쪽의 외부 표시 IP 주소를 변경할 수도 있습니다. 이를 해결하려면 보통 STUN 또는 TURN 서버를 사용하여 각 컴포넌트에 외부 표시 IP 주소를 알려 줍니다. 자세한 내용은 호스팅 및 네트워킹 가이드를 참조하세요.
-
클라이언트와 언리얼 엔진 애플리케이션 간의 연결이 설정되는 즉시, 픽셀 스트리밍 플러그인은 브라우저에 직접 미디어 스트리밍을 시작합니다. 클라이언트의 입력은 플레이어 페이지의 JavaScript 환경을 통해 언리얼 엔진 애플리케이션으로 직접 다시 전송됩니다.
-
시그널링 및 웹 서버는 미디어 스트림 재생이 시작된 후에도 브라우저와 언리얼 엔진 애플리케이션 간의 연결을 유지하므로, 브라우저에서 시작된 연결 해제를 처리할 수 있습니다.
위에 표시된 아키텍처 구성에 대한 단계별 지침은 픽셀 스트리밍 시작하기를 참조하세요.