26. 1. 2015

Cloud computing na XBOX ONE (a i jinde)


Inspirován blogem na serveru konzolista.cz jsem si říkal, že i když je to celkem slušně napsané, cosi tomu pořád chybí. Jakoby někdo říkal pouze ono A, ale vyhýbá se onomu B. Jak cloud funguje je více méně všem jasné. Jaké může mít využití při hraní je také více méně všem jasné. Co se technického zázemí - to také není problém. Čili jediná zbývající otázka je čistě filozofická. A sice: proč? Proč se zabývat výpočty v cloudu, měnit od podlahy zaběhnuté principy a systémy? I když všichni chápeme, že výpočty v nafukovacím prostředí mohou poskytnout vyšší kvalitu, než jeden (byť vícejádrový) upocený procesor v našem PC nebo konzoli - proč měnit něco, co funguje uspokojivě? Už teď se toho na obrazovce hýbe tolik, že nejsme schopni posoudit výpočetní nároky (je to realtime, je to skript?) v kontrastu se zamýšleným efektem - potřebujeme vlastně takovou službu, která slibuje zázraky, o které nikdo vlastně zase tak moc nestojí?



Za prvé - nemám prakticky žádné informace o konkrétním fungování cloudu u Microsoftu a nebudu se tedy zabývat technickými detaily - XBOX ONE si beru do huby jenom kvůli tomu, že se to vzhledem k aktuální Microsoftí kampani hodí do krámu. Za druhé - Microsoftí kampaň považuji obecně za blbou, nevýraznou a nudnou, což ale na potenciálu technologie nic moc nemění.

Takže si pojďme zodpovědět tu základní otázku - proč?

Protože je to levnější.

Tak a nyní moje laická polemika.

Za posledních třicet let vývoje IT technologií jsme viděli mnoho zajímavých řešení, které se týkaly komunikace mezi uživateli. Pro účely počítačových her byl použitý klasický systém distribuce dat. Koupíte si hru na obvykle fyzickém médiu (moderní je nyní hry stahovat skrz internet), data z tohoto média se uloží na lokální úložiště a z něj putují do operační paměti, kde se začne kouzlit a lezou z toho super hejbací obrázky na monitor. Takto funguje koneckonců většina softwaru.

Lidi bádali dále a zjistili, že jejich software bude efektivněji využívaný, pokud bude vícero uživatelům umožněno, aby mohli paralelně pracovat na téže věci. To šlo realizovat například tak, že by každý zaměstnanec pracoval na svém souboru a ty by pak po děrných páskách / kazetách / disketách nosili na jedno místo k dalšímu zpracování. To je samozřejmě velice zdlouhavé, nepohodlné a hrozně rychle v tom vznikne bordel - neboli vyvstala nutnost vytvořit nějakou síť, kde spolu budou jednotliví uživatelé spolu komunikovat.

Už na tomto velice jednoduchém příkladu lze demonstrovat základní filozofii sítí. Vezměme si příklad nějaké BBS - jeden server se všemi daty, kam se zákazník připojí skrz modem. Podle počtu modemů spolu může komunikovat více lidí najednou - avšak když máte BBS s desítkami, ne-li stovkami uživatelů, budete mít štěstí, když se vůbec dovoláte. A o realtime komunikaci si můžete leda tak nechat zdát. Jak na to? Na svém PC si nainstalujete klientskou aplikaci, která se připojí k serveru, během několika sekund / minut synchronizuje nové zprávy (de facto udělá na lokálním disku kopii obsahu serveru). Následně se vaše PC odpojí a vy si v klidu můžete přečíst nové zprávy, napsat nové komentáře a pak se večer zase na pár okamžiků připojit. Vaše klientská aplikace pak opět synchronizuje data - uploaduje vaše zprávy na server a downloaduje nové zprávy od ostatních uživatelů. A tak pořád dokola, třeba dvakrát denně.

Takto se lze dívat i například na dřevní doby emailu - Outlook (ideálně Express, samozřejmě!) dlouho přistupoval k lokálnímu PST souboru, jako k modle - server využíval jen na zaslání a přijímání zpráv. Bylo celkem běžné mít na svém PC dokonce nainstalovaný SMTP server pro odesílání. Podobně tak například některé starší burzovní systémy - přestože plně elektronické - vyžadovaly instalaci obchodního serveru na straně zákazníka. Tento server veškerá data od obchodníků shrnul, předchroustal a poslal dále do hlavního výpočetního střediska.

Ono to mělo i své výhody. Bez ohledu na počet uživatelů v lokální síti - member server přijal data v rychlé LAN a pak je naráz poslal "nahoru". A když naopak přijal jeden paket s daty, mohl ho zduplikovat a poslat na X stanic "dole", aniž by to jakkoliv vytěžovalo linku.

S nástupem internetu se ale situace pozvolna změnila. Vztah klient-server nabyl konkrétní podoby. Dneska třeba používáme internetový prohlížeč k mnohem více věcem, než jen k prohlížení internetu. Nahrazuje nám prakticky veškeré lokální aplikace - email, psaní textů, kreslení obrázků, sledování i stříh videa - vlastně už skoro nepotřebujeme ani operační systém nebo bůhvíjak výkonný stroj na straně uživatele. To všechno usnadnilo nástup smartphonů. Hlavní je ta filozofie - přesunout co nejvíce zodpovědnosti na stranu serveru, zatímco klient má jen "okno", skrz které se na své služby "dívá". Tento terminálový přístup k věci není samozřejmě nic nového - už v seriálech s McGyverem vidíme stejně designované sítě (tj. je to jistě mnohem starší koncept).

Co počítačové hry mají s tímto konceptem společného?

Úvaha je taková, že přesunem určité dávky výpočtů na stranu serveru skutečně můžete ušetřit spousty prostředků na straně klienta. Náhle nepotřebujete oslňující výkon ve svém počítači. Oproti streamování videa bude grafika na obrazovce počítaná procesorem - ale podklad pro výpočet grafiky (světla, stíny, particle efekty, AI, fyzika...) potečou z cloudu. Oproti videostreamování je zde menší náročnost na průtok datovou linkou a protože určitá část výpočtů může být pořád počítaná lokálně (byť zjednodušeně), běh hry je tak lépe chráněn proti výpadkům internetu a lagům. Nevím, zda to nazývat "mezikrokem" k videostreamování - v nejbližší době se nejspíš setkáme s koexistencí obou typů služeb, podle toho, na jaký typ hry či jaký typ zařízení bude hra designovaná.

Velkou výhodou - a zde vidím právě obrovský prostor k inovaci a šetření prostředků - je duplikace výpočtů pro více hráčů. Když hodíte granátem, tak už v okamžiku stisknutí tlačítka se na straně serveru vypočítá kolize se zemí, velikost vyhloubeného ďolíku a odlétávající kusy hlíny. Výsledek tohoto výpočtu bude mnohdy stejný, takže se může uložit do nějakého serverového bufferu a použít ho kdykoliv později - což je velká změna proti videostreamu - tam bude muset být většina dat unikátních pro každého klienta. Takový výbuch pro danou "standardní situaci" se bude jevit jakoby skriptovaný.

Tohle všechno dostává smysl v multiplayerových hrách, kdy se X hráčů dívá na týž vybuchující granát. Dosud proběhl výpočet výbuchu vždy na straně všech X klientů, kdežto nyní se to spočítá jednou na straně serveru a klientům se skrz streaming rozdistribuují výsledky. Fyzika bude předpočítaná serverem a engine samotný vlastně nepozná, jestli je animace načtena z lokálního disku nebo přitekla z internetu - podstatné je, že procesor v konzoli nemusel ztrácet čas výpočtem a měl čas se věnovat renderingu samotné grafiky, která díky tomu může být ještě více okouzlující.

V praxi tak můžete mít jednu farmu na fyziku, druhou farmu na AI, třetí farmu na světla - a na tuto farmu pak napojit X klientů s různými hrami. Je zde potřeba obrovská investice do infrastruktury - což pro Microsoft nepředstavuje problém - pak získáváte univerzální misto, kam nainstalujete pro každou hru zvlášť jeden server a ten pak obhospodaří X klientů. Klient ve své stanici spustí jen framework, který sám o sobě umožňuje základní hratelnost bez extra dávky "bells & whistles", ale když jste online, budete unešeni.

Postupným nafukováním cloudu pak mohou i starší hry vypadat pořád slušně a to bez ohledu na lokální hardware a lokálně uložená data. Jednotlivé aspekty výpočtu se mohou na straně serveru vylepšovat, rozšiřovat, aniž by klient cokoli musel dělat. Dále - na straně klienta nemusí běžet žádný unifikovaný engine, jde pouze o podporu na úrovni API, takže engine samotný nemusí umět vlastně nic moc, může jít klidně jen o nějaké vykreslovací jádro za pár kaček.

Vydavatelům to tak umožní vydávat holé hry (což dělají už nyní a masa pořád kupuje...). To, co si stáhnete z internetu nebo donesete na blyštivém disku - ty hry budou vypadat "pořád stejně", jak jsme zvyklí. Anebo budou vypadat hůře - ušetří se spousty peněz na vývoji a implementaci, nemluvě o optimalizaci. Teprve když se ukáže, že o hru je skutečně zájem, mohou se v cloudu přidat danému titulu výpočetní prostředky.

Anebo to půjde udělat i naopak - když o nějakou hru zájem naopak nebude, tak se vypnou servery a je to. Pro launch day si vydavatel bude moci zaplatit více cloudového výkonu, aby udržel nápor nových hráčů, případně aby zásadně zatraktivnil vzhled hry pro první vlnu zákazníků. Až se situace s prodejem hry stabilizuje, může se množství vyžadovaného výkonu stáhnout na potřebné minimum a tu samou farmu využívat na běh jiných her.

Zásadní úspora je tedy ve vývoji samotné hry. Grafický engine bude napojený na aplikační interface na straně serveru - a tím to hasne. Objekty, textury, světla - něco bude uloženo v lokále, ale když to bude situace vyžadovat, tak místo patchování hry se prostě při startu služby pošlou nové textury. Ušetřené peníze použijete na vývoj cloudu samotného, ale ten vám bude sloužit mnohem déle, než je životnost jedné hry, takže se investice rychle vrátí.

Pochopitelně je na místě otázka, jak to vidí hráč samotný. Spotřebitel je spokojený - má levnější hry, které vypadají špičkově v dobách největšího zájmu a i když je hráč offline, zahraje si (asi jako dneska je možné hrát Gran Turismo 6 bez patchů), byť jen ořezanou verzi.

Dneska si hráči ještě neumí ani představit, jak moc velkou revoluci tato technologie může způsobit. Na jedné straně je fakt, že současné hry už prostě vypadají moc dobře, takže pro tuto generaci vlastně ani není potřeba jít dál... ale už jenom fakt, že stejně dobře vypadající hra bude mít třeba poloviční náklady na vývoj znamená, že průmysl má zase kam růst. Protože kde je funkční business model, tam bude poptávka po takové službě. A masa hráčů už dávno rozhodla svými prkenicemi o tom, jakým zhruba směrem se bude průmysl ubírat. A tohle je jeden z pravděpodobných scénářů. I když si to ještě neumíte představit.

Určitě je potřeba mít realistická očekávání - z počátku totiž nebude vliv cloudu vůbec poznat proti dnešním hrám. Nejprve se současný standard přetransformuje do nové technologie a teprve pak z ní bude těžit. Má to i svá úskalí, zejména v psychologické rovině - mnoho hráčů bude vykřikovat, že nemají doma internety, že žádný cloud nechtějí nebo že vydavatel jednoho dne vypne servery a bude po hraní. Proti tomu nelze nic namítat, jsou to pádné argumenty - leč pokud se ukáže, že jde o argumenty málo platící menšiny, ztrácejí na váze. Současný herní průmysl hry chápe a prezentuje jako díla bez ambicí na trvalé hodnoty, něco, co si máte zahrát když je to IN a místo k vracení se ke starým hrám si máte raději koupit novou hru. Leda by byla poptávka po starším titulu tak velká, že se vyplatí (třeba dočasně) přidělit výpočetní výkon. To tedy nevylučuje business model s provozováním staršch titulů, když funguje GOG.com, proč by nemohli v budoucnosti provozovat vlastní cloud, že ano.

Je to změna přístupu - dosud byl hráč unikátní zákazník, tj. hru kterou si koupil byla jeho a mohl si ji spustit kdy chtěl, jak chtěl, dneska tak, jako za deset dvacet třicet let, když měl patřičný hardware (já takto hraju na NESu původního Maria a určitě se najde pár jednotlivců, kteří budou v roce 2045 hrát třeba GTA5, jako retrohru). Jenže trh nás změnil, vycvičil. Drtivá většina platících zákazníků se chová jako vlna. Přijde hra - lidi nakoupí a hrají... a to do doby, než vyjde nějaká jiná hra. To pak všichni starou hru zahodí a hrají jenom tu novou. Hráč přestal být individualitou a tím pádem je výhodnější přestat se k němu chovat jako k individualitě - nemá smysl dělat cokoli na míru, když se všichni chovají vesměs stejně a chtějí vesměs to stejné. Hry počítané na straně serveru jsou dalším krokem k unifikovanému hernímu prostředí, ve kterém hráči sdílí svůj herní zážitek (týž samý zážitek, identický pro všechny). Tohle je podle mne hlavní důvod, proč dneska cloudové hraní projde, zatímco před deseti-patnácti lety to bylo kontroverzní téma. Nyní na tom díky jednostranně zaměřené mase totiž jde vydělat a vydavatelé by byli blázni, kdyby vydělat nechtěli.

Hlubší psychologická analýza by pak odhalila, že přechod na cloud je dalším způsobem, jak upevnit svůj sociální status - stáváte se součástí "něčeho většího". Multiplayerové hry už nejsou o sdílení hratelnosti, ale také o sdílení grafiky, animací, případně zvuků a umělé inteligence. V zásadě se počítačové hry vracejí ke kořenům televizní zábavy - všichni lidé koukají na to samé a mají na výběr z X kanálů. Hry přidávají vrstvu interaktivity navrch, jak ukazuje Playstation 4 se svými interaktivními streamy, případně se sdílením hry s nevlastníky kopie, služba je laděná pro všechny od naprostých casual hráčů po hardcore segment. Veškerý vývoj herního průmyslu, co jsme doposud sledovali, k tomuto převratu vedl. Nejprve se vycvičily masy, aby chtěly pravidelně utrácet za masově produkované hry - a následně se přesunula technologie do nové formy, která tyto masové hry formou interaktivní televize vysílají.

V praxi se tak budeme nejspíš setkávat s videostreamingem pro singleplayer hry (které budou obsahovat co nejvíce duplicitního obsahu - neinteraktivních scén, shodných průběhů misí, případně ála FMV scény s dodatečnou vrstvou grafiky počítané v lokální, nepříliš výkonné mašině) a cloud-data streamingem pro multiplayerové hry. Stylem to trochu je analogické: SONY s jejich službou Gaikai (single) a Microsoftem s jejich XBOX ONE cloudem (multi). Microsoft má zdánlivě navrch - jejich cloud je úplně novou službou, kdežto SONY (zatím) posílá po kabelu ty samé hry, jaké si můžete koupit i na disku. Historická analogie: společnost, která vstoupila do vod konzolí s online službou XLive! a zrevolucionalizovala hraní přes internet, nyní stojí na prahu nové generace technologií a přesouvá fyzikální a jiné funkce do cloudu. Na vítěze si nevsadím, ale černě to také nevidím.

Podstatné je, že herní průmysl inovuje a když už nejde jít dál, musí se někde ušetřit, aby někde jinde šlo ještě více vydělat. Chápu, že to šetření není po vůli malé skupině zákazníků, ale ono fakt nejde jít kam dál v tradiční formě her. Kdyby totiž šlo jít dále a vydělávat více při zachování stávajícího (dnešní optikou vnímáno jako starého) modelu, tak by se tak dělo, že ano.

Když se nad tím zamyslíte, je to jenom logický vývoj, zcela v souladu s vývojem IT technologií, na kterém nikdo z nás nevidí nic ďábelského. Prostě se to počítá na straně serveru, stejně jako tento text právě datluji do okna s Firefoxem, nikoliv do Wordu nebo podobného Notepadu. Tak proč ne hry?