Privátní cloud gaming

V datacentrech běžně provozujeme grafické karty pro strojové učení a zpracování dat. Napadla nás ale otázka: co kdybychom tyto stroje zkusili využít i na hraní her? A je možné si postavit privátní cloud gamingové prostředí?

Naše kancelářské počítače na hraní her nejsou vhodné – jsou to běžné pracovní stanice bez pořádných grafických karet. A tak vznikl nápad na malý experiment: zkusit si vybudovat vlastní cloud gaming řešení. Cílem bylo zjistit, jak složité je něco takového rozběhnout, a hlavně, jaký bude výsledný herní zážitek.

Cloud gaming

Cloud gaming je způsob hraní videoher, který nevyžaduje, aby hráč měl výkonný herní hardware, jako je herní konzole nebo počítač. Místo toho se samotná hra spouští na vzdáleném serveru, který je umístěn v datovém centru. Hráč si prostřednictvím internetového připojení streamuje obraz a zvuk na své zařízení, zatímco jeho ovládací vstupy (například stisky tlačítek na ovladači) jsou posílány zpět na server. Tato technologie umožňuje hraní her na zařízeních, která by normálně nebyla schopná spustit náročné hry, jako jsou chytré telefony, tablety nebo slabší počítače.

Hardware

Pro začátek jsme zvolili jeden z méně výkonných serverů, který jsme měli k dispozici, v konfiguraci:

Žádná herní mašina to není, ale pro naše použití by měla stačit. Grafická karta je přibližně na úrovni GeForce RTX 3050, ale má více paměti. My tyto karty máme rádi, protože nepotřebují přídavné napájení. Vystačí si s energií z PCIe slotu. To také znamená nižší požadavky na chlazení.

Server byl připojený přes 2x1Gbps LACP a pak přes 100Gbps dál do internetu. Klient měl běžné domácí optické připojení od Cetinu.

Cloud gaming supermicro server

Software

Na serveru běžel Proxmox, takže jsme využili existující prostředí. Vypnuli jsme virtuální stroj, který měl grafickou kartu přiřazenou, a vytvořili nový – tentokrát s Windows. Virtuál dostal tyto zdroje:

  • 8 virtuálních jader CPU
  • 64 GB RAM
  • 200 GB SSD

Po instalaci Windows jsme narazili na překážku, která se na diskuzních fórech řeší celkem často: "Zařízení bylo zastavené, protože oznámilo potíže. (Kód 43)" u grafické karty. Naštěstí jsme rychle přišli na to, že nebyla zaškrtnutá volba "PCI-Express" v nastavení PCI zařízení na úrovni proxmoxu. Po opravě karta fungovala bez problémů.

Výsledná konfigurace vypadala následovně:

Proxmox cloud gaming

Výběr her

Protože hry moc nehrajeme a neorientujeme se v tom, co zrovna letí, tak jsme pro test vybrali tři různé hry, abychom pokryli různé typy herního zatížení:

Přenos obrazu a ovládání

Na začátku jsme zkusili přenos přes klasickou vzálenou plochu, ale ta se pro hry vůbec nehodí. Po krátkém hledání jsme narazili na nástroj Parsec, který je často doporučovaný právě pro vzdálené hraní.

Instalace byla jednoduchá a během chvilky jsme se připojili k hernímu virtuálu.

Jak se hrálo?

Začali jsme bez jakéhokoliv ladění – výchozí nastavení her i Parsecu.

První dojmy:

Obraz byl sice mírně komprimovaný, ale stále použitelný – kvalita připomínala video v 720p. Parsec přenášel obraz pomocí H.265 s datovým tokem kolem 5 Mbps. Odezva byla znatelná, ale u pomalejších her to nijak zvlášť nevadilo.

Herní zážitky:

Deep Rock Galactic: Survivor šel hrát překvapivě dobře. Jen v akčnějších pasážích byla znát mírná nepřesnost, zpoždění a občasné záseky.

Counter-Strike 2 už byl větší oříšek. Každé zpomalení nebo trhnutí obrazu bylo znát. I když samotná hra vykazovala mezi 70 až 120 FPS, z pohledu klienta to vypadalo spíš jako 30 snímků za sekundu. Obzvláště problematické byly rychlé pohyby myší.

Doom Eternal vykazoval vysoké zpoždění a pomalou reakci na vstupy od hráče.

Druhý pokus:

Při druhém pokusu jsme zkusili trochu změnit nastavení.

Zvýšili jsme maximální datový tok na 50 Mbps. Parsec pak reálně využíval asi 14-20 Mbps, obrazová kvalita se znatelně zlepšila. Deep Rock byl plynulejší. U Counter-Strike 2 jsme stále cítili limity vzdáleného hraní a nebylo to prostě ono.

U Dooma jsme navíc zkusili snížit grafické nastavení na minimum a vypnuli vsync. Tato změna přinesla nejlepší výsledky a hra se stala celkem slušně hratelnou.

Spotřeba serveru

Jedna technická zajímavost je spotřeba serveru (data z IPMI):

  • Pouze s běžícím proxmoxem je spotřeba 100W
  • S běžící Windows virtuálním serverem je 140W
  • Při hraní se pohybuje mezi 230 až 260W

A co dál?

Jako první nás napadlo použít nějaký server s více grafickými kartami, udělat víc virtuálních serverů, aby mohlo hrát víc hráčů.

Zajímavější by bylo otestovat podporu vGPU, kdy by jednu grafickou kartu mohlo využít víc hráčů.

A v poslední řadě zkusit najít opensource náhradu za parsec, který je sice pro osobní použití zdarma, ale stále se jedná primárně o placený produkt.

Závěr: Má to smysl?

Z našeho pohledu šlo o velmi zábavný a poučný experiment. Myslíme si, že kdybychom investovali víc času do ladění nastavení, dostali bychom dobré výsledky.

Na jednoduché nebo pomalejší hry privátní cloud gaming funguje skvěle. Na akční tituly závislé na rychlosti a přesnosti funguje obstojně, ale pro zkušené hráče, kteří hrají na nejtěžší obtížnost, to asi není vhodné.

Pokud bychom si měli vybrat mezi hraním přes vlastní cloud a návštěvou herny jako velmi sporadičtí hráči, tak bychom dali asi přednost domacímu pohodli s trochu menší kvalitou herního zážitku.

Každopádně – pokud máte v datacentru volnou grafickou kartu, rozhodně stojí za to vyzkoušení.

Co nás naopak trochu mrzí je, že jsme při přípravě nenarazili na žádný větší technický problém. Kompletní instalace i s instalací Windows se vešla do 1 hodiny a vyjma jednoho problému byl celý proces instalace velmi přímočarý.