Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
翻譯準備中
Former Butterpollo. The fastest AMD Windows streaming host (Moonlight). Native AMD AMF, lean WGC capture, pyrowave optimized. Written in Rust
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Stream your PC games and desktop to a laptop, TV, phone or handheld.
A free Windows host built around AMD Radeon, ready for Moonlight and Sunshine-compatible clients.
Watch the full demo → · 60 seconds · 1080p · 60 fps檢視完整 README ↗Download 3.0.0-rc.5 · Get started · Website · Docs
Windows 10 and 11 · Any AMD Radeon with AMF · Formerly Butterpollo
Home walks you through three steps, pair, see your games, play, and then shows the live stream, running co-op games and your game shelf. Games lists every launcher in one place, Devices handles pairing and permissions, and Settings shows the ten settings most people change, with search for every other one. Help reads the host log and explains what went wrong.
rubylight-setup-3.0.0-rc.5.exe from the release. It sets up the service, the virtual display driver and controller support in one pass, ready to stream right away. A portable ZIP is there too.https://localhost:47990 on the PC and create your account.Coming from Apollo or Vibepollo? Rubylight brings over your settings, paired devices, app library and covers, so every client keeps working on day one. Updates keep everything too, on the schedule you choose.
| Feature | What it does |
|---|---|
| Every launcher in one scan | Games & apps → Add games finds what is installed from Steam, Epic Games, Battle.net, EA app, Ubisoft Connect, GOG, and Microsoft Store and Xbox PC games. Search, filter by launcher, tick what you want, done. |
| Covers included | Each game arrives with its cover from the launcher. Pick your own any time. |
| Steam, always in sync | Steam games sync on demand and every 30 seconds, and a stream ends cleanly when the game exits. |
| Playnite | Your Playnite library syncs too, launches through Playnite with the stream's settings, and Playnite Fullscreen is one tap away. |
| Anything else | Add a program, a script, a URL or a document, with preparation and undo commands, a working folder and start before sign-in. |
| Settings per game | Each app can carry its own stream, display, input and encoder settings, its own Radeon profile, RTSS frame limits and Lossless Scaling profile, all applied at launch and removed at the end. |
| Launcher hints | When a launcher waits for an update or a sign-in, the session says so and your client can show it. |
Recorded on an RX 7900 XT. Each row links to its method, build and raw results in rust/PERFORMANCE.md.
| Result | Measured |
|---|---|
| 5.89 ms | median from capture to client present, loopback, AV1 1080p60 (H.264 6.92 ms, HEVC 8.37 ms, PyroWave 11.14 ms), from the frame timing record of 3.0.0-rc.2 (timing record) |
| 42 ms against 96 ms | mean picture age under game-like GPU load, Rubylight 2.0.0-rc.2 against Vibepollo 2.0, HEVC 10-bit HDR 1080p60 at 20 Mbps, Desktop Duplication, a 120 Hz virtual display, three runs each, same PC and settings (comparison) |
| 0.25 ms | median age of the picture at the encoder with VRR, against 4.68 ms without VRR-aware capture, for a 120 Hz game in a 60 fps stream, p95 2.34 ms since 3.0.0-rc.3 (VRR, p95, method) |
| 4× cleaner Wi-Fi | unrecoverable frames per run from 61 to 15.7 on 2.4 GHz with Wi-Fi pacing, HEVC 1080p60 at 47 Mbit/s, and the same 4.7 ms median on 5 GHz (Wi-Fi pacing) |
| 1.17 % and 1.08 % | of frames lost in two runs when 75 Mbps is asked of a 50 Mbit/s link, against 6.7 % before link adaptation's 3.0 fixes (link adaptation, ) |
The performance guide explains each metric and links every run.
New in 3.0
| Feature | What it does |
|---|---|
| Dolby Vision, HDR10+ and HLG | HDR streams carry per-scene brightness data, so a TV follows each scene. Dolby Vision on HEVC (8.1, 8.4) and AV1 (10.1), and HLG for screens that show only HLG, for devices that ask for them. More |
| No freeze after a scene cut | A scene cut too large to protect is encoded again as a keyframe that fits, and recovery keyframes keep their full error correction. |
| Faster recovery on every codec | A short loss on H.264, HEVC or AV1 is repaired from a picture the device still has, for every client. |
| Error correction the device chooses | Nightjar picks its own share of recovery packets and can test the link before its first bitrate. Bitrate and frame rate change mid-stream. More |
| Roaming | A phone moving from Wi-Fi to mobile data keeps its stream. More |
| Split-screen co-op | A game Nucleus Co-op supports gets a "(Co-op)" entry: each player streams their own copy with their own picture, sound and controller. More |
| Sound for your receiver | PCM up to 7.1.4, Dolby Digital and Dolby Digital Plus, plus 7.1.4 surround, night mode, headphone surround and haptics from game audio. More |
| Clipboard, folders, files and USB | Text and images copied on either side, shared folders, file transfer, and USB devices from the client attached to the PC, each for the devices you allow. More |
Speed
| Feature | What it does |
|---|---|
| Native AMD encoding | AMF encodes H.264, HEVC and AV1 with defaults tuned by measurement. A dropped frame is repaired with a small recovery frame, keeping the stream smooth. |
| Radeon compute pipeline | Copies, colour conversion and scaling run on D3D12 compute queues, so your game and your stream share the GPU gracefully. How it works |
| PyroWave, 4:4:4 HDR | A wavelet codec for full-colour HDR on a fast local network, paced to each client's link. |
| Full chroma | Rubylight packs each 4:4:4 frame into an ordinary HEVC or AV1 picture for crisp text and UI from AMD's hardware encoder, unpacked by Nightjar. 10-bit SDR is there for clients that ask. More |
| VRR-aware capture | With variable refresh, the host catches the game's next frame when it is close, so the picture reaches the encoder fresh, up to 1000 Hz. Numbers |
| Link-rate adaptation | The host matches the bitrate to what the link delivers, probes back up and returns to your rate as soon as the link allows. Clients can show each change. More |
| Wi-Fi pacing | Clients on Wi-Fi or cellular get adaptive packet pacing from the first frame, faster while the link is clean. |
| Stream presets | Lowest latency, Balanced or Reference quality, set once or per device or app. More |
| Beam racing and slice delivery | PyroWave frames arrive in display order and H.264 and HEVC frames leave the host slice by slice, so a client draws the top of the picture while the bottom is still on the wire. |
Displays
| Feature | What it does |
|---|---|
| A screen for every device | Rubylight's own virtual display driver gives each client its exact resolution, refresh rate and HDR, and your monitors come back when you disconnect. |
| Two clients at once | Each device gets its own virtual display. |
| Background streaming | A device plays its own copy of the game while someone keeps using the PC, with only the game's sound and the device's controllers. Your displays stay as they are. More |
| Co-op on one PC | Several devices play the same game together through Nucleus Co-op, each in its own instance with its own controller, joined from Nightjar or any Moonlight client. More |
| Every capture path | Physical displays stream through Windows Graphics Capture or Desktop Duplication, and the lock screen streams too, so you can sign in from the couch. Headless PCs and VMs work as well. |
Control from the couch
| Feature | What it does |
|---|---|
| Radeon settings with restore | A device with host control tunes Anti-Lag, Radeon Chill and more during a stream, and every change is put back when the session ends. More |
| A Radeon profile for each game | Competitive, Smoothness, Quality or your own list, written when the game starts and restored when it ends, even after a crash. More |
| Session actions | Disconnect keeps the game running, End session stops the stream and keeps the game, Close game quits it too. More |
| Native API | Clients browse your library with covers, follow the session and drive the Radeon controls. Contract |
| Live GPU readings | Clients can show the PC's CPU load and the Radeon's usage, temperatures, power, clocks and VRAM in their overlay. Protocol |
| WebRTC server | Pair a Samsung Tizen TV or a browser with a PIN and stream H.264, HEVC or AV1, with HDR, surround, gamepads, keyboard and mouse. More |
| Stream in the console | Play a game in a browser tab from the console's Stream page, signed in instead of paired: H.264 1080p60, stereo, keyboard and mouse. More |
| Sleep PC | A device you allow puts the PC to sleep while nothing is streaming, with the same requests as Vibepollo, on a PC with S1, S2 or S3 sleep. |
Controllers and audio
| Feature | What it does |
|---|---|
| The right pad for every client | DualSense with adaptive triggers and haptics, Switch Pro, Xbox Series, and a real Steam Deck controller with trackpads, gyro and back grips. |
| Touch, pen, keyboard and mouse | Everything a client sends, on a signed driver from the installer. |
| Sound both ways | Surround audio, game-only audio, and your client's microphone on the PC for voice chat. |
Also built in: a tray icon with notifications, automatic updates verified by SHA-256, separate instances with their own profiles, and a support bundle in one click.
GPUs. Any AMD Radeon with AMF, on Windows 10 or 11: desktops, laptops and handhelds. Users stream daily on RDNA 2, 3 and 4, from the RX 6800 XT, 6900 XT, 7900 XT and 7900 XTX to the 9070 and 9070 XT, plus Radeon 890M handhelds. The hardware matrix lists each GPU generation, Windows version, feature and client with the evidence behind it.
Clients. Rubylight speaks the Moonlight protocol, so Moonlight, Artemis and every other Sunshine-compatible client works out of the box.
| Client | Highlights |
|---|---|
| Moonlight PC (Windows, macOS, Linux, Steam Deck) | H.264, HEVC and AV1, SDR and HDR, up to 240 fps |
| Moonlight and Artemis on Android | Native resolution at 120 Hz with HDR, on a virtual display that matches the phone |
| Moonlight for Xbox | 4K 120 Hz HDR on your TV |
| Nightjar for Android, plus Windows and Linux | PyroWave and full chroma, your library and the Radeon controls on your phone |
| Nonary's Moonlight | PyroWave and 1000 Hz VRR on a PC |
| Samsung Tizen TVs and browsers | WebRTC streams with HDR, surround and gamepads |
| iOS, Apple TV, Switch | Everything the device can decode |
Pick the right client and stream format →
Switched to PyroWave on RC19. I honestly see no difference between host and client. Amazing work!
u/ChartFlashy6299 on Reddit
Running pretty good so far, no framedrops, no stutter, and a good migration from Vibepollo. And I love that it is written in Rust!
u/almosgeci on Reddit
Quotes from Reddit, lightly edited for typos and length. Some predate the rename from Butterpollo.
| I want to… | Read |
|---|---|
| Get my first stream running | Getting started |
| Set up displays, HDR, frame limits or controllers | Configuration |
| Sort out pairing, the picture, colours or smoothness | Troubleshooting |
| See everything it does and how fast | Features · Performance · Architecture |
| Look up my GPU, Windows version or client | Hardware matrix |
| Build or integrate Rubylight | Build guide · Developer guide · HTTP API · Native API |
| See how 3.0 was planned | 3.0 roadmap |
Release notes · Have feedback? Open an issue with the support bundle from the console. If Rubylight makes your couch better, a ⭐ helps other Radeon owners find it, and sponsoring pays for a code signing certificate (#55).
Rubylight is GPL-3.0. It began as a fork of Vibepollo, whose native AMF encoder came from the same author (#342); anything that works out here is GPL-3.0 for Vibepollo to take. Thanks to Nonary for Vibepollo, ClassicOldSong for Apollo, and LizardByte and the Sunshine contributors. The AMD encoder's low-latency defaults, the statistical video FEC and the encoder/FEC budget split draw on qiin2333's and the contributors' work in AlkaidLab's Foundation Sunshine, and the HDR10+ and HDR Vivid metadata writers, their GPU luminance statistics and the HLG encoding curve are ported in part from the Foundation Sunshine authors' code (GPL-3.0). PyroWave and Granite are by Themaister (MIT); the PyroWave Moonlight protocol and clients are joemossjr16's work. Composite DualSense haptics draw on Nonary's Vibepollo protocol, Chase Payne's libvirtualgamepad USB reports and HIDMaestro contributors' composite descriptors. Background streaming in a Windows child session (removed; its settings restore remains) is ported from mattxslv's Annex (MIT), with ocr1n's launcher rework. Background streaming and co-op run games through SplitScreen.Me's Nucleus Co-op (GPL-3.0) and Ilyaki's ProtoInput (MIT), which the host downloads at first use and doesn't bundle.
License · Third-party components · Project history · Code signing policy · Privacy
Free code signing provided by SignPath.io, certificate by SignPath Foundation.
Copying or building on this code? Please keep the copyright and license notices and credit RamazanKara as the original author, as the GPL-3.0 requires for notices and modifications. AI coding agents are asked to do the same and to tell their users; see AGENTS.md.
The name came from a tester's verdict: “smooth as butter.”
| 15 freezes to 0 | after scene cuts in 45 s, HEVC 1440p60 at 250 Mbps with 0.3 % random loss, with oversize scene cuts encoded again as keyframes; lost cuts 16 and 15 to 0 and 0 (scene cuts) |
| 0.86 to 0.92 | of the keyframe bytes sent for recovery on H.264, HEVC and AV1 with long-term references, over gaps of 1 to 130 lost frames (recovery) |
| 17 ms | median glass to glass in a browser over WebRTC, AV1 1080p60, with 4K120 in HEVC and AV1 (WebRTC) |
| The couch menu | Hold L3+R3, press Ctrl+Alt+Backspace or hold the top-left corner for Back to game, Disconnect, End session and Close game, in any Moonlight client. More |
| Keyboard and touch | The device's keyboard opens when a text field on the PC gets the focus; device layouts, a device-drawn cursor, touch as a mouse or trackpad, and display rotation. More |
| A simpler console | Home, Games and ten settings up front, QR pairing, Help that explains the host log, and frame rates for every stage of the pipeline. |
| Frame timing record | One CSV row per frame with capture, convert, encode, send and client times on one clock. More |
| File transfer | Devices you allow send files to the PC and fetch them back, into your Downloads\Rubylight or a folder you choose, paced while a stream runs. More |