Repository files navigation

Branch
UE5.4Publish frontend libPublish ui-libPublish cirrus containerReleases
UE5.3Publish frontend libPublish ui-libPublish cirrus containerReleases
MasterRun library unit tests

The official home for the Pixel Streaming servers and frontend!

The frontend and web server elements for Unreal Pixel Streaming (previously located in Samples/PixelStreaming/WebServers) are now in this repository, for all to contribute to. They are referred to as the Pixel Streaming Infrastructure.

Goals

The goals of this repository are to:

  • Increase the release cadence for the Pixel Streaming servers (to mitigate browser breaking changes sooner).
  • Encourage easier contribution of these components by Unreal Engine licensees.
  • Facilitate a more standard web release mechanism.
  • Grant a permissive license to distribute and modify this code wherever you see fit (MIT licensed).

Contributing

If you would like to contribute to our repository, please reference our contribution guide. Thank you for your time and your efforts!

Contents

The Pixel Streaming Infrastructure contains reference implementations for all the components needed to run a pixel streaming application. They are structured as separate projects, which work together, but are designed to be modular and interoperable with other implementations which use WebRTC technology. These implementations include:

  • A signalling web server, called Cirrus, found in SignallingWebServer/.

  • An SFU (Selective Forwarding Unit), found in SFU/.

  • A matchmaker, found in Matchmaker/.

  • Several frontend projects for the WebRTC player and input, found in Frontend/:

    For detailed information, see the /frontend.

Releases

We release a number of different components under this repository, specifically:

  • Container images for the signalling server
  • NPM packages for the frontend
  • Source releases of this repo with the reference frontend built as a minified js bundle

Container images

The following container images are built from this repository:

NPM Packages

The following are unofficial NPM packages (official ones coming soon):

BranchFrontend libraryFrontend reference ui
UE5.3lib-pixelstreamingfrontend-ue5.3lib-pixelstreamingfrontend-ui-ue5.3

NPM getting started

#frontend (core lib)
npm i @epicgames-ps/lib-pixelstreamingfrontend-ue5.3
#frontend ui
npm i @epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3

Documentation

Tagged source releases + built typescript frontend

Github releases

Container images

The following container images are built from this repository:

Versions

We maintain versions of the servers and frontend that are compatible with existing and in-development version of Unreal Engine.

⚠️There are breaking changes between UE versions - so make sure you get the right version. ⚠️

For a list of major changes between versions please refer to the changelog.

This repository contains the following in branches that track Unreal Engine versions:

BranchStatus
MasterDev
UE5.4Pre-release
UE5.3Current
UE5.2Supported
UE5.1End of life
UE5.0Unsupported
UE4.27Unsupported
UE4.26Unsupported
LegendMeaning
DevThis is our dev branch, intended to be paired with ue5-main - experimental.
Pre-releaseCode in here will be paired with the next UE release, we periodically update this branch from master.
CurrentSupported and this is the branch tracking the latest released version of UE.
SupportedWe will accept bugfixes/issues for this version.
End of lifeOnce the next UE version is released we will not support this version anymore.
UnsupportedWe will not be supporting this version with bugfixes.

Legal

© 2004-2023, Epic Games, Inc. Unreal and its logo are Epic’s trademarks or registered trademarks in the US and elsewhere.

About

Reference implementations for Pixel Streaming infra

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Branch
UE5.4Publish frontend libPublish ui-libPublish cirrus containerReleases
UE5.3Publish frontend libPublish ui-libPublish cirrus containerReleases
MasterRun library unit tests

The official home for the Pixel Streaming servers and frontend!

The frontend and web server elements for Unreal Pixel Streaming (previously located in Samples/PixelStreaming/WebServers) are now in this repository, for all to contribute to. They are referred to as the Pixel Streaming Infrastructure.

Goals

The goals of this repository are to:

  • Increase the release cadence for the Pixel Streaming servers (to mitigate browser breaking changes sooner).
  • Encourage easier contribution of these components by Unreal Engine licensees.
  • Facilitate a more standard web release mechanism.
  • Grant a permissive license to distribute and modify this code wherever you see fit (MIT licensed).

Contributing

If you would like to contribute to our repository, please reference our contribution guide. Thank you for your time and your efforts!

Contents

The Pixel Streaming Infrastructure contains reference implementations for all the components needed to run a pixel streaming application. They are structured as separate projects, which work together, but are designed to be modular and interoperable with other implementations which use WebRTC technology. These implementations include:

  • A signalling web server, called Cirrus, found in SignallingWebServer/.

  • An SFU (Selective Forwarding Unit), found in SFU/.

  • A matchmaker, found in Matchmaker/.

  • Several frontend projects for the WebRTC player and input, found in Frontend/:

    For detailed information, see the /frontend.

Releases

We release a number of different components under this repository, specifically:

  • Container images for the signalling server
  • NPM packages for the frontend
  • Source releases of this repo with the reference frontend built as a minified js bundle

Container images

The following container images are built from this repository:

NPM Packages

The following are unofficial NPM packages (official ones coming soon):

BranchFrontend libraryFrontend reference ui
UE5.3lib-pixelstreamingfrontend-ue5.3lib-pixelstreamingfrontend-ui-ue5.3

NPM getting started

#frontend (core lib)
npm i @epicgames-ps/lib-pixelstreamingfrontend-ue5.3
#frontend ui
npm i @epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3

Documentation

Tagged source releases + built typescript frontend

Github releases

Container images

The following container images are built from this repository:

Versions

We maintain versions of the servers and frontend that are compatible with existing and in-development version of Unreal Engine.

⚠️There are breaking changes between UE versions - so make sure you get the right version. ⚠️

For a list of major changes between versions please refer to the changelog.

This repository contains the following in branches that track Unreal Engine versions:

BranchStatus
MasterDev
UE5.4Pre-release
UE5.3Current
UE5.2Supported
UE5.1End of life
UE5.0Unsupported
UE4.27Unsupported
UE4.26Unsupported
LegendMeaning
DevThis is our dev branch, intended to be paired with ue5-main - experimental.
Pre-releaseCode in here will be paired with the next UE release, we periodically update this branch from master.
CurrentSupported and this is the branch tracking the latest released version of UE.
SupportedWe will accept bugfixes/issues for this version.
End of lifeOnce the next UE version is released we will not support this version anymore.
UnsupportedWe will not be supporting this version with bugfixes.

Legal

© 2004-2023, Epic Games, Inc. Unreal and its logo are Epic’s trademarks or registered trademarks in the US and elsewhere.

About

Reference implementations for Pixel Streaming infra

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Branch
UE5.4Publish frontend libPublish ui-libPublish cirrus containerReleases
UE5.3Publish frontend libPublish ui-libPublish cirrus containerReleases
MasterRun library unit tests

The official home for the Pixel Streaming servers and frontend!

The frontend and web server elements for Unreal Pixel Streaming (previously located in Samples/PixelStreaming/WebServers) are now in this repository, for all to contribute to. They are referred to as the Pixel Streaming Infrastructure.

Goals

The goals of this repository are to:

  • Increase the release cadence for the Pixel Streaming servers (to mitigate browser breaking changes sooner).
  • Encourage easier contribution of these components by Unreal Engine licensees.
  • Facilitate a more standard web release mechanism.
  • Grant a permissive license to distribute and modify this code wherever you see fit (MIT licensed).

Contributing

If you would like to contribute to our repository, please reference our contribution guide. Thank you for your time and your efforts!

Contents

The Pixel Streaming Infrastructure contains reference implementations for all the components needed to run a pixel streaming application. They are structured as separate projects, which work together, but are designed to be modular and interoperable with other implementations which use WebRTC technology. These implementations include:

  • A signalling web server, called Cirrus, found in SignallingWebServer/.

  • An SFU (Selective Forwarding Unit), found in SFU/.

  • A matchmaker, found in Matchmaker/.

  • Several frontend projects for the WebRTC player and input, found in Frontend/:

    For detailed information, see the /frontend.

Releases

We release a number of different components under this repository, specifically:

  • Container images for the signalling server
  • NPM packages for the frontend
  • Source releases of this repo with the reference frontend built as a minified js bundle

Container images

The following container images are built from this repository:

NPM Packages

The following are unofficial NPM packages (official ones coming soon):

BranchFrontend libraryFrontend reference ui
UE5.3lib-pixelstreamingfrontend-ue5.3lib-pixelstreamingfrontend-ui-ue5.3

NPM getting started

#frontend (core lib)
npm i @epicgames-ps/lib-pixelstreamingfrontend-ue5.3
#frontend ui
npm i @epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3

Documentation

Tagged source releases + built typescript frontend

Github releases

Container images

The following container images are built from this repository:

Versions

We maintain versions of the servers and frontend that are compatible with existing and in-development version of Unreal Engine.

⚠️There are breaking changes between UE versions - so make sure you get the right version. ⚠️

For a list of major changes between versions please refer to the changelog.

This repository contains the following in branches that track Unreal Engine versions:

BranchStatus
MasterDev
UE5.4Pre-release
UE5.3Current
UE5.2Supported
UE5.1End of life
UE5.0Unsupported
UE4.27Unsupported
UE4.26Unsupported
LegendMeaning
DevThis is our dev branch, intended to be paired with ue5-main - experimental.
Pre-releaseCode in here will be paired with the next UE release, we periodically update this branch from master.
CurrentSupported and this is the branch tracking the latest released version of UE.
SupportedWe will accept bugfixes/issues for this version.
End of lifeOnce the next UE version is released we will not support this version anymore.
UnsupportedWe will not be supporting this version with bugfixes.

Legal

© 2004-2023, Epic Games, Inc. Unreal and its logo are Epic’s trademarks or registered trademarks in the US and elsewhere.

About

Reference implementations for Pixel Streaming infra

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Branch
UE5.4Publish frontend libPublish ui-libPublish cirrus containerReleases
UE5.3Publish frontend libPublish ui-libPublish cirrus containerReleases
MasterRun library unit tests

The official home for the Pixel Streaming servers and frontend!

The frontend and web server elements for Unreal Pixel Streaming (previously located in Samples/PixelStreaming/WebServers) are now in this repository, for all to contribute to. They are referred to as the Pixel Streaming Infrastructure.

Goals

The goals of this repository are to:

  • Increase the release cadence for the Pixel Streaming servers (to mitigate browser breaking changes sooner).
  • Encourage easier contribution of these components by Unreal Engine licensees.
  • Facilitate a more standard web release mechanism.
  • Grant a permissive license to distribute and modify this code wherever you see fit (MIT licensed).

Contributing

If you would like to contribute to our repository, please reference our contribution guide. Thank you for your time and your efforts!

Contents

The Pixel Streaming Infrastructure contains reference implementations for all the components needed to run a pixel streaming application. They are structured as separate projects, which work together, but are designed to be modular and interoperable with other implementations which use WebRTC technology. These implementations include:

  • A signalling web server, called Cirrus, found in SignallingWebServer/.

  • An SFU (Selective Forwarding Unit), found in SFU/.

  • A matchmaker, found in Matchmaker/.

  • Several frontend projects for the WebRTC player and input, found in Frontend/:

    For detailed information, see the /frontend.

Releases

We release a number of different components under this repository, specifically:

  • Container images for the signalling server
  • NPM packages for the frontend
  • Source releases of this repo with the reference frontend built as a minified js bundle

Container images

The following container images are built from this repository:

NPM Packages

The following are unofficial NPM packages (official ones coming soon):

BranchFrontend libraryFrontend reference ui
UE5.3lib-pixelstreamingfrontend-ue5.3lib-pixelstreamingfrontend-ui-ue5.3

NPM getting started

#frontend (core lib)
npm i @epicgames-ps/lib-pixelstreamingfrontend-ue5.3
#frontend ui
npm i @epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3

Documentation

Tagged source releases + built typescript frontend

Github releases

Container images

The following container images are built from this repository:

Versions

We maintain versions of the servers and frontend that are compatible with existing and in-development version of Unreal Engine.

⚠️There are breaking changes between UE versions - so make sure you get the right version. ⚠️

For a list of major changes between versions please refer to the changelog.

This repository contains the following in branches that track Unreal Engine versions:

BranchStatus
MasterDev
UE5.4Pre-release
UE5.3Current
UE5.2Supported
UE5.1End of life
UE5.0Unsupported
UE4.27Unsupported
UE4.26Unsupported
LegendMeaning
DevThis is our dev branch, intended to be paired with ue5-main - experimental.
Pre-releaseCode in here will be paired with the next UE release, we periodically update this branch from master.
CurrentSupported and this is the branch tracking the latest released version of UE.
SupportedWe will accept bugfixes/issues for this version.
End of lifeOnce the next UE version is released we will not support this version anymore.
UnsupportedWe will not be supporting this version with bugfixes.

Legal

© 2004-2023, Epic Games, Inc. Unreal and its logo are Epic’s trademarks or registered trademarks in the US and elsewhere.

About

Reference implementations for Pixel Streaming infra

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Branch
UE5.4Publish frontend libPublish ui-libPublish cirrus containerReleases
UE5.3Publish frontend libPublish ui-libPublish cirrus containerReleases
MasterRun library unit tests

The official home for the Pixel Streaming servers and frontend!

The frontend and web server elements for Unreal Pixel Streaming (previously located in Samples/PixelStreaming/WebServers) are now in this repository, for all to contribute to. They are referred to as the Pixel Streaming Infrastructure.

Goals

The goals of this repository are to:

  • Increase the release cadence for the Pixel Streaming servers (to mitigate browser breaking changes sooner).
  • Encourage easier contribution of these components by Unreal Engine licensees.
  • Facilitate a more standard web release mechanism.
  • Grant a permissive license to distribute and modify this code wherever you see fit (MIT licensed).

Contributing

If you would like to contribute to our repository, please reference our contribution guide. Thank you for your time and your efforts!

Contents

The Pixel Streaming Infrastructure contains reference implementations for all the components needed to run a pixel streaming application. They are structured as separate projects, which work together, but are designed to be modular and interoperable with other implementations which use WebRTC technology. These implementations include:

  • A signalling web server, called Cirrus, found in SignallingWebServer/.

  • An SFU (Selective Forwarding Unit), found in SFU/.

  • A matchmaker, found in Matchmaker/.

  • Several frontend projects for the WebRTC player and input, found in Frontend/:

    For detailed information, see the /frontend.

Releases

We release a number of different components under this repository, specifically:

  • Container images for the signalling server
  • NPM packages for the frontend
  • Source releases of this repo with the reference frontend built as a minified js bundle

Container images

The following container images are built from this repository:

NPM Packages

The following are unofficial NPM packages (official ones coming soon):

BranchFrontend libraryFrontend reference ui
UE5.3lib-pixelstreamingfrontend-ue5.3lib-pixelstreamingfrontend-ui-ue5.3

NPM getting started

#frontend (core lib)
npm i @epicgames-ps/lib-pixelstreamingfrontend-ue5.3
#frontend ui
npm i @epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3

Documentation

Tagged source releases + built typescript frontend

Github releases

Container images

The following container images are built from this repository:

Versions

We maintain versions of the servers and frontend that are compatible with existing and in-development version of Unreal Engine.

⚠️There are breaking changes between UE versions - so make sure you get the right version. ⚠️

For a list of major changes between versions please refer to the changelog.

This repository contains the following in branches that track Unreal Engine versions:

BranchStatus
MasterDev
UE5.4Pre-release
UE5.3Current
UE5.2Supported
UE5.1End of life
UE5.0Unsupported
UE4.27Unsupported
UE4.26Unsupported
LegendMeaning
DevThis is our dev branch, intended to be paired with ue5-main - experimental.
Pre-releaseCode in here will be paired with the next UE release, we periodically update this branch from master.
CurrentSupported and this is the branch tracking the latest released version of UE.
SupportedWe will accept bugfixes/issues for this version.
End of lifeOnce the next UE version is released we will not support this version anymore.
UnsupportedWe will not be supporting this version with bugfixes.

Legal

© 2004-2023, Epic Games, Inc. Unreal and its logo are Epic’s trademarks or registered trademarks in the US and elsewhere.

About

Reference implementations for Pixel Streaming infra

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Branch
UE5.4Publish frontend libPublish ui-libPublish cirrus containerReleases
UE5.3Publish frontend libPublish ui-libPublish cirrus containerReleases
MasterRun library unit tests

The official home for the Pixel Streaming servers and frontend!

The frontend and web server elements for Unreal Pixel Streaming (previously located in Samples/PixelStreaming/WebServers) are now in this repository, for all to contribute to. They are referred to as the Pixel Streaming Infrastructure.

Goals

The goals of this repository are to:

  • Increase the release cadence for the Pixel Streaming servers (to mitigate browser breaking changes sooner).
  • Encourage easier contribution of these components by Unreal Engine licensees.
  • Facilitate a more standard web release mechanism.
  • Grant a permissive license to distribute and modify this code wherever you see fit (MIT licensed).

Contributing

If you would like to contribute to our repository, please reference our contribution guide. Thank you for your time and your efforts!

Contents

The Pixel Streaming Infrastructure contains reference implementations for all the components needed to run a pixel streaming application. They are structured as separate projects, which work together, but are designed to be modular and interoperable with other implementations which use WebRTC technology. These implementations include:

  • A signalling web server, called Cirrus, found in SignallingWebServer/.

  • An SFU (Selective Forwarding Unit), found in SFU/.

  • A matchmaker, found in Matchmaker/.

  • Several frontend projects for the WebRTC player and input, found in Frontend/:

    For detailed information, see the /frontend.

Releases

We release a number of different components under this repository, specifically:

  • Container images for the signalling server
  • NPM packages for the frontend
  • Source releases of this repo with the reference frontend built as a minified js bundle

Container images

The following container images are built from this repository:

NPM Packages

The following are unofficial NPM packages (official ones coming soon):

BranchFrontend libraryFrontend reference ui
UE5.3lib-pixelstreamingfrontend-ue5.3lib-pixelstreamingfrontend-ui-ue5.3

NPM getting started

#frontend (core lib)
npm i @epicgames-ps/lib-pixelstreamingfrontend-ue5.3
#frontend ui
npm i @epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3

Documentation

Tagged source releases + built typescript frontend

Github releases

Container images

The following container images are built from this repository:

Versions

We maintain versions of the servers and frontend that are compatible with existing and in-development version of Unreal Engine.

⚠️There are breaking changes between UE versions - so make sure you get the right version. ⚠️

For a list of major changes between versions please refer to the changelog.

This repository contains the following in branches that track Unreal Engine versions:

BranchStatus
MasterDev
UE5.4Pre-release
UE5.3Current
UE5.2Supported
UE5.1End of life
UE5.0Unsupported
UE4.27Unsupported
UE4.26Unsupported
LegendMeaning
DevThis is our dev branch, intended to be paired with ue5-main - experimental.
Pre-releaseCode in here will be paired with the next UE release, we periodically update this branch from master.
CurrentSupported and this is the branch tracking the latest released version of UE.
SupportedWe will accept bugfixes/issues for this version.
End of lifeOnce the next UE version is released we will not support this version anymore.
UnsupportedWe will not be supporting this version with bugfixes.

Legal

© 2004-2023, Epic Games, Inc. Unreal and its logo are Epic’s trademarks or registered trademarks in the US and elsewhere.

About

Reference implementations for Pixel Streaming infra

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Branch
UE5.4Publish frontend libPublish ui-libPublish cirrus containerReleases
UE5.3Publish frontend libPublish ui-libPublish cirrus containerReleases
MasterRun library unit tests

The official home for the Pixel Streaming servers and frontend!

The frontend and web server elements for Unreal Pixel Streaming (previously located in Samples/PixelStreaming/WebServers) are now in this repository, for all to contribute to. They are referred to as the Pixel Streaming Infrastructure.

Goals

The goals of this repository are to:

  • Increase the release cadence for the Pixel Streaming servers (to mitigate browser breaking changes sooner).
  • Encourage easier contribution of these components by Unreal Engine licensees.
  • Facilitate a more standard web release mechanism.
  • Grant a permissive license to distribute and modify this code wherever you see fit (MIT licensed).

Contributing

If you would like to contribute to our repository, please reference our contribution guide. Thank you for your time and your efforts!

Contents

The Pixel Streaming Infrastructure contains reference implementations for all the components needed to run a pixel streaming application. They are structured as separate projects, which work together, but are designed to be modular and interoperable with other implementations which use WebRTC technology. These implementations include:

  • A signalling web server, called Cirrus, found in SignallingWebServer/.

  • An SFU (Selective Forwarding Unit), found in SFU/.

  • A matchmaker, found in Matchmaker/.

  • Several frontend projects for the WebRTC player and input, found in Frontend/:

    For detailed information, see the /frontend.

Releases

We release a number of different components under this repository, specifically:

  • Container images for the signalling server
  • NPM packages for the frontend
  • Source releases of this repo with the reference frontend built as a minified js bundle

Container images

The following container images are built from this repository:

NPM Packages

The following are unofficial NPM packages (official ones coming soon):

BranchFrontend libraryFrontend reference ui
UE5.3lib-pixelstreamingfrontend-ue5.3lib-pixelstreamingfrontend-ui-ue5.3

NPM getting started

#frontend (core lib)
npm i @epicgames-ps/lib-pixelstreamingfrontend-ue5.3
#frontend ui
npm i @epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3

Documentation

Tagged source releases + built typescript frontend

Github releases

Container images

The following container images are built from this repository:

Versions

We maintain versions of the servers and frontend that are compatible with existing and in-development version of Unreal Engine.

⚠️There are breaking changes between UE versions - so make sure you get the right version. ⚠️

For a list of major changes between versions please refer to the changelog.

This repository contains the following in branches that track Unreal Engine versions:

BranchStatus
MasterDev
UE5.4Pre-release
UE5.3Current
UE5.2Supported
UE5.1End of life
UE5.0Unsupported
UE4.27Unsupported
UE4.26Unsupported
LegendMeaning
DevThis is our dev branch, intended to be paired with ue5-main - experimental.
Pre-releaseCode in here will be paired with the next UE release, we periodically update this branch from master.
CurrentSupported and this is the branch tracking the latest released version of UE.
SupportedWe will accept bugfixes/issues for this version.
End of lifeOnce the next UE version is released we will not support this version anymore.
UnsupportedWe will not be supporting this version with bugfixes.

Legal

© 2004-2023, Epic Games, Inc. Unreal and its logo are Epic’s trademarks or registered trademarks in the US and elsewhere.

About

Reference implementations for Pixel Streaming infra

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Branch
UE5.4Publish frontend libPublish ui-libPublish cirrus containerReleases
UE5.3Publish frontend libPublish ui-libPublish cirrus containerReleases
MasterRun library unit tests

The official home for the Pixel Streaming servers and frontend!

The frontend and web server elements for Unreal Pixel Streaming (previously located in Samples/PixelStreaming/WebServers) are now in this repository, for all to contribute to. They are referred to as the Pixel Streaming Infrastructure.

Goals

The goals of this repository are to:

  • Increase the release cadence for the Pixel Streaming servers (to mitigate browser breaking changes sooner).
  • Encourage easier contribution of these components by Unreal Engine licensees.
  • Facilitate a more standard web release mechanism.
  • Grant a permissive license to distribute and modify this code wherever you see fit (MIT licensed).

Contributing

If you would like to contribute to our repository, please reference our contribution guide. Thank you for your time and your efforts!

Contents

The Pixel Streaming Infrastructure contains reference implementations for all the components needed to run a pixel streaming application. They are structured as separate projects, which work together, but are designed to be modular and interoperable with other implementations which use WebRTC technology. These implementations include:

  • A signalling web server, called Cirrus, found in SignallingWebServer/.

  • An SFU (Selective Forwarding Unit), found in SFU/.

  • A matchmaker, found in Matchmaker/.

  • Several frontend projects for the WebRTC player and input, found in Frontend/:

    For detailed information, see the /frontend.

Releases

We release a number of different components under this repository, specifically:

  • Container images for the signalling server
  • NPM packages for the frontend
  • Source releases of this repo with the reference frontend built as a minified js bundle

Container images

The following container images are built from this repository:

NPM Packages

The following are unofficial NPM packages (official ones coming soon):

BranchFrontend libraryFrontend reference ui
UE5.3lib-pixelstreamingfrontend-ue5.3lib-pixelstreamingfrontend-ui-ue5.3

NPM getting started

#frontend (core lib)
npm i @epicgames-ps/lib-pixelstreamingfrontend-ue5.3
#frontend ui
npm i @epicgames-ps/lib-pixelstreamingfrontend-ui-ue5.3

Documentation

Tagged source releases + built typescript frontend

Github releases

Container images

The following container images are built from this repository:

Versions

We maintain versions of the servers and frontend that are compatible with existing and in-development version of Unreal Engine.

⚠️There are breaking changes between UE versions - so make sure you get the right version. ⚠️

For a list of major changes between versions please refer to the changelog.

This repository contains the following in branches that track Unreal Engine versions:

BranchStatus
MasterDev
UE5.4Pre-release
UE5.3Current
UE5.2Supported
UE5.1End of life
UE5.0Unsupported
UE4.27Unsupported
UE4.26Unsupported
LegendMeaning
DevThis is our dev branch, intended to be paired with ue5-main - experimental.
Pre-releaseCode in here will be paired with the next UE release, we periodically update this branch from master.
CurrentSupported and this is the branch tracking the latest released version of UE.
SupportedWe will accept bugfixes/issues for this version.
End of lifeOnce the next UE version is released we will not support this version anymore.
UnsupportedWe will not be supporting this version with bugfixes.

Legal

© 2004-2023, Epic Games, Inc. Unreal and its logo are Epic’s trademarks or registered trademarks in the US and elsewhere.

About

Reference implementations for Pixel Streaming infra

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages