Zpět na seznam4.8 (33 hodnocení)
MarkstPublikováno: 9 let
Načítám přehrávač...
GDC - Kód Vesmíru
24:24
11.6K zhlédnutí
GDC (Game Developers Conference) je série prestižních konferencí pro herní vývojáře, které se každoročně konají na mnoha místech na celém světě. Na jedné z nich se objevila i tato vtipná a zároveň vzdělávací přednáška Daina Sainta.
Ahoj. Dobré odpoledne. Jmenuji se Dain Saint. Jsem spoluzakladatel
Cipher Prime Studios ve Filadelfii. Mezi naše nejznámější hry patří
Auditorium, Splice a Intake. Jsem třetinový vlastník
nové společnosti Deep Dark Hole, která se soustředí na experimentální hry. Zítra ve Wild Rumpus
vám představí naší novou hru Elbow, pokud se tam půjdete podívat.
Závěrem jsem ředitel
Philly Game Forge, což je jediné coworkingové centrum ve Filadelfii
zaměřené čistě na hry. Tato přednáška
je o pokládání správných otázek ohledně přírody,
a o pokusu získat odpovědi. Mohlo by to být neobvyklé,
ale doufám, že vás to inspiruje
k trochu jinému pohledu na některé věci. Takže, bez dalšího zdržování: Vesmír.
Momentálně probíhají experimenty,
které se snaží zjistit, zda je naše realita simulací. Co by vlastně znamenalo, kdyby byla? Věřím, že my herní designéři
můžeme odpovědět na tuto otázku. Takže... Začněme od začátku. Podle našich nejlepších zdrojů, se vesmír dostal na trh
před 13,7 miliardami let, a protože ho lidé začali hrát teprve
před 200 000 lety, jsou první roky Vesmíru
tak trochu záhadné.
Jistě víme, že Vesmír strávil první dvě třetiny
na trhu v Beta fázi, vylepšováním části nazývané
"vznikání planet," dokud nevyšlo před 4,5 miliardami let
rozšíření jménem Země. Toto rozšíření přidalo zásadní změnu,
která navždy změnila hry: Život.
Přestože první postavy byly primitivní, měly dost základů,
kterými šlo hru nově a zajímavě vylepšit. A když se podíváme na dnešek,
tak Vesmír naprosto dominuje trhem. V tuto chvíli, bychom napočítali
7 miliard přihlášených uživatelů, a přesto Vesmír nemá
žádné výdělečné plány. Od přidání Země, bylo zaznamenáno přes
1 trilion nahraných hodin stovkou miliard uživatelů.
Podle všeho používají nejzábavnější engine
na tvorbu postav, který je na trhu. A je jasné proč. Vesmír je neuvěřitelně dobrý,
ohodnocen 5 hvězd od Joystiq. Mluvíme tu o neustále zapnutém
a obřím multiplayerovém zážitku, bez lagů a poruch. Navíc Vesmírem patentovaný
Infinity Engine je technologický zázrak.
Chlubí se nekonečným rozlišením,
nekonečnou vzdáleností, nekonečným prostorem k prozkoumání,
nekonečným prostředím ke zničení, a tak detailním algoritmem levelů,
že se Red Dead Redemption může stydět. U hry,
která dělá tolik věcí dobře, je těžké uvěřit,
že by mohla dělat něco špatně. Už jen fakt, že si většina hráčů
stěžuje na chování ostatních hráčů, ale ne na hru samotnou. Když se podíváme pořádně,
myslím tím fakt pořádně, začneme vidět malé nedostatky.
Je tu omezená rychlost, věci nemohou jet rychleji,
i když se budeme snažit sebevíc. Ta nekonečná rozloha,
kterou se chlubili? Ukázalo se,
že není tak úplně nekonečná. Některé vážnější bugy ohledně přesnosti,
vyskočí v systému, když dojde na hodně malé věci. A fyzikální systém
naprosto šílí, když se pokusíme natlačit
moc věcí na jedno místo.
I přes to všechno,
je Vesmír perfektní zážitek, který si mnoho z nás užívá
každý den. Jak může někdo
vytvořit něco tak dobrého? Přestože jsme poslali
nespočet e-mailů vývojářům, nedostali jsme žádnou odpověď. Abychom odpověděli na otázku,
budeme muset prolomit kód hry. Abychom mohli začít hackovat Vesmír, musíme nejdříve porozumět možnostem
Infinity Engine.
Je celkem logické začít
s vykreslenými objekty, začněme tedy u nich. Jak možná víte, obyčejné enginy používají pár variací
techniky zvané "měření vzdálenosti." Z každého pixelu, který musí být
vyrenderován, je poslán paprsek, ten se odráží od objektů,
dokud se nedostane ke zdroji světla. Infinity Engine
tohle paradigma otočil naruby, použitím systému nazvaného foton.
Tyto částice světla zvané fotony, jsou ve skutečnosti vyslány
ze zdroje světla a hromadí data barev, zatímco si jdou vlastním směrem. Země je plná fotonů,
a vše, co je vidět, je zkonstruováno prací fotonů,
které jsou uvnitř. Protože vše co je vidět
je závislé na čase, mají samotné fotony rychlost,
zvanou "rychlost světa" nebo-li "c" okolo 300 milionů metrů za sekundu.
Tady to začne být zajímavé. Fotony lpí na této konstantě, což znamená, že jsme našli první věc,
kterou můžeme začít hackovat. Pokud je maximální obnovovací hodnota
u Vesmíru omezena na toto číslo, co se stane, když budeme rychlejší? Vemte si Quaka,
hráči už v něm tak dlouho jen skákají, aby tím překročili "maximální rychlost,"
až se to stalo základem pro zkušené hráče.
Co se tedy stane, když si budeme hrát
na profíky a překročíme rychlost světla? Ukázalo se, že nemůžeme. Nic nemůže.
Bez ohledu na to, kolik energie použijeme, nic v Infinity Engine nemůže jet rychleji,
než rychlost světla. Dokonce se jen přiblížit k té hodnotě
je téměř nemožné. Jak to? Když se podíváme na kód, abychom zjistili,
co se děje, uvidíme bizarní věc. Čím více se objekt blíží rychlosti světla,
tím je těžší a těžší. Toto je skutečně zvláštní,
když se nad tím zamyslíte.
Nikdy jsem to předtím u žádné hry neviděl,
ale je to skutečně chytrý hack. Protože čím je věc těžší,
tím více energie do ní musíme vložit, aby zrychlila. Když se tedy zrychlením objekty ztíží,
tak vznikne chytrý způsob, který se vyvaruje zjištění
této chyby v maximální rychlosti, aby si toho hráč nevšiml. Když se podíváte na graf, tak zjistíte,
že se to začíná dít u rychlosti světla. Za to děkujme vývojářům.
Fakt, že samo světlo má rychlost, je částečně způsobeno další věcí od
Infinity engine - maximálním vykreslením. Podívejme se do kódu,
abychom zjistili proč. U her musíte specifikovat "kde" něco je
a "kdy" si to objeví. Kódy typicky mívají dvě proměnné,
"pozici" a "čas." 2D hry ukládají "pozici" jako vektor2
a 3D hry jako vektor3. Čas je obvykle samostatná proměnná
a běží díky jinému systému. Infinity Engine naopak ukládá pozici i čas
dohromady v samotném vektoru4.
Používá svůj ukládací modul,
nazvaný "Časoprostor." Většina her má omezení vzdálenosti. Předměty, které jsou daleko od kamery,
render ignoruje. Je to proto, aby se renderování zrychlilo
a zajistilo tím lepší výkon pro všechny zúčastněné hráče. Ale jak jsme zmínili dříve,
foton nefunguje jako většina zobrazení. Všechny viditelné cesty by měly pro hráče
být kdykoliv přístupně k prozkoumání. U enginu,
který se chlubí nekonečným vesmírem, to znamená, že předměty,
které jsou blíže k divákovi, jsou stejně vyrenderovány,
jako věci vzdálené miliony kilometrů.
A to nám dává další věc,
kterou můžeme hacknout. Lze zkonstruovat výhled
na tolik věcí současně, že bychom tím zasekali render,
nebo ho dokonce zasekli? Odpověď je stejná - nejde to. Jak to? Figurují v tom dva chytré systémy.
První je časoprostor.
Neustálé se rozpíná, dává mezi objekty
stále více úložného prostoru, zatímco objekty
jsou k sobě přitahovány gravitací. To způsobí, že většina shluklých objektů
ve vesmíru je oddělená obřím prostorem,
který každým dnem roste. Někteří z vás by toto mohli poznat
ze stejného algoritmu, který šetří prostor tím,
že zobrazí jen to, co před sebou vidíme. Druhé je rozpínání, to s fotonovým enginem spolupracuje
překvapivým způsobem.
Jak víte,
fotony mají rychlost, díky tomu
mohou objekty být od nás tak daleko, že světlo prostě nemám dostatek času
k nám dorazit. Protože vesmír je starý přibližně
13.7 miliard let, a světlo může cestovat rychlostí zhruba
5 bilionů mil za rok, kterýkoliv objekt vzdálenější
65 miliard bilionů mil není samozřejmě vyrenderován.
Když pracujete na expanzivním faktoru,
vytvoříte takzvanou "renderovací bublinu," která má okolo 230 miliard trilionů napříč.
To je sakra velký skybox. Dobře, Vesmír zvládá masivní věci.
Co ale malé věci? Co se stane, když se začneme šťourat
okolo nejmenších objektů ve hře? Nejdříve se budeme muset podívat na to,
jak Vesmír zvládá geometrií. Jsou dvě hlavní metody,
kterými se dnes ukládají 3D data her. První a nejpopulárnější metoda,
je vertex-mesh. Samostatné body, spojené hranami,
vytváří povrch.
Je to velmi rychlý algoritmus
pro zrenderování, proto je tak populární. Akorát selhává u věcí,
které nemají přesně definovaný povrch, jako mraky a voda. Druhá metoda začala být oblíbená
s popularitou Minecraftu, jmenuje se Volumentric. Zde jsou objekty popsány jako funkce, a povrch je křížením těchto funkcí
naznačený a paprsky jej renderují.
To renderuje objem přirozeně,
ale má to svá omezení. Je to výpočetně drahé, rotace je složitá,
a těžce se s tím vypočítává fyzika. Infinity Engine má opět unikátní řešení,
hmotu. V tomto paradigmatu
jsou všechny objekty uloženy jako něco, co sdílí vlastnost
obou nesouvislých vertex geometrií a souvislých volumentric geometrií. Programové rozhraní dovoluje, aby byly některé výpočty nesouvislé,
spojením: hmota.částice, a souvislé pro ostatní,
spojením: částice.vlna.
Je to chytrý flexibilní přístup,
ale má zvláštní vedlejší účinek. Protože můžete získat data
jedině těmito dvěma způsoby, tak to pro jisté věci
může působit dvojsmyslně. Podívejme se například
na malou částici hmoty. Má pozici a zrychlení.
Vše v pořádku. Ale snažím se udělat něco přesně,
takže musím znát přesnou pozici. Abych se k tomu dostal,
musím oddělit objekt spojením: hmota.částice.ZískejPozici().
Uvidíme, co se stane. Teď vím, kde přesně je,
ale nemohu zjistit jeho přesné zrychlení. Ale co když potřebuji přesné zrychlení? Budu muset udělat souvislý objekt:
hmota.vlna.ZískejZrychlení(). Když to udělám,
tak zjistím přesnou rychlost i směr, ale nemůžu zjistit přesnou pozici.
Tohle je určitě chyba. Rozhodně to působí jako něco,
čeho by se mělo využít.
Nezdá se, že by šlo o něco,
co by vyšlo ve finální verzi hry. Ale vyšlo. Tato nejednoznačnost
je ve skutečnosti využitá ve spoustě technologiích. V počítačích,
telefonech, magnetické rezonanci. Všechno je závislé na využití chytré chyby
v subatomárním měřítku. A v normálním měřítku
tahle nejednoznačnost... prostě funguje. Průměrný hráč si toho nikdy nevšimne,
protože ta nepřesnost je strašně malá. Tohle je prvotřídní příklad chyby,
která může být vydána.
Dobrá, zatím jsme prozkoumali rychlost,
prostor a velikost. Spojme všechno dohromady a podívejme se,
co vesmírem hýbe: Centrální procesorová jednotka
zvaná Quantum. Quantum je moje nejoblíbenější část
Infinity Enginu. Unikátní přístup k výpočtům. Všechny fyzikální interakce jsou řešeny přímou interakcí fotonu,
časoprostoru a hmoty Například fotony, používané
v renderovacím systému, jsou ve skutečnosti malé části hmoty, vzniklé z energie interakcí ostatních
částí hmoty, dopravovány časoprostorem.
Spousta komplikovaných systémů byla překvapivě vytvořena jen pár
základními interakcemi. Je dobré, že nemusíte posílat
pár miliard částic pokaždé, když chcete říct "udělej sendvič". Quantum funguje na nejzákladnějších
pravidlech, která udržují simulaci vchodu. Gravitace je ve skutečnosti něco jako
vedlejší efekt tohoto výpočtu.
Jak hmota v blízkosti další hmoty
okupuje prostor, musí se vypočítat více interakcí, což trvá déle a hmota tak zůstává
po dlouhou dobu poblíž jiné hmoty. Tohle mi přijde jako situace, kde by
snadno mohla nastat nekonečná smyčka. Tady tedy najdeme poslední díru,
na kterou se dnes podíváme. Lze nakupit do jedné lokace tolik hmoty,
že to výpočetní engine Quantum nezvládne? Není to možné na Zemi.
Když se kolem sebe podíváte, tak je tu spousta hmoty
a vše funguje bez problémů.
Ale v hlubokém vesmíru jsme byli schopni
najít neuvěřitelně obří objekty, které, podle všeho,
odpoví na naší otázku za nás. Co se stane, když příliš velké množství
hmoty okupuje jeden prostor? V podstatě - mrtvé pixely. Stephen Hawking jim dal zlověstnější název:
Černé díry, protože fotony se z této oblasti nevrací.
Tato místa vyžadují spoustu výpočtů, prakticky mají nějaká hranice,
nazvané horizonty událostí, kam když se dostane jakýkoliv objekt,
tak je ztracen v nekonečné smyčce, pravděpodobně navždy.
A hra nadále běží.
Jak to? Pokud vám tohle přijde podobné
naší renderující bublině kterou jsem ukazoval dříve,
tak nejste sami. Prostě a jednoduše
čím více hmoty nacpeme do sebe, tím více interakcí musíme vypočítat. Když to číslo překročí určitý práh,
bylo by logické rozjet separátní server, který by se postaral o zbylé zatížení.
A dokonce by dávalo ještě větší smysl rozjet úplně novou kopii Vesmíru
na tom serveru, když už má všechnu potřebnou logiku,
aby běžela přesně pro takovou simulaci. Představte si to, několik serverů,
každý běží rekurzivní instancí Vesmíru, zasazených prostorem
a zanechaných k rozkvětu. Každá nová instance
je krásným ztělesněním věcí, které byly,
a věcí, které budou. Servery od shora až dolů.
Co jsme se tedy naučili? Samozřejmě je tu mnohem více věcí,
ale nemáme více času. Zrekapitulujme si to. Za prvé:
Omezení používejte kreativně. Rychlost světla, nebo-li "c" je hlavním
omezením všeho, co běží ve Vesmíru. Kdyby to bylo špatně navržené,
tak by to byla katastrofa. Od zvláštního hacku objemu
v maximální vykreslovací vzdálenosti, vývojáři stále nacházeli
kreativní způsoby, jak omezení využít v jejich prospěch.
Omezení pěstuje kreativitu.
Využijte toho hned a často. Za druhé:
Dohlížejte na svůj rozsah. Vesmír se chlubí nekonečnem,
ale ve skutečnosti je jen velmi velký. Stejně tak, když děláte hry,
mějte jasnou vizi, čeho chcete dosáhnout. Je snadné zkusit udělat hru,
která potěší všechny, a je přirozené
se tam pokusit přidat všechny vlastnosti. Ale pamatujte, že i něco tak obsáhlého
jako Vesmír, ví moc dobře, kdy jsou věci mimo rozsah.
Za třetí:
Neřeš malé věci příliš. Ta zvláštní chyba s přesností
je frustrující. Znám spousty programátorů,
většina je tady v místnosti, kteří by byli vzhůru do čtyř ráno každou
noc a snažili by se tuto chybu opravit. Podívejte se na to z větší perspektivy,
pokud ta chyba nedělá hru znatelně horší, tak možná není nutné ji opravovat. Poslední:
Přijmi vzniklý jev.
Ve hrách máte spoustu různých systémů
interagujících spoustou různých způsobů. Může být velmi těžké předpovídat,
co se stane může kdykoliv stát. Jako herní designéři se často pokoušíme mít přesnou kontrolu
nad věcmi, které děláme. Ale občas se musí udělat krok zpět
a nechat hru takovou, jaká chce být. Výsledek
by vás ve skutečnosti mohl překvapit. Dobrá věc na Vesmíru je,
že je doslova všude, a podle toho, co vím,
tak je zdarma k šíření a úpravě, nebo se alespoň s nikým ještě nesoudil.
Takže až příště narazíte na nějaký problém
v herním designu, udělejte to,
co dělám já: Vemte si to od Vesmíru. Rád bych teď změnil téma
a řekl něco o tom, co mě inspirovalo k této přednášce. Nebyl to herní průmysl,
ani vychvalovaná hra, ani nově vydaná konzole. Nebylo to plánované vydání,
a určitě to nebyla aféra GamerGate.
Byla ta epizoda Kosmos. Konverzace s kamarádem. Byla to procházka městem
za podzimního odpoledne, při které jsem se zamyslel
nad spoustou věcí, nad kterými normálně nepřemýšlím. A právě o tom jsem dnes chtěl mluvit,
o věcech, které nás inspirují tvořit. Pro nás je Země celý svět, ale je to jen mikroskopická část
nepatrné galaxie, v malém zlomku vesmíru.
A herní průmysl je stále malý. Jednoduše řečeno, v životě
je toho mnohem více, než ve hrách. Nenechte se zblbnout komentářem,
lidem tolik nezáleží na počtech snímků, DLC, DRM, nebo poplatcích uvnitř aplikací. Zajímá je zážitek, který za to stojí. Jediná možnost, jak jim ho můžete dát,
je jít ven a zažít ho na vlastní kůži. Takže běžte, buďte inspirováni,
zvyšte si level, dokončete nějaké questy, získejte další schopnosti,
uspějte ve všem.
Pokud je pravda, že naše realita,
že všechno, co jsme kdy věděli, nebo budeme vědět, je hrou... neměli bychom ji hrát víc? Myslím, že máme tak pět minut na otázky. Jsem si celkem jistý,
že nějaké dotazy budou, pokusím se na ně odpovědět,
pokud se na ně zeptáte. Použijte prosím mikrofon, špatně slyším.
Který experiment určí,
zda je svět simulací? To je velmi zajímavé, Fermilab teď pracuje na takzvaném
holometer experimentu, výsledky by měly dorazit koncem roku 2016. Používají obří lasery, aby zjistili,
zda vesmír má, nebo nemá rozlišení. Pokud má, tak je to dobrý argument pro to,
že je všechno simulace. Takže na to teď tak trochu čekáme. Je možné si změnit charakter,
nebo to byl jen bonus v předobjednávce?
Jsem přesvědčen,
že to byla předobjednávka od GameStopu, ale protože Vesmír vznikl před GameStopem
tak nevím, jestli je to stále k mání. Dobře, děkuju. - Mám jednu hypotetickou otázku.
- Dobře. O Vesmíru si říkal, že je to hra,
jaký ovladač si myslíš, že má? To je zajímavá otázka. Když se podíváš,
jak je všechno spojené dohromady, všude, kam se podíváme, vidíme hmotu,
nebo vidíme všechny tyto interakce, ale to, co dělá tyhle věci zajímavým,
není hmota, ale řády, které vznikají z hmoty.
Je to jako vzniklé vlastnictví řádů,
a když se podíváš na lidský mozek, je to v podstatě kus něčeho lepkavého,
ale ty interakce, které vznikají z toho, jak hmota interaguje mezi sebou,
přináší rozkvět věcem jako interakce, akce, svobodná vůle a takové věci. Takže tohle je zvláštní případ,
kdy je ovladač spíš jakoby vrozený, vyvinutím řádem interakcí,
než že by byl promyšlený předem. Hádám,
že chceš trochu výstižnější odpověď, myslím, že by to byl ovladač xboxu 360.
- Děkuju.
- Já bych ho teda použil. - Mám osobní otázku, jestli to nevadí?
- Ok. - V roce 2016 budou mít odpověď.
- Pravděpodobně. Potom budeme mít možnost
se podívat za oponu, chtěl by ses podívat? Moc rád. Otázka byla:
Pokud se ukáže, že je to simulace, a my bychom se mohli podívat
takzvaně za oponu, jestli bych se chtěl podívat?
Rozhodně ano... I když to zničí tu iluzi? Já se živím vytvářením iluzí,
a mít možnost se podívat, jak to udělal někdo mnohem lepší,
si myslím, že by mohlo být velmi zajímavé. - Můžu navázat další otázkou?
- Jasně, ale rychle. Jedna z věcí, které tě inspirovala,
byl Kosmos, což je vědecký pořad, další osobní otázkou je,
dvakrát jsi zmínil "jeho" jako stvořitele. Je zde... To je kvůli traumatickému programu
z dětství, když jsem vyrůstal v katolické škole.
Takže se omlouvám, že to tak antropomorfizuji. Ale ano, je to sémantikou. Ještě jedna otázka, nebo...?
Bohužel mi vypršel čas, ale míříme do herní místnosti, takže kdyby se kdokoliv chtěl zeptat
na další otázky, tak mě potkáte tam. Děkuji, že jste přišli. Markst
www.videacesky.cz
Cipher Prime Studios ve Filadelfii. Mezi naše nejznámější hry patří
Auditorium, Splice a Intake. Jsem třetinový vlastník
nové společnosti Deep Dark Hole, která se soustředí na experimentální hry. Zítra ve Wild Rumpus
vám představí naší novou hru Elbow, pokud se tam půjdete podívat.
Závěrem jsem ředitel
Philly Game Forge, což je jediné coworkingové centrum ve Filadelfii
zaměřené čistě na hry. Tato přednáška
je o pokládání správných otázek ohledně přírody,
a o pokusu získat odpovědi. Mohlo by to být neobvyklé,
ale doufám, že vás to inspiruje
k trochu jinému pohledu na některé věci. Takže, bez dalšího zdržování: Vesmír.
Momentálně probíhají experimenty,
které se snaží zjistit, zda je naše realita simulací. Co by vlastně znamenalo, kdyby byla? Věřím, že my herní designéři
můžeme odpovědět na tuto otázku. Takže... Začněme od začátku. Podle našich nejlepších zdrojů, se vesmír dostal na trh
před 13,7 miliardami let, a protože ho lidé začali hrát teprve
před 200 000 lety, jsou první roky Vesmíru
tak trochu záhadné.
Jistě víme, že Vesmír strávil první dvě třetiny
na trhu v Beta fázi, vylepšováním části nazývané
"vznikání planet," dokud nevyšlo před 4,5 miliardami let
rozšíření jménem Země. Toto rozšíření přidalo zásadní změnu,
která navždy změnila hry: Život.
Přestože první postavy byly primitivní, měly dost základů,
kterými šlo hru nově a zajímavě vylepšit. A když se podíváme na dnešek,
tak Vesmír naprosto dominuje trhem. V tuto chvíli, bychom napočítali
7 miliard přihlášených uživatelů, a přesto Vesmír nemá
žádné výdělečné plány. Od přidání Země, bylo zaznamenáno přes
1 trilion nahraných hodin stovkou miliard uživatelů.
Podle všeho používají nejzábavnější engine
na tvorbu postav, který je na trhu. A je jasné proč. Vesmír je neuvěřitelně dobrý,
ohodnocen 5 hvězd od Joystiq. Mluvíme tu o neustále zapnutém
a obřím multiplayerovém zážitku, bez lagů a poruch. Navíc Vesmírem patentovaný
Infinity Engine je technologický zázrak.
Chlubí se nekonečným rozlišením,
nekonečnou vzdáleností, nekonečným prostorem k prozkoumání,
nekonečným prostředím ke zničení, a tak detailním algoritmem levelů,
že se Red Dead Redemption může stydět. U hry,
která dělá tolik věcí dobře, je těžké uvěřit,
že by mohla dělat něco špatně. Už jen fakt, že si většina hráčů
stěžuje na chování ostatních hráčů, ale ne na hru samotnou. Když se podíváme pořádně,
myslím tím fakt pořádně, začneme vidět malé nedostatky.
Je tu omezená rychlost, věci nemohou jet rychleji,
i když se budeme snažit sebevíc. Ta nekonečná rozloha,
kterou se chlubili? Ukázalo se,
že není tak úplně nekonečná. Některé vážnější bugy ohledně přesnosti,
vyskočí v systému, když dojde na hodně malé věci. A fyzikální systém
naprosto šílí, když se pokusíme natlačit
moc věcí na jedno místo.
I přes to všechno,
je Vesmír perfektní zážitek, který si mnoho z nás užívá
každý den. Jak může někdo
vytvořit něco tak dobrého? Přestože jsme poslali
nespočet e-mailů vývojářům, nedostali jsme žádnou odpověď. Abychom odpověděli na otázku,
budeme muset prolomit kód hry. Abychom mohli začít hackovat Vesmír, musíme nejdříve porozumět možnostem
Infinity Engine.
Je celkem logické začít
s vykreslenými objekty, začněme tedy u nich. Jak možná víte, obyčejné enginy používají pár variací
techniky zvané "měření vzdálenosti." Z každého pixelu, který musí být
vyrenderován, je poslán paprsek, ten se odráží od objektů,
dokud se nedostane ke zdroji světla. Infinity Engine
tohle paradigma otočil naruby, použitím systému nazvaného foton.
Tyto částice světla zvané fotony, jsou ve skutečnosti vyslány
ze zdroje světla a hromadí data barev, zatímco si jdou vlastním směrem. Země je plná fotonů,
a vše, co je vidět, je zkonstruováno prací fotonů,
které jsou uvnitř. Protože vše co je vidět
je závislé na čase, mají samotné fotony rychlost,
zvanou "rychlost světa" nebo-li "c" okolo 300 milionů metrů za sekundu.
Tady to začne být zajímavé. Fotony lpí na této konstantě, což znamená, že jsme našli první věc,
kterou můžeme začít hackovat. Pokud je maximální obnovovací hodnota
u Vesmíru omezena na toto číslo, co se stane, když budeme rychlejší? Vemte si Quaka,
hráči už v něm tak dlouho jen skákají, aby tím překročili "maximální rychlost,"
až se to stalo základem pro zkušené hráče.
Co se tedy stane, když si budeme hrát
na profíky a překročíme rychlost světla? Ukázalo se, že nemůžeme. Nic nemůže.
Bez ohledu na to, kolik energie použijeme, nic v Infinity Engine nemůže jet rychleji,
než rychlost světla. Dokonce se jen přiblížit k té hodnotě
je téměř nemožné. Jak to? Když se podíváme na kód, abychom zjistili,
co se děje, uvidíme bizarní věc. Čím více se objekt blíží rychlosti světla,
tím je těžší a těžší. Toto je skutečně zvláštní,
když se nad tím zamyslíte.
Nikdy jsem to předtím u žádné hry neviděl,
ale je to skutečně chytrý hack. Protože čím je věc těžší,
tím více energie do ní musíme vložit, aby zrychlila. Když se tedy zrychlením objekty ztíží,
tak vznikne chytrý způsob, který se vyvaruje zjištění
této chyby v maximální rychlosti, aby si toho hráč nevšiml. Když se podíváte na graf, tak zjistíte,
že se to začíná dít u rychlosti světla. Za to děkujme vývojářům.
Fakt, že samo světlo má rychlost, je částečně způsobeno další věcí od
Infinity engine - maximálním vykreslením. Podívejme se do kódu,
abychom zjistili proč. U her musíte specifikovat "kde" něco je
a "kdy" si to objeví. Kódy typicky mívají dvě proměnné,
"pozici" a "čas." 2D hry ukládají "pozici" jako vektor2
a 3D hry jako vektor3. Čas je obvykle samostatná proměnná
a běží díky jinému systému. Infinity Engine naopak ukládá pozici i čas
dohromady v samotném vektoru4.
Používá svůj ukládací modul,
nazvaný "Časoprostor." Většina her má omezení vzdálenosti. Předměty, které jsou daleko od kamery,
render ignoruje. Je to proto, aby se renderování zrychlilo
a zajistilo tím lepší výkon pro všechny zúčastněné hráče. Ale jak jsme zmínili dříve,
foton nefunguje jako většina zobrazení. Všechny viditelné cesty by měly pro hráče
být kdykoliv přístupně k prozkoumání. U enginu,
který se chlubí nekonečným vesmírem, to znamená, že předměty,
které jsou blíže k divákovi, jsou stejně vyrenderovány,
jako věci vzdálené miliony kilometrů.
A to nám dává další věc,
kterou můžeme hacknout. Lze zkonstruovat výhled
na tolik věcí současně, že bychom tím zasekali render,
nebo ho dokonce zasekli? Odpověď je stejná - nejde to. Jak to? Figurují v tom dva chytré systémy.
První je časoprostor.
Neustálé se rozpíná, dává mezi objekty
stále více úložného prostoru, zatímco objekty
jsou k sobě přitahovány gravitací. To způsobí, že většina shluklých objektů
ve vesmíru je oddělená obřím prostorem,
který každým dnem roste. Někteří z vás by toto mohli poznat
ze stejného algoritmu, který šetří prostor tím,
že zobrazí jen to, co před sebou vidíme. Druhé je rozpínání, to s fotonovým enginem spolupracuje
překvapivým způsobem.
Jak víte,
fotony mají rychlost, díky tomu
mohou objekty být od nás tak daleko, že světlo prostě nemám dostatek času
k nám dorazit. Protože vesmír je starý přibližně
13.7 miliard let, a světlo může cestovat rychlostí zhruba
5 bilionů mil za rok, kterýkoliv objekt vzdálenější
65 miliard bilionů mil není samozřejmě vyrenderován.
Když pracujete na expanzivním faktoru,
vytvoříte takzvanou "renderovací bublinu," která má okolo 230 miliard trilionů napříč.
To je sakra velký skybox. Dobře, Vesmír zvládá masivní věci.
Co ale malé věci? Co se stane, když se začneme šťourat
okolo nejmenších objektů ve hře? Nejdříve se budeme muset podívat na to,
jak Vesmír zvládá geometrií. Jsou dvě hlavní metody,
kterými se dnes ukládají 3D data her. První a nejpopulárnější metoda,
je vertex-mesh. Samostatné body, spojené hranami,
vytváří povrch.
Je to velmi rychlý algoritmus
pro zrenderování, proto je tak populární. Akorát selhává u věcí,
které nemají přesně definovaný povrch, jako mraky a voda. Druhá metoda začala být oblíbená
s popularitou Minecraftu, jmenuje se Volumentric. Zde jsou objekty popsány jako funkce, a povrch je křížením těchto funkcí
naznačený a paprsky jej renderují.
To renderuje objem přirozeně,
ale má to svá omezení. Je to výpočetně drahé, rotace je složitá,
a těžce se s tím vypočítává fyzika. Infinity Engine má opět unikátní řešení,
hmotu. V tomto paradigmatu
jsou všechny objekty uloženy jako něco, co sdílí vlastnost
obou nesouvislých vertex geometrií a souvislých volumentric geometrií. Programové rozhraní dovoluje, aby byly některé výpočty nesouvislé,
spojením: hmota.částice, a souvislé pro ostatní,
spojením: částice.vlna.
Je to chytrý flexibilní přístup,
ale má zvláštní vedlejší účinek. Protože můžete získat data
jedině těmito dvěma způsoby, tak to pro jisté věci
může působit dvojsmyslně. Podívejme se například
na malou částici hmoty. Má pozici a zrychlení.
Vše v pořádku. Ale snažím se udělat něco přesně,
takže musím znát přesnou pozici. Abych se k tomu dostal,
musím oddělit objekt spojením: hmota.částice.ZískejPozici().
Uvidíme, co se stane. Teď vím, kde přesně je,
ale nemohu zjistit jeho přesné zrychlení. Ale co když potřebuji přesné zrychlení? Budu muset udělat souvislý objekt:
hmota.vlna.ZískejZrychlení(). Když to udělám,
tak zjistím přesnou rychlost i směr, ale nemůžu zjistit přesnou pozici.
Tohle je určitě chyba. Rozhodně to působí jako něco,
čeho by se mělo využít.
Nezdá se, že by šlo o něco,
co by vyšlo ve finální verzi hry. Ale vyšlo. Tato nejednoznačnost
je ve skutečnosti využitá ve spoustě technologiích. V počítačích,
telefonech, magnetické rezonanci. Všechno je závislé na využití chytré chyby
v subatomárním měřítku. A v normálním měřítku
tahle nejednoznačnost... prostě funguje. Průměrný hráč si toho nikdy nevšimne,
protože ta nepřesnost je strašně malá. Tohle je prvotřídní příklad chyby,
která může být vydána.
Dobrá, zatím jsme prozkoumali rychlost,
prostor a velikost. Spojme všechno dohromady a podívejme se,
co vesmírem hýbe: Centrální procesorová jednotka
zvaná Quantum. Quantum je moje nejoblíbenější část
Infinity Enginu. Unikátní přístup k výpočtům. Všechny fyzikální interakce jsou řešeny přímou interakcí fotonu,
časoprostoru a hmoty Například fotony, používané
v renderovacím systému, jsou ve skutečnosti malé části hmoty, vzniklé z energie interakcí ostatních
částí hmoty, dopravovány časoprostorem.
Spousta komplikovaných systémů byla překvapivě vytvořena jen pár
základními interakcemi. Je dobré, že nemusíte posílat
pár miliard částic pokaždé, když chcete říct "udělej sendvič". Quantum funguje na nejzákladnějších
pravidlech, která udržují simulaci vchodu. Gravitace je ve skutečnosti něco jako
vedlejší efekt tohoto výpočtu.
Jak hmota v blízkosti další hmoty
okupuje prostor, musí se vypočítat více interakcí, což trvá déle a hmota tak zůstává
po dlouhou dobu poblíž jiné hmoty. Tohle mi přijde jako situace, kde by
snadno mohla nastat nekonečná smyčka. Tady tedy najdeme poslední díru,
na kterou se dnes podíváme. Lze nakupit do jedné lokace tolik hmoty,
že to výpočetní engine Quantum nezvládne? Není to možné na Zemi.
Když se kolem sebe podíváte, tak je tu spousta hmoty
a vše funguje bez problémů.
Ale v hlubokém vesmíru jsme byli schopni
najít neuvěřitelně obří objekty, které, podle všeho,
odpoví na naší otázku za nás. Co se stane, když příliš velké množství
hmoty okupuje jeden prostor? V podstatě - mrtvé pixely. Stephen Hawking jim dal zlověstnější název:
Černé díry, protože fotony se z této oblasti nevrací.
Tato místa vyžadují spoustu výpočtů, prakticky mají nějaká hranice,
nazvané horizonty událostí, kam když se dostane jakýkoliv objekt,
tak je ztracen v nekonečné smyčce, pravděpodobně navždy.
A hra nadále běží.
Jak to? Pokud vám tohle přijde podobné
naší renderující bublině kterou jsem ukazoval dříve,
tak nejste sami. Prostě a jednoduše
čím více hmoty nacpeme do sebe, tím více interakcí musíme vypočítat. Když to číslo překročí určitý práh,
bylo by logické rozjet separátní server, který by se postaral o zbylé zatížení.
A dokonce by dávalo ještě větší smysl rozjet úplně novou kopii Vesmíru
na tom serveru, když už má všechnu potřebnou logiku,
aby běžela přesně pro takovou simulaci. Představte si to, několik serverů,
každý běží rekurzivní instancí Vesmíru, zasazených prostorem
a zanechaných k rozkvětu. Každá nová instance
je krásným ztělesněním věcí, které byly,
a věcí, které budou. Servery od shora až dolů.
Co jsme se tedy naučili? Samozřejmě je tu mnohem více věcí,
ale nemáme více času. Zrekapitulujme si to. Za prvé:
Omezení používejte kreativně. Rychlost světla, nebo-li "c" je hlavním
omezením všeho, co běží ve Vesmíru. Kdyby to bylo špatně navržené,
tak by to byla katastrofa. Od zvláštního hacku objemu
v maximální vykreslovací vzdálenosti, vývojáři stále nacházeli
kreativní způsoby, jak omezení využít v jejich prospěch.
Omezení pěstuje kreativitu.
Využijte toho hned a často. Za druhé:
Dohlížejte na svůj rozsah. Vesmír se chlubí nekonečnem,
ale ve skutečnosti je jen velmi velký. Stejně tak, když děláte hry,
mějte jasnou vizi, čeho chcete dosáhnout. Je snadné zkusit udělat hru,
která potěší všechny, a je přirozené
se tam pokusit přidat všechny vlastnosti. Ale pamatujte, že i něco tak obsáhlého
jako Vesmír, ví moc dobře, kdy jsou věci mimo rozsah.
Za třetí:
Neřeš malé věci příliš. Ta zvláštní chyba s přesností
je frustrující. Znám spousty programátorů,
většina je tady v místnosti, kteří by byli vzhůru do čtyř ráno každou
noc a snažili by se tuto chybu opravit. Podívejte se na to z větší perspektivy,
pokud ta chyba nedělá hru znatelně horší, tak možná není nutné ji opravovat. Poslední:
Přijmi vzniklý jev.
Ve hrách máte spoustu různých systémů
interagujících spoustou různých způsobů. Může být velmi těžké předpovídat,
co se stane může kdykoliv stát. Jako herní designéři se často pokoušíme mít přesnou kontrolu
nad věcmi, které děláme. Ale občas se musí udělat krok zpět
a nechat hru takovou, jaká chce být. Výsledek
by vás ve skutečnosti mohl překvapit. Dobrá věc na Vesmíru je,
že je doslova všude, a podle toho, co vím,
tak je zdarma k šíření a úpravě, nebo se alespoň s nikým ještě nesoudil.
Takže až příště narazíte na nějaký problém
v herním designu, udělejte to,
co dělám já: Vemte si to od Vesmíru. Rád bych teď změnil téma
a řekl něco o tom, co mě inspirovalo k této přednášce. Nebyl to herní průmysl,
ani vychvalovaná hra, ani nově vydaná konzole. Nebylo to plánované vydání,
a určitě to nebyla aféra GamerGate.
Byla ta epizoda Kosmos. Konverzace s kamarádem. Byla to procházka městem
za podzimního odpoledne, při které jsem se zamyslel
nad spoustou věcí, nad kterými normálně nepřemýšlím. A právě o tom jsem dnes chtěl mluvit,
o věcech, které nás inspirují tvořit. Pro nás je Země celý svět, ale je to jen mikroskopická část
nepatrné galaxie, v malém zlomku vesmíru.
A herní průmysl je stále malý. Jednoduše řečeno, v životě
je toho mnohem více, než ve hrách. Nenechte se zblbnout komentářem,
lidem tolik nezáleží na počtech snímků, DLC, DRM, nebo poplatcích uvnitř aplikací. Zajímá je zážitek, který za to stojí. Jediná možnost, jak jim ho můžete dát,
je jít ven a zažít ho na vlastní kůži. Takže běžte, buďte inspirováni,
zvyšte si level, dokončete nějaké questy, získejte další schopnosti,
uspějte ve všem.
Pokud je pravda, že naše realita,
že všechno, co jsme kdy věděli, nebo budeme vědět, je hrou... neměli bychom ji hrát víc? Myslím, že máme tak pět minut na otázky. Jsem si celkem jistý,
že nějaké dotazy budou, pokusím se na ně odpovědět,
pokud se na ně zeptáte. Použijte prosím mikrofon, špatně slyším.
Který experiment určí,
zda je svět simulací? To je velmi zajímavé, Fermilab teď pracuje na takzvaném
holometer experimentu, výsledky by měly dorazit koncem roku 2016. Používají obří lasery, aby zjistili,
zda vesmír má, nebo nemá rozlišení. Pokud má, tak je to dobrý argument pro to,
že je všechno simulace. Takže na to teď tak trochu čekáme. Je možné si změnit charakter,
nebo to byl jen bonus v předobjednávce?
Jsem přesvědčen,
že to byla předobjednávka od GameStopu, ale protože Vesmír vznikl před GameStopem
tak nevím, jestli je to stále k mání. Dobře, děkuju. - Mám jednu hypotetickou otázku.
- Dobře. O Vesmíru si říkal, že je to hra,
jaký ovladač si myslíš, že má? To je zajímavá otázka. Když se podíváš,
jak je všechno spojené dohromady, všude, kam se podíváme, vidíme hmotu,
nebo vidíme všechny tyto interakce, ale to, co dělá tyhle věci zajímavým,
není hmota, ale řády, které vznikají z hmoty.
Je to jako vzniklé vlastnictví řádů,
a když se podíváš na lidský mozek, je to v podstatě kus něčeho lepkavého,
ale ty interakce, které vznikají z toho, jak hmota interaguje mezi sebou,
přináší rozkvět věcem jako interakce, akce, svobodná vůle a takové věci. Takže tohle je zvláštní případ,
kdy je ovladač spíš jakoby vrozený, vyvinutím řádem interakcí,
než že by byl promyšlený předem. Hádám,
že chceš trochu výstižnější odpověď, myslím, že by to byl ovladač xboxu 360.
- Děkuju.
- Já bych ho teda použil. - Mám osobní otázku, jestli to nevadí?
- Ok. - V roce 2016 budou mít odpověď.
- Pravděpodobně. Potom budeme mít možnost
se podívat za oponu, chtěl by ses podívat? Moc rád. Otázka byla:
Pokud se ukáže, že je to simulace, a my bychom se mohli podívat
takzvaně za oponu, jestli bych se chtěl podívat?
Rozhodně ano... I když to zničí tu iluzi? Já se živím vytvářením iluzí,
a mít možnost se podívat, jak to udělal někdo mnohem lepší,
si myslím, že by mohlo být velmi zajímavé. - Můžu navázat další otázkou?
- Jasně, ale rychle. Jedna z věcí, které tě inspirovala,
byl Kosmos, což je vědecký pořad, další osobní otázkou je,
dvakrát jsi zmínil "jeho" jako stvořitele. Je zde... To je kvůli traumatickému programu
z dětství, když jsem vyrůstal v katolické škole.
Takže se omlouvám, že to tak antropomorfizuji. Ale ano, je to sémantikou. Ještě jedna otázka, nebo...?
Bohužel mi vypršel čas, ale míříme do herní místnosti, takže kdyby se kdokoliv chtěl zeptat
na další otázky, tak mě potkáte tam. Děkuji, že jste přišli. Markst
www.videacesky.cz
Související videa
Komentáře
Žádné komentářeBuďte první, kdo napíše komentář





