Retro-Gaming in der Cloud: RetroArch auf einem GPU-Server, gestreamt mit Sunshine und Moonlight
Ihre Sammlung von Retro-Spielen an einem Ort, spielbar auf Laptop, Smartphone oder Fernseher, mit denselben Spielständen überall: Das bietet ein kleiner Cloud-Server mit GPU. Wir haben RetroArch auf einem Linux-Server mit Intel UHD 770 und ohne Bildschirm installiert und mit Sunshine (auf dem Server) zu Moonlight (auf der Seite des Spielers) gestreamt. Die GPU erledigt zwei Aufgaben: Sie zeichnet das Bild, einschließlich der CRT-Shader, die alte Spiele so aussehen lassen wie auf einem Röhrenfernseher, und sie kodiert den Videostream.
Nutzen Sie Ihre eigenen, legal erworbenen Spiele. Für diesen Test haben wir nur kostenlose Homebrew-Spiele verwendet, heruntergeladen von den offiziellen Seiten ihrer Autoren: Tobu Tobu Girl (Game Boy, von Tangram Games, kostenlos mit Quellcode veröffentlicht) und µCity (Game Boy Color, Open Source). Viele Autoren veröffentlichen auf diese Weise neue Spiele für alte Konsolen, und Sie können auch Ihre eigenen Module und Discs mit einem Dumper kopieren.
Die Ergebnisse im Überblick
- Die Emulation ist nicht das Problem: Mit ausgeschaltetem V-Sync lief ein Game-Boy-Spiel in RetroArch mit 1.863 fps und ein Game-Boy-Color-Spiel mit 1.807 fps in 1080p, etwa 30-mal so schnell wie die Konsole.
- Bei CRT-Shadern kommt es auf die GPU an: Mit crt-royale, einem der aufwendigsten CRT-Shader, zeichnete RetroArch in 1080p noch etwa 255 fps, viermal so viel wie nötig.
- Streamen kostet wenig: 1080p 60 fps H.264, von der GPU kodiert, im Schnitt 4,6 bis 6,5 ms Verarbeitung auf dem Server beim Spielen (mit oder ohne Shader), kein verlorenes Bild und nur 13 bis 17 % eines CPU-Kerns für Sunshine.
- iGPU Start reicht für 8- und 16-Bit-Konsolen; wählen Sie iGPU Power, wenn Sie auch anspruchsvollere Systeme spielen oder mehr Reserve wollen, wenn andere Server die GPU nutzen.
Testaufbau
| Komponente | Wert |
|---|---|
| Server | Debian 13, Linux 7.3, Intel UHD 770 (geteilte GPU), 4 vCPU, 8 GB RAM, kein Bildschirm |
| Emulator | RetroArch 1.20.0 (Debian-Pakete), Cores Gambatte (Game Boy) und mGBA (Game Boy Color) |
| Shader | libretro-Sammlung glsl-shaders (crt-royale, crt-lottes), OpenGL-Videotreiber |
| Bildschirm | headless sway (Wayland) in 1920×1080, von der GPU gezeichnet |
| Streaming | Sunshine 2026.914 auf dem Server, Moonlight 6.2 auf einem Linux-Client, H.264 1080p 60 fps, Hardware-Dekodierung |
| Netzwerk | Client und Server im selben Rechenzentrum: Über das Internet kommt die Latenz Ihrer Verbindung hinzu |
1. Ein Bildschirm für einen Server, der keinen hat
Ein Cloud-Server hat keinen Monitor, also geben wir ihm einen virtuellen. Wir haben sway verwendet,
einen kleinen Wayland-Desktop, im „Headless”-Modus: Er erzeugt einen 1920×1080-Bildschirm im Speicher
und zeichnet ihn mit der Intel-GPU. RetroArch läuft darauf im Vollbild, und Sunshine erfasst ihn direkt
(capture = wlr) und kodiert ihn auf der GPU (encoder = vaapi):
# ~/.config/sunshine/sunshine.conf
capture = wlr
encoder = vaapi
adapter_name = /dev/dri/renderD128
Sunshine findet dann die Hardware-Encoder (h264_vaapi, hevc_vaapi). AV1-Streaming ist auf dieser
GPU nicht verfügbar: Verwenden Sie H.264 oder HEVC in Moonlight. Vermeiden Sie Xvfb, den üblichen
„virtuellen Bildschirm” für X11: Er zeichnet alles mit der CPU, und die GPU würde für die Shader nicht
genutzt.
2. Wie schnell ist die Emulation?
Um zu messen, was der Server leisten kann, haben wir V-Sync ausgeschaltet und die Audiosynchronisation ebenfalls, und RetroArch eine feste Anzahl von Bildern so schnell wie möglich berechnen lassen, im Vollbild in 1080p. Wir haben 600 und 3.600 Bilder gestoppt und die Differenz geteilt, damit die Startzeit (Laden, Kompilieren der Shader) nicht mitzählt.
| RetroArch, 1080p, V-Sync aus | Ohne Shader | crt-royale | crt-lottes |
|---|---|---|---|
| Game Boy, Tobu Tobu Girl (Gambatte) | 1.863 fps | 257 fps | 80 bis 116 fps |
| Game Boy Color, µCity (mGBA) | 1.807 fps | 253 fps | nicht gemessen |
Die Emulation selbst kostet fast nichts: Diese Konsolen sind für einen modernen Prozessor winzig. Der CRT-Shader ist Arbeit für die GPU: Er zeichnet jedes Pixel des 1080p-Bildschirms neu, mit den Rasterzeilen, der Lochmaske und dem Leuchten eines Röhrenfernsehers. Selbst mit crt-royale bleibt der Server weit über den nötigen 60 fps. Die beiden Durchläufe mit crt-lottes ergaben unterschiedliche Werte (80 und 116 fps): Die GPU ist geteilt, und andere Testserver nutzten sie zu diesem Zeitpunkt.
V-Sync aus dient nur zum Messen. Zum Spielen stellen Sie RetroArch so ein, dass es der eigenen
Bildrate des Spiels folgt („Sync to Exact Content Framerate”, vrr_runloop_enable = "true"): Das Spiel
läuft dann in der Geschwindigkeit der Konsole (59,73 Hz bei einem Game Boy), und Moonlight zeigt es
flüssig auf Ihrem Bildschirm an.
3. Streamen mit Moonlight: was es kostet
Wir haben jedes Spiel aus Moonlight gestartet (jedes ist eine Sunshine-„Anwendung”, siehe unten), gespielt und die Leistungsanzeige von Moonlight sowie die CPU-Last des Servers notiert:
| Moonlight, 1080p 60 fps H.264 | Spiel, ohne Shader | Spiel, crt-royale | RetroArch-Menü |
|---|---|---|---|
| Verarbeitung auf dem Server (Erfassung + Kodierung), Mittel | 4,6 bis 6,5 ms | 5,8 bis 6,4 ms | 12,2 ms |
| Verarbeitung auf dem Server, min / max | 4,3 / 7,1 ms | 4,2 / 11,7 ms | 4,5 / 21,5 ms |
| Durch Netzwerk oder Jitter verlorene Bilder | 0 % | 0 % | 0 % |
| Dekodierzeit auf dem Client | 0,20 bis 0,23 ms | 0,21 bis 0,24 ms | 0,29 ms |
| CPU von Sunshine (Anteil eines Kerns) | 14 % | 17 % | nicht gemessen |
| CPU von RetroArch (Anteil eines Kerns) | 4 % | 6 % | nicht gemessen |
Der Stream nutzte 15 Mbit/s, die Standardeinstellung von Sunshine für 1080p. Der Encoder ist ein anderer Teil der GPU als der, der die Shader zeichnet: Deshalb bremst der CRT-Shader den Stream nicht. Das RetroArch-Menü mit seinem animierten Hintergrund braucht etwas länger zum Erfassen als ein Game-Boy-Spiel. Ihre Gesamtlatenz hängt vor allem von Ihrer Internetverbindung zum Server (in Deutschland) ab: Eine gute Glasfaserverbindung in Europa fügt typischerweise 10 bis 30 ms hinzu.
4. Eine Sunshine-Anwendung pro Spiel
Sunshine startet ein Programm, wenn Moonlight eine „Anwendung” anfordert. Wir haben eine für das Menü
von RetroArch und eine pro Spiel angelegt, damit sich ein Spiel direkt aus Moonlight starten lässt
(~/.config/sunshine/apps.json):
{
"name": "Tobu Tobu Girl (CRT)",
"cmd": "retroarch --appendconfig=/root/play.cfg --set-shader /root/glsl-shaders/crt/crt-royale.glslp -L /usr/lib/x86_64-linux-gnu/libretro/gambatte_libretro.so /root/roms/tobu.gb",
"auto-detach": "true",
"wait-all": "true"
}
play.cfg enthält die wenigen RetroArch-Einstellungen, auf die es beim Spielen über Sunshine ankommt:
video_driver = "gl"
video_fullscreen = "true"
video_vsync = "false"
vrr_runloop_enable = "true"
video_scale_integer = "true"
video_shader_enable = "true"
pause_nonactive = "false"
audio_driver = "pulse"
config_save_on_exit = "false"
pause_nonactive = "false" verhindert, dass RetroArch pausiert, wenn es glaubt, den Fokus verloren zu
haben, und config_save_on_exit = "false" verhindert, dass ein Test oder eine Änderung im Menü Ihre
Einstellungen überschreibt. Sunshine legt auf dem Server ein virtuelles Gamepad, eine Tastatur und eine
Maus für den Moonlight-Spieler an, sodass Ihr eigenes Gamepad funktioniert, als wäre es am Server
angeschlossen. Wenn Sie eine Spielebibliothek wie auf einer Konsole mit Coverbildern bevorzugen, lässt
sich ES-DE (EmulationStation Desktop Edition) als weitere Sunshine-Anwendung über RetroArch
hinzufügen; in diesem Test haben wir es nicht verwendet.
5. iGPU Start oder iGPU Power?
Für 8- und 16-Bit-Konsolen reicht iGPU Start (2 vCPU, 8 GB RAM, 14,99 € netto pro Monat): RetroArch und Sunshine zusammen belegten in unserem Test etwa ein Viertel eines Kerns. iGPU Power (4 vCPU, 14 GB RAM, doppelter GPU-Anteil von Start, 29,99 € netto pro Monat) ist die bessere Wahl, wenn Sie aufwendige CRT-Shader verwenden, anspruchsvollere Systeme spielen oder möchten, dass der Stream stabil bleibt, wenn andere Server die GPU gleichzeitig nutzen.
6. Einrichtung auf einem Linux-GPU-Server
Lieber sofort losspielen? Fragen Sie bei der Bestellung per E-Mail danach (contact@linuxgpu.eu): Wir können Ihnen den Server mit allem Folgenden vorinstalliert und eingerichtet liefern (virtueller Bildschirm, RetroArch, Shader, Sunshine). Sie installieren nur noch Moonlight auf Ihrem Computer, Smartphone oder TV-Gerät, koppeln es und fügen Ihre eigenen Spiele hinzu.
So richten Sie es selbst ein:
- Installieren Sie RetroArch und die Cores:
apt install retroarch libretro-gambatte libretro-mgba libretro-nestopia, und die Shader:git clone https://github.com/libretro/glsl-shaders. - Starten Sie eine headless sway-Sitzung auf der GPU (
WLR_BACKENDS=headless WLR_RENDER_DRM_DEVICE=/dev/dri/renderD128 sway) mit einer Ausgabe in 1920×1080. - Installieren Sie Sunshine (Debian-13-Paket aus den offiziellen GitHub-Releases) mit der Konfiguration oben und legen Sie eine Anwendung pro Spiel an.
- Öffnen Sie die Weboberfläche von Sunshine über einen SSH-Tunnel
(
ssh -L 47990:localhost:47990 you@your-server), legen Sie das Sunshine-Konto an und koppeln Sie Moonlight (Windows, macOS, Linux, Android, iOS, TV-Boxen). - Kopieren Sie Ihre Spiele auf den Server (
scp) und spielen Sie.
Ihr Server ist standardmäßig per IPv6 erreichbar. Wenn Ihre Verbindung kein IPv6 hat, buchen Sie die Option dedizierte IPv4 dazu oder verbinden Sie sich über Tailscale, ohne einen Port zu öffnen: siehe mit Moonlight und Tailscale überall auf Ihrem Cloud-Server spielen.
Für PC-Spiele lesen Sie Windows 11 in der Cloud mit Sunshine und Moonlight und Windows-Spiele auf einem Linux-GPU-Server mit Wine.
Systeme, die ab Werk spielbereit sind. Die Systeme, die wir standardmäßig installieren, sind bereits dafür eingerichtet: Debian 13 mit aktuellem Kernel (7.3), den Intel-GPU-Treibern und Mesa (OpenGL, Vulkan, VA-API-Videokodierung) sowie Windows 11 (Option) mit dem Intel-Grafiktreiber und GPU-beschleunigtem Remotedesktop. Keine Treibersuche: Spiel und Sunshine installieren und loslegen.
Ausprobieren
Zu den Angeboten: iGPU Start kostet 14,99 € und iGPU Power 29,99 € netto pro Monat.