Blog
PIN pairing that can't be brute-forced: SPAKE2 for game streaming
A 4-digit PIN sounds weak — only 10,000 combinations. Here's how punktfunk pairs a new device with a PIN you can type from the couch while giving an attacker just one online guess and no offline dictionary attack, using a PAKE that binds both devices' certificates.
Low-latency game streaming when the game is maxing out your GPU
The hardest case for any streaming host is the one that matters most: a demanding game already pinning the GPU. Here's why the encoder ends up waiting — and the two levers that took our encode time from ~30 ms to ~4 ms.
Why we wrote our own virtual display driver for game streaming
Headless streaming needs a virtual display — and the off-the-shelf ones fight Secure Boot, skip HDR, and still need a separate capture step. So we wrote our own: a signed, all-Rust Windows display driver that renders at your client’s exact resolution, carries HDR, and feeds the encoder directly.
IDD-push: streaming game capture without Desktop Duplication or WGC
Most self-hosted streaming hosts capture your screen with Desktop Duplication (DDA) or Windows.Graphics.Capture (WGC) — and inherit their blind spots. punktfunk captures a different way: the virtual display driver pushes finished frames straight to the encoder.
Why HDR works in DirectX games but not Vulkan games on a virtual display
On a streaming virtual display, Windows HDR and DirectX 12 games look fine, but Vulkan games say “HDR not supported.” Here’s the reason — and a two-minute way to confirm it with vulkaninfo.
Fixing Vulkan HDR on virtual displays: a Vulkan layer that does what the GPU driver won’t
NVIDIA/AMD Vulkan drivers hide HDR on indirect (virtual) displays, so Vulkan games refuse HDR when streaming. We proved the driver still presents a forced HDR swapchain — and shipped a tiny Vulkan layer that injects the missing formats. The full engineering story.
Vulkan games say “HDR not supported” when streaming on a virtual display? Here’s the fix
Doom: The Dark Ages and other Vulkan games refuse HDR when game-streaming through a virtual display — even though Windows HDR is on. Here’s why, and how to actually fix it.
Crisp text and 4:4:4 chroma for desktop and game streaming
Small text and thin UI lines looking blurry or fringed when streamed? That's chroma subsampling. What 4:2:0 vs 4:4:4 means, when 4:4:4 is worth the bandwidth, and how punktfunk handles it.
Controllers, gyro, and haptics over the network
Controller not detected, no rumble, gyro and touchpad ignored? How punktfunk forwards gamepads — including DualSense gyro, touchpad, haptics, and adaptive triggers — across its native clients.
Fixing crackling, desynced, and missing surround audio
Crackling audio, no sound, A/V drift, or surround collapsed to stereo when streaming? The usual causes — routing, sample rates, clocks, downmix — and how punktfunk keeps audio clean and in sync.
Multi-monitor hosts: streaming the right screen, every time
Streaming from a multi-monitor PC and getting the wrong display, black bars, or a cursor that wanders off? Here's why, and how punktfunk gives the client one clean virtual display.
The best self-hosted game streaming setups in 2026
A fair roundup of self-hosted game streaming in 2026 — Sunshine/Moonlight, Apollo/Artemis, Parsec, Steam Link, and punktfunk — with the best pick for each use case.
Punktfunk vs Sunshine + Moonlight: an honest comparison
Sunshine + Moonlight is the beloved open-source self-hosted streaming stack. Where Punktfunk differs — virtual displays, HDR, native clients, a Rust transport — and where Sunshine still wins.
PC game streaming on the Steam Deck, native through Decky
Stop wrestling Moonlight into Game Mode as a non-Steam game. punktfunk's Decky plugin puts PC streaming right in the Deck's UI — controller-native, suspend/resume aware.
Streaming ultrawide and 32:9 without resolution roulette
Black bars, wrong aspect ratios, and missing modes plague ultrawide game streaming. How punktfunk streams arbitrary resolutions natively — up to 5120×1440 at 240 fps.