VHS · přednáška 3 · přepracovaná verze
Svět s hráčem
a bez něj
Paměť světa, spouštěče změn a dění mimo hráčův dohled.
Jádro přibližně 45 min, rozšířený volitelný blok PCG přibližně 20–25 min.
VHS · přednáška 3 · přepracovaná verze
Paměť světa, spouštěče změn a dění mimo hráčův dohled.
Radek Richtr · Virtuální herní světy
Jádro přibližně 45 min, rozšířený volitelný blok PCG přibližně 20–25 min.
Nová výuková struktura vychází z původní P03. Jde o zásadní přepracování, nikoli o bezezměnný převod PDF. Původní materiál zůstává zachovaný. Plánované časy nebyly ověřeny ve třídě.
Nejprve proběhne celý výklad a shrnutí, poté volitelný blok procedurálního generování, zdroje a návaznost. Zadání, pracovní list a test jsou oddělený volitelný dodatek až za koncem přednášky. Čísla v adresách snímků zůstávají původní, přehrávač ukazuje nové pořadí.
Vyberu truhlu, odejdu na hodinu a vrátím se. Co najdu?
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Nechte studenty nejdřív hlasovat. Více odpovědí může být správně pro jiné návrhy hry. Cílem je najít chybějící pravidla, ne uhodnout jednu „realistickou“ odpověď.
Hodina v zadání je záměrně neurčitá: skutečná hodina, herní hodina a hodina za pauzy nejsou totéž. Tato vesnice je náš společný model.
Na konci dokážete popsat chování jedné oblasti v mini-GDD.
Zaměřujeme se na rozhodnutí, která potřebuje tým. Nevynucujeme jeden typ světa pro všechny žánry. Nejde o přednášku o rendereru ani o úplný kurz herní AI.
| Bez vývoje mimo oblast | Vývoj mimo oblast | |
|---|---|---|
| Změny se resetují | Obnovená truhla, zastavený sklad. | Stav návštěvy se resetuje, počasí se mění globálně. |
| Změny se uchovají | Prázdná truhla, sklad stojí. | Prázdná truhla, sklad dál vyrábí. |
Paměť a samostatný vývoj můžeme kombinovat.
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Tabulka je naše didaktická pomůcka. Osy popisují jednotlivé systémy a jejich rozsah, ne nutně celou hru jediným štítkem. Reset předmětů a průběžné globální počasí mohou být zcela legitimní kombinace.
Samostatný vývoj zde znamená dění bez přítomného avatara v oblasti. Vývoj po vypnutí programu vyžaduje zvláštní pravidla, k nim se dostaneme na snímku 16.
| Původní označení | Co nyní zkoumáme |
|---|---|
| Timeless | Kdy se lokální změny zahodí nebo obnoví? |
| Causal / Player-induced | Jaké následky má hráčova akce a jak daleko zasáhnou? |
| Evolving / Independent | Co spouští změnu bez přímé hráčovy akce? |
Používáme vlastnosti systémů místo historického žebříčku her.
Původní dělení má užitečnou intuici: návrat do oblasti a vliv hráče. Definice causal a player-induced se ale místy překrývaly a míchaly paměť, prostor, čas i technickou realizaci. Proto pojmy zachováváme jako orientační slovník, ne jako univerzální historickou teorii.
Vyšší míra simulace sama o sobě neznamená lepší hru. Záleží na zamýšleném zážitku a nákladech.
| Otázka | Příklad |
|---|---|
| Vykreslování | Vidím objekt na obrazovce? |
| Aktivní výpočet | Aktualizuje se jeho pohyb, výroba nebo chování? |
| Uchování stavu | Existuje záznam, podle kterého jej obnovím? |
Objekt může být uložený, přestože se právě nekreslí ani neaktualizuje.
Zdroj: Microsoft Learn: Simulation Distance, Render Distance, and Ticking Areas · Epic Games: World Partition
Oddělení slouží návrhu chování. Samotné uvolnění grafiky z paměti nesmí nechtěně změnit hráčův postup. Zároveň existence záznamu neznamená, že objekt dostává aktualizaci v každém snímku.
Microsoft rozlišuje render a simulation distance. Epic popisuje streaming buněk, nikoli univerzální save herního postupu.
Zdroje: Microsoft Learn: Simulation Distance, Render Distance, and Ticking Areas · Epic Games: World Partition
oblast: přístav truhla_12: otevřená most: opravený sklad: 7 kusů, kapacita 20 úkol: doručeno poslední_aktualizace: herní minuta 320
Stav má identitu, rozsah a pravidla změny. Nemusíme ukládat každý vizuální detail.
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Ve výukovém příkladu jde o autoritativní údaje pro obnovu herního chování. Vizuální kouř lze znovu vytvořit, ale stav opraveného mostu nesmí zmizet, pokud jsme slíbili trvalou změnu.
Konkrétní schéma a oddělení trvalých a dočasných údajů je úkol technického návrhu. Zde stačí, že tým rozumí významu každé položky.
| Před akcí | Podmínka a událost | Po akci |
|---|---|---|
| Truhla zavřená | Hráč ji otevře v dosahu. | Truhla otevřená, inventář +2 mince. |
| Truhla otevřená | Hráč zkusí otevřít znovu. | Beze změny, žádné další mince. |
Stejnou událost musíme umět bezpečně vyhodnotit i opakovaně.
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Tento přechod navazuje na GDD: stav, podmínka, akce a výsledek. Na opakované otevření aplikujeme jiné pravidlo než na první. Zde jde o jednoduchý návrh, nikoli o univerzální implementaci inventáře.
Později lze doplnit více hráčů, zpoždění a transakce. Dnes stačí konkrétní otázka: odkud se berou další mince, pokud bychom stejnou odměnu přidělili dvakrát?
Truhla obsahuje 2 mince. Sklad má 3 kusy zboží.
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Nejdřív předpověď, potom klikání. Ve všech modelech spusťte stejný postup: vybrat truhlu, odejít, počkat 5 minut, vrátit se, zkusit truhlu znovu. Změnu výběru modelu potvrďte tlačítkem Nový pokus, které obnoví všechny startovní hodnoty.
Reset vrací oblast, ale zachovává inventář hráče: tím záměrně ukazuje možnost opakovaného získávání odměny. Paměťový model při nepřítomnosti sklad neaktualizuje. Živý model zachová truhlu a vyrábí i mimo oblast. Sklad má kapacitu 9 a výrobu 1 kus/min, bez spotřeby vstupů.
Reset oblasti a reset hráčova inventáře popište zvlášť.
Z resetu neděláme automaticky chybu. V tréninkové nebo cyklické hře může být žádoucí. Problém vzniká, když obnovený zdroj a zachovaný inventář odporují zamýšlenému ekonomickému pravidlu.
Vraťte se k předchozí ukázce a nechte studenty navrhnout dvě opravy: omezit odměnu identitou truhly, nebo při novém pokusu obnovit i inventář. Každá volba mění zážitek.
| Rozsah | Otázka v GDD |
|---|---|
| Aktuální návštěva | Přežije změna opuštění místnosti? |
| Úroveň / pokus | Přežije smrt a checkpoint? |
| Uložená kampaň | Přežije zavření a načtení hry? |
| Sdílený svět | Vidí stejný stav i ostatní hráči? |
„Trvalé“ vždy potřebuje doplnit: v jakém rozsahu?
Jde o návrhové možnosti, ne o povinné vrstvy každé hry. U multiplayeru je navíc důležité, kdo stav spravuje. Nepřecházejte automaticky od trvalosti v jedné návštěvě k trvalosti napříč kampaní.
Manuál popisuje mince, čas, životy i porážení nepřátel. „Svět se nikdy nemění“ je příliš silné tvrzení.
U každé změny se ptejme, co přežije restart.
Procedurální obsah a změny během hraní mohou existovat společně.
Zdroj: Nintendo: Super Mario Bros., elektronický manuál · Togelius, Shaker, Nelson: PCG in Games, kap. 1 (2016)
Nintendo manuál je zde protipříkladem absolutní neměnnosti: obsahuje počítání mincí, čas, životy a porážení nepřátel. Neodvozujeme z něj kompletní pravidla respawnu nebo ukládání.
PCG in Games uvádí Diablo jako příklad generování map, předmětů a monster. Nevyvozujeme, že každá část světa nebo každé vydání Diabla uchovává změny stejně. Ilustrace pochází z dochovaných přednáškových assetů, práva ke hře má Blizzard.
Zdroje: Nintendo: Super Mario Bros., elektronický manuál · Togelius, Shaker, Nelson: PCG in Games, kap. 1 (2016)
| Změna | Dosah v našem návrhu |
|---|---|
| Otevřená truhla | Jeden objekt v jedné oblasti. |
| Opravený most | Změna dostupných cest. |
| Doručená zásilka | Úkol a nabídka obchodníka. |
| Podpora frakce | Globální příznak s více konzumenty. |
Malý počet příznaků může mít mnoho viditelných důsledků.
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Oddělujeme rozsah změny od její reprezentace. Otevření mostu může ovlivnit navigaci, úkoly i dostupnost zboží, aniž bychom simulovali každý kámen mostu.
Tady stačí přehled závislostí. Psaní dialogů, charakterizaci a podrobné chování NPC budeme rozebírat později.
U lhůty musí být jasný start, rychlost, pauza a konec.
Typy hodin jsou naše návrhové rozlišení. Konkrétní engine může čas reprezentovat jinak. Nevytvářejte termín „za tři dny“ bez vysvětlení, které tři dny a odkdy.
Nechte studenty říct, jestli by chtěli časový limit za pauzy, čtení dlouhého dialogu nebo mimo hru. Odpověď souvisí s přístupností a zamýšleným tlakem.
| Podnět | Možná reakce v našem modelu |
|---|---|
| Hlad obchodníka | Přeruší práci a jde jíst. |
| Otevření trhu | Vyrazí ke stánku. |
| Chybějící vstup | Výroba se zastaví. |
| Hráč zablokoval cestu | Zvolí náhradní trasu nebo ohlásí problém. |
Rutina a reakce na událost se mohou překrývat.
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Tabulka ukazuje, že samostatný vývoj není synonymem jednoho časovače. Vstup může být čas, potřeba nebo změna jiného systému. Podrobné návrhy rutin a NPC přijdou v následujících přednáškách.
Každá situace může mít jiné pravidlo. Běžící server není vypnutý svět.
U zavřeného programu je potřeba například běžící server nebo dopočet při dalším spuštění. Uvedené mechanismy jsou možnosti návrhu, ne záruka pro každou hru.
Dokumentace Godotu rozlišuje režimy zpracování za pauzy. Zastavení process funkcí navíc automaticky neznamená zastavení všech reakcí, například signálů. Při demonstraci výroby používáme záměrně ovládaný herní čas, nikoli skutečné minuty čekání.
| Render distance | Simulation distance |
|---|---|
| Co klient vykreslí. | Kde se zpracovávají herní procesy. |
| Viditelná krajina může být vzdálenější. | Týká se například entit, růstu rostlin a tekutin. |
Ticking areas jsou zvláštní aktivní oblasti, ale také mají omezení.
Uchovaný stav farmy ještě neznamená průběžný růst.
Zdroj: Microsoft Learn: Simulation Distance, Render Distance, and Ticking Areas
Příklad platí pro Bedrock podle Microsoft Learn. Nezaměňujeme jej s Java Edition. Ticking areas dokládají, proč se vyhnout absolutnímu pravidlu „za hranicí vše stojí“. Přirozené spawnování má další podmínky.
Otázka: farma se po návratu nezměnila. Je to důkaz zapomenutí stavu? Ne, může být uchovaná a pouze bez aktivní aktualizace. Zdroj nedokládá běh vypnutého programu.
Zdroje: Microsoft Learn: Simulation Distance, Render Distance, and Ticking Areas
Sklad má 3 kusy. Vyrábí 2 kusy za herní minutu, kapacita je 20. Vstupů je dost, spotřeba žádná.
| Politika | Sklad po návratu | Aktualizace modelu |
|---|---|---|
| Zmrazení | 3 / 20 | 0 |
| Krok po minutě | 13 / 20 | 5 |
| Dopočet při návratu | 13 / 20 | 1 |
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Požádejte o výpočet před pohybem posuvníku. Po 5 minutách vychází 13. Po 120 minutách je sklad stále na kapacitě 20. Není to předpověď ekonomiky konkrétní hry.
Kroky a jednoduchý dopočet dávají v tomto izolovaném modelu stejný výsledek. Počet aktualizací je počet použitých operací modelu, nikoli změřený výkon enginu. Při přerušení vstupů, nákupech nebo kolizích by jednoduchý vzorec nestačil.
Potřeby, zranění a vztahy ovlivňují reakce kolonistů.
Řídí události, například bouře, nájezdy a obchodníky.
Reakce obyvatel a řízení tempa jsou rozdílné úlohy.
Zdroj: Ludeon Studios: RimWorld
Oficiální popis RimWorld zmiňuje potřeby a vztahy kolonistů i AI storytellera. Neodvozujeme přesné intervaly, záruku určitého chování Cassandry nebo jazykový model.
Požár, ztráta zásob, hlad a následný konflikt mohou posloužit jako naše ilustrace propojení systémů. Nejde o garantovanou sekvenci každé partie. Tento zdroj také nedokládá stejně podrobnou simulaci každého místa planety.
Zdroje: Ludeon Studios: RimWorld
Breath of the Wild: Eiji Aonuma popisuje zastavení sudu pomocí Stasis, několik úderů a jeho následné uvolnění do nepřátel.
sud v pohybu Stasis: dočasně zastavený hráčovy zásahy uvolnění: nový pohyb a zásah nepřátel
Výuková interpretace: změny stavu a pravidla se dají skládat.
Zdrojem je přímý rozhovor Nintenda s producentem hry, nikoli obecné shrnutí fan-wiki. Aonuma zmiňuje fyzikální engine a konkrétní kombinaci se sudem.
Řetězec v přednášce je naše didaktická interpretace. Z rozhovoru neodvozujeme úplnou implementaci, životnost objektů ani simulaci vzdálených oblastí. Nezaměňovat se schopností Ultrahand v Tears of the Kingdom.
| Nástroj | K čemu jej použijeme |
|---|---|
| Skriptovaná událost | Důležitá situace má určené podmínky a výsledek. |
| Systémová pravidla | Více objektů reaguje podle společných pravidel. |
| Výběr událostí | Řídíme nabídku situací nebo tempo. |
V jednom světě se mohou doplňovat. Více simulace není automaticky více zábavy.
Zdroj: Ludeon Studios: RimWorld · Nintendo: rozhovor s Eiji Aonumou (2017)
Tabulka je návrhové rozlišení účelu. Konkrétní mechanika může používat všechny tři přístupy. Nevytvářejte falešnou opozici skript versus skutečně živý svět.
RimWorld a Zelda podporují dvě odlišné perspektivy. Z jejich příkladů neděláme všeobecnou kategorizaci všech her.
Zdroje: Ludeon Studios: RimWorld · Nintendo: rozhovor s Eiji Aonumou (2017)
Náhodná ztráta úkolu může působit jako chyba, i když simulace funguje.
Jde o návrhová doporučení, ne empirickou záruku. Některé hry chtějí tvrdé následky a nenahraditelné ztráty. Pak je zvlášť důležité komunikovat pravidla.
Příklad pro diskusi: loď odpluje v osm. Jak hráč zjistí čas? Co se stane, když právě čte dialog? Jaká je alternativa po zmeškání?
| Způsob výpočtu | Možnost našeho návrhu |
|---|---|
| Podrobný | Pohyb a kolize v aktivní scéně. |
| Diskrétní | Přesun obchodníka mezi body po intervalech. |
| Souhrnný | Produkce a spotřeba celé oblasti. |
| Dopočet | Obnova jednoduchého procesu při návratu. |
Snížená podrobnost musí zachovat důležité hráčovy sliby.
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Toto jsou návrhové strategie. Nejde o tvrzení, že Unreal nebo X4 používá přesně tyto čtyři úrovně. Náklady se liší podle implementace, hardware a závislostí.
Při přepnutí reprezentace hlídáme shodu času, zásob, identit a výsledků. Doporučený test: stejný start a stejný čas, jednou aktivní oblast, podruhé dopočet. Rozdíl musí být přijatelný nebo vysvětlený.
World Partition v Unreal Engine načítá a uvolňuje buňky kolem streaming sources, například hráče.
Odchod z oblasti nesmí nechtěně vynulovat splněný úkol.
Zdroj: Epic Games: World Partition
První tvrzení dokládá dokumentace Epicu. Zbývající body jsou doporučení našeho návrhu obnovy. „Persistent level“ v dokumentaci není slib, že se automaticky ukládá každá hráčova změna.
U propojeného světa a sady modulů se mění náklady, přechody i organizace práce. Ani jedna topologie není univerzálně snazší nebo levnější.
Zdroje: Epic Games: World Partition
základ: seed + verze generátoru změny: otevřené truhly, opravené mosty hráč: inventář, poloha, schopnosti procesy: čas a rozpracované operace identity: stejné ID při každé obnově
U některých systémů potřebujeme i stav náhodného generátoru, ne jen počáteční seed.
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Zdroj: Epic Games: Random Streams
Jde o kontrolní seznam pro náš návrh. Hra může místo seedů ukládat celý vytvořený obsah. Požadované údaje závisejí na tom, co musíme reprodukovat.
Stejný počáteční seed poskytuje v daném generátoru opakovatelnou posloupnost. Pokud záleží na pokračování rozehraného náhodného procesu, musíme řešit také jeho aktuální stav nebo index. Změna verze generátoru může změnit základ.
Zdroje: Epic Games: Random Streams
Stejné vstupy stejného generátoru obnoví stejný základ. Ne historii hráčových akcí.
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Zdroj: Epic Games: Random Streams
Model používá vlastní deterministický hash seedu a identity osmi oblastí. Neimplementuje generátor Minecraftu ani Perlinův šum. Výsledek ukazuje jen reprodukovatelnost jednoduchého základu.
Tlačítko jiného seedu změní seed o jedna. Stejný výsledek některých buněk po změně je možný a není chyba. Neplatný vstup je odmítnut. Obnovu původních změn ukáže následující experiment.
Zdroje: Epic Games: Random Streams
Truhla: plná · inventář: 0 mincí
Nejdřív vyberte truhlu a uložte hru.
Zatím žádný snímek.
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Postup: vybrat truhlu, uložit, načíst jen základ a inventář, vybrat znovu. Inventář se dostane na 4, protože se stav otevřené truhly ztratil. Znovu načtěte původní snímek i se změnami a zkuste otevřít: inventář zůstane 2.
Snímek je pouze v paměti této stránky. Tlačítko Uložit zde neukládá soubor, účet ani localStorage a neodesílá data. Přesný formát JSON je náš školní model.
| Zámek | Klíč v návrhu |
|---|---|
| Zamčené dveře | Předmět nebo oprávnění. |
| Propast | Schopnost pohybu, most nebo jiná cesta. |
| Neznámý postup | Znalost hráče. |
| Zakázaný průchod | Stav úkolu nebo vztah. |
Hráč musí poznat překážku, potřebný prostředek a možnost návratu.
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Zdroj: Dormans a Bakkes: Generating missions and spaces (2011)
Klíč zde chápeme jako prostředek překonání podmínky, ne nutně položku inventáře. U znalosti hráče je zvlášť důležité odlišit ji od příznaku v uložené hře.
Příklad navazuje na původní silnou část P03. Prostorový postup lze navrhovat odděleně od geometrie.
Zdroje: Dormans a Bakkes: Generating missions and spaces (2011)
Pěkný půdorys ještě nezaručuje splnitelný postup.
Zdroj: Dormans a Bakkes: Generating missions and spaces (2011)
Dormans a Bakkes rozlišují mission a space jako dvě související struktury. Článek se týká generování úrovní pro action-adventure hry. Zásadu využíváme i při ručním návrhu našeho minipříkladu.
Ověření musí zahrnout stav inventáře a otevřených cest. Nestačí hledat souvislost obrázku mapy.
Zdroje: Dormans a Bakkes: Generating missions and spaces (2011)
Vyberte variantu a nejdřív předpovězte, zda lze dojít do cíle.
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Bezpečná varianta má dosažitelný klíč před zámkem, klíč se nespotřebuje. Blokovaná varianta má klíč až za vlastním zámkem. Třetí varianta začíná s jedním spotřebním klíčem a nabízí zamčený poklad i zamčený cíl. Otevření pokladu může znemožnit dokončení.
Ověřovač prohledává konečný graf stavů těchto malých modelů. Po nalezení vítězných stavů hledá zpětně, které dosažitelné stavy k nim vedou. Ukazuje tak rozdíl mezi existencí jedné vítězné cesty a absencí softlocku. Nejde o úplný test libovolné hry.
Surovina → výroba → zboží → prodej → prostředky na další provoz
Zkoumejte návrat do funkčního stavu, nejen ideální průchod.
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Řetězec je náš obecný model, nikoli rekonstrukce Parkanu. Z původní přednášky zachováváme otázku nečekaných následků, ale nepotvrzenou anekdotu nevydáváme za doloženou mechaniku.
Pojmy produkce a spotřeby rozvineme v návazné přednášce. Dnes jde o identifikaci závislostí a problémových stavů.
Pozorovaná scéna je jen část ekonomických vztahů světa.
Z oficiálního popisu nevyvozujeme stejně detailní fyziku všech sektorů.
Zdroj Egosoftu dokládá obchodování a výrobu v X4 Foundations. Používáme jej pro ekonomické závislosti, nikoli pro konkrétní algoritmus vzdálených soubojů nebo tvrzení o každém vydání série X.
Studenti mohou navrhnout rezervu vstupů, alternativní zdroj nebo záměrně tvrdé selhání. To jsou jejich návrhy, ne potvrzené mechaniky X4.
| Položka | Náš návrh |
|---|---|
| Stav | Zásoba 3, kapacita 20, dostatek vstupů. |
| Vývoj | 2 kusy za celou herní minutu, do kapacity. |
| Mimo oblast | Dopočet při návratu, při pauze čas stojí. |
| Uložení | Zásoba a poslední herní minuta aktualizace. |
| Test | Po 5 min: 13. Po 120 min: 20. Opakovaný návrat nic nepřidá. |
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Jde o hotový výkladový příklad zápisu do GDD, nikoli o zadání k vyplnění. Důležité je doplnění posledního testu. Po dopočtu musíme posunout čas poslední aktualizace, jinak by opakovaný návrat započetl stejný interval dvakrát.
Model předpokládá dostupné vstupy a nulovou spotřebu. Při omezených vstupech nebo prodeji bude pravidlo složitější.
Výsledkem je popsané a otestovatelné chování oblasti.
Shrnutí hlavního výkladu. Otázky propojují paměť, samostatný vývoj, čas a obnovu. Vysvětlují, co musí návrh konkrétně určit. Zadání samostatné práce následuje až v dodatku.
Volitelný blok · přibližně 20–25 minut
Jak vytvoříme základní obsah světa?
Další otázka: co se s ním děje při hraní?
| Vznik obsahu | Průběh světa |
|---|---|
| Ruční návrh nebo generátor. | Reset, paměť, čas a interakce. |
Tento blok je záměrně oddělený. V původní přednášce techniky generování přerušovaly výklad změn světa. Zde mohou být přídavkem nebo samostatným vstupem pro zájemce. Po rozšíření gramatik plánujeme přibližně 20–25 minut; nejde o čas ověřený ve třídě.
Už ukázka seedu dokládá, že generování není totéž co simulace změn po hráčově akci.
Procedurální generování obsahu vytváří herní obsah algoritmicky, s omezeným nebo nepřímým vstupem člověka.
Dopad na hratelnost není obecně uznávanou hranicí mezi PG a PCG.
Zdroj: Togelius, Shaker, Nelson: PCG in Games, kap. 1 (2016)
Vymezení přebíráme z PCG in Games. Kniha do obsahu zahrnuje funkční i vizuální a zvukové složky. Staré rozdělení „PG pro dekoraci, PCG pro hratelnost“ tedy nepoužíváme jako univerzální definici.
Při návrhu je přesto užitečné říct, jestli generujeme vzhled, prostor nebo podmínky hry. To je naše pracovní otázka, nikoli redefinice zkratky.
Zdroje: Togelius, Shaker, Nelson: PCG in Games, kap. 1 (2016)
Ve studentských pracích se osvědčuje skládat prostředí z předem připravených bloků.
| Ruční návrh | Generátor |
|---|---|
| Obsah místností nebo úseků prostředí. | Výběr bloků pro buňky mřížky. |
| Společný rozměr, vstupy a výstupy. | Rozmístění, orientace a propojení. |
| Geometrie, kolize a lokální hratelnost. | Kontrola dosažitelnosti důležitých cest. |
Ručně ladíme jednotlivé části. Generátor obměňuje jejich skladbu.
Doporučení ze zkušenosti vyučujícího se studentskými projekty.
Střední cesta mezi ručním návrhem celé mapy a generováním veškeré geometrie. Tým předem vytvoří a otestuje knihovnu místností, chodeb, křižovatek nebo úseků krajiny. Generátor skládá tyto hotové bloky do mřížky a řeší jejich návaznost. První verze může mít malou sadu bloků a jednoduchá pravidla.
Bloky potřebují společnou velikost či kompatibilní rozměry a popis spojovacích bodů. Při povoleném otáčení se musí správně otočit i výstupy. Návrh musí určit cestu od startu k cíli, případně umístění klíčů před zámky a pravidla slepých větví. Samotná náhodná volba sousedních bloků tyto požadavky nezaručí.
Tvrzení o osvědčeném postupu je zkušenost vyučujícího se studentskými pracemi. Nejde o výsledek srovnávací studie. Rozdělení práce v tabulce je naše návrhové doporučení, nikoli přesný popis Magitechu.
Studentská hra z VHS. Navazující bakalářská práce: Jiří Macháček, 2022.
Náš návrh musí hlídat shodu výstupů, průchozí kolize a dostupný cíl.
Zdroj: Jiří Macháček: Magitech – Generátor dungeonů (ČVUT, 2022)
Primární zdroj: Jiří Macháček, Magitech – Generátor dungeonů, 2022. Úvod na s. 1 uvádí vznik hry jako semestrálního projektu VHS. Oddíl 2.1.3 na s. 36 popisuje agenta, který nekopá geometrii, ale připravuje pozice pro hotové dlaždice. Tileset na s. 37 obsahuje čtvercové kusy prostředí. Oddíl 2.2.2 na s. 44–46 popisuje postup: rozložení do mřížky, specifické dlaždice a výběr konkrétního modelu podle sousedů.
Jde o návrh generátoru dokumentovaný v práci z roku 2022, nikoli o tvrzení o aktuálním vydání hry. Dlaždice zde znamená hotový kus prostředí, například chodbu či křižovatku. Poslední věta na slajdu je naše doporučení pro návrh a testování: shoda geometrických spojů a skutečná průchodnost jsou další podmínky nad pouhou sousedností buněk.
Plný text práce, tištěné stránky 1, 36–37 a 44–46 (stránky PDF 13, 48–49 a 56–58).
Zdroje: Jiří Macháček: Magitech – Generátor dungeonů (ČVUT, 2022)
| Nástroj | Typická úloha |
|---|---|
| Generátor náhodných čísel | Výběr z možností nebo parametrů. |
| Šumové pole | Prostorově související hodnoty, například výšky terénu. |
| Gramatika | Přepis struktur podle pravidel. |
Perlinův šum je gradientový šum. Midpoint displacement je jiný postup tvorby terénu.
Zdroj: Shaker, Togelius, Nelson: PCG in Games, kap. 4 · Ken Perlin: Improved Noise, referenční implementace
Prostorová souvislost je důvod, proč terén nevytváříme jen nezávislým náhodným číslem v každém pixelu. Kniha rozlišuje hodnotový a gradientový šum a popisuje fraktální terén.
Perlinova referenční implementace počítá noise ze souřadnic a gradientů. Nesléváme ji s algoritmem midpoint displacement, který byl v původních slajdech pod stejným nadpisem.
Zdroje: Shaker, Togelius, Nelson: PCG in Games, kap. 4 · Ken Perlin: Improved Noise, referenční implementace
Level → B p B → k B z B | m B | c
B = dosud nerozvinutá překážka; svislá čára odděluje možnosti přepisu.
k = klíč · z = zámek · m = monstrum · c = chodba · p = poklad
Platně: k-m-c-z-m-c-p
Neplatně: k-m-c-z-m-z-p — jeden klíč, dva zámky.
Syntaxe, splnitelnost a zajímavost jsou různé kontroly.
Používáme gramatiku z původní P03. Level a B jsou neterminály: musíme je dále přepsat. Malá písmena jsou terminály této konkrétní gramatiky. Znak | odděluje alternativy a pomlčky ve výsledném řetězci jsou jen naše čtecí oddělovače, ne součást pravidel.
Uvedený chybný řetězec v původním materiálu nelze vytvořit těmito pravidly. Každá aplikace k B z B přidá jeden klíč a jeden zámek. Vyvážený počet je nutná, nikoli obecně dostačující podmínka. Přiložený parser kontroluje celý řetězec této malé gramatiky, nikoli následující rozšířená startovací pravidla ani grafy.
Výkladový model: klíče se nespotřebují, chodbu lze projít a monstrum porazit. Pro skutečnou mapu potřebujeme navíc kontrolu dosažitelnosti včetně stavu hráče. Gramatika sama negarantuje férovou obtížnost.
B p → k B z B p → k m B z B p → k m c z B p → k m c z m B p → k m c z m c p
c-pJen chodba a poklad.m-m-m-m-c-pČtyři monstra, chodba, poklad.k-m-c-z-m-c-pJeden pár klíč–zámek.k-m-k-c-z-m-c-z-c-pVnořený pár klíč–zámek.Přepis vybíráme pro konkrétní B. Hotový řetězec už žádné B neobsahuje.
Zleva ukazujeme přesně jeden přepis v každém kroku. Po B → k B z B nejprve rozvíjíme levé B, pak pravé. Poslední dvě náhrady B → c ukončují příslušné části. Řetězce napravo obnovují další příklady z původní P03, včetně vnořeného páru klíč–zámek.
U vnořeného výsledku lze vysvětlit, že klíče přibývají před odpovídajícími zámky, ale prostý součet symbolů ještě není parser. Všechny čtyři výsledky a každý krok odvození mají automatickou kontrolu. Jde o výklad, nikoli o pracovní list nebo zadání pro dvojice.
Stejné pravidlo pro B můžeme zasadit do jiné kostry:
Level → B B B p
Level → strážce B miniboss odměna
B k B z boss pTři úseky B nejsou tři místnosti ani horní mez délky.
Obě alternativní kostry navazují na příklady původní P03. Jsou to dvě varianty startovacího pravidla, ne současně vyžadované řádky jedné úrovně. Symboly strážce, miniboss, odměna a boss zde představují již hotové události, ne další nerozepsané neterminály.
Level → B B B p zajistí tři rozvíjené úseky, ale rekurze uvnitř B může celkovou délku dále zvětšovat. Horní mez musí dodat řídicí postup. Při dosažení limitu vybereme ukončovací B → c a dokončíme všechna zbývající B; obsah s neterminály není hotový výsledek. Rozpočet je třeba plánovat i pro povinné ukončení.
Váhy výběru pravidel mohou měnit četnost monster nebo zámků, samy však neposkytují pevnou horní mez. Vestavěný parser z původního příkladu uznává pouze Level → B p; tyto nové starty nevaliduje. Konkrétní kostry jsou výkladové modely P03, nikoli zjištění o generátoru komerční hry. Kapitola 5 rozebírá také řízení posloupnosti grafových přepisů.
k-c-z-c-p. Obdélníky zde označují symboly, ne místnosti.Vnitřní uzly zachycují, jak jsme rozvíjeli Level a B.
Odvození je strom. Výsledkem této gramatiky je stále jedna posloupnost.
Strom je jiný pohled na stejné přepisy, ne nové pravidlo. Level má děti B a p, B má děti k, B, z, B a obě spodní B se přepíší na c. Listy v daném pořadí tvoří k-c-z-c-p. Každý neterminál byl nahrazen jednou povolenou pravou stranou.
Nezaměňujeme derivační strom se stromem místností. Hrana tohoto obrázku znamená vznik symbolu při přepisu, nikoli možnost projít chodbou. Skutečné prostorové větvení vytvoří až další příklad grafové gramatiky. SVG je vlastní výkladové schéma, nikoli převzatý obrázek z knihy.
Dole: dojdu pro K, vrátím se na rozcestí a otevřu Z.
Čísla určují identitu uzlů. Přepis musí správně zachovat jejich napojení na okolí.
Překreslené výkladové příklady z původního obrázku gramm3. Nahoře měníme cestu mezi uzly 1, 2 a 3 na rozcestí v uzlu 1. Dole zachováme uzly 1 a 2 a mezi ně vložíme zámek 4, zatímco klíč 3 umístíme do boční větve uzlu 2. Hrany průchodu v tomto školním modelu jsou obousměrné, takže se od klíče lze vrátit.
Grafový přepis nahrazuje nalezený podgraf, ne substring. Individuální identity uzlů dovolují připojit nový fragment na původní okolí. Rozhraní musí být určeno pravidlem; nelze libovolně odpojit okolní místnosti. Zde čísla nejsou pořadí návštěvy a Q není neterminál B z řetězcového příkladu.
Strom je speciální případ grafu. Graf může obsahovat i smyčky nebo více cest do stejného cíle. Možnost vrátit se po obousměrné chodbě ovšem sama nevytváří grafovou smyčku. Čáry pro odemykání nejsou další průchody. Konkrétní schéma je adaptace původní P03; obecný postup grafového přepisu viz kap. 5, oddíl 5.5.1.
K1 → Z1 → K2 → Z2 → K3 → Z3 → F — pořadí postupu, ne souvislá chodba.
Cesty tvoří strom, ale klíče propojují postup napříč jeho větvemi.
Obnovený a překreslený větvený příklad z původního obrázku gramm5. Klíče a odpovídající zámky jsou nově očíslovány podle pořadí postupu, aby vazby byly čitelné i bez barev. Klíče se nespotřebují; průchody jsou obousměrné. Nejde o strom přepisů, ale o strom průchodů mezi místnostmi. Přerušované šipky jsou jiné hrany: vyjadřují závislost zámku na klíči.
Výklad: ze startu jdeme horní větví pro K1. Vrátíme se a otevřeme spodní Z1; v jeho horní odbočce získáme K2. Vrátíme se do původní horní části a otevřeme Z2 pro K3. Opět se vrátíme dolů a otevřeme Z3 na cestě do cíle F. Zkratka pod diagramem uvádí jen pořadí důležitých událostí; vynechává chodby i návraty.
V autorovacích podkladech je celý souvislý průchod ověřen po jednotlivých hranách včetně podmínek zámků. Bez sběru klíčů je cíl nedostupný. V tomto modelu nevzniká softlock z utracení klíče, ale skutečný návrh musí navíc určit spotřebu, jednosměrné průchody, nepřátele a způsob komunikace nutných návratů hráči. Schéma není doklad vnitřního generátoru konkrétní hry.
Graf sám neurčuje rozměry, kolize, dohlednost ani podobu chodeb.
Po převodu znovu ověříme cestu k cíli: geometrie nesmí obejít zamýšlený zámek.
Obrazová sekvence z původních podkladů P03.
Zdroj: Dormans a Bakkes: Generating missions and spaces (2011)
Vracíme tři navazující obrázky g6, g7 a g8 z původní P03: od abstraktních vztahů přes uspořádání místností po prostorovou geometrii. V prvním obrázku S označuje start, T úkol, K klíč, L zámek a G cíl. Ve druhém r označuje místnost. Symboly nejsou stejnou abecedou jako naše předchozí školní Q/K/Z schéma.
Oddělení mission a space dokládají Dormans a Bakkes. Obrázky zde přebíráme z původních výukových assetů, nikoli jako nově licencovaná volná média; jejich samostatnou licenci nemáme doloženou. Nepřisuzujeme tyto konkrétní obrázky ověřené implementaci hry.
Na úrovni grafu může být klíč před zámkem, ale chybná geometrie dovolí dveře obejít nebo vytvoří neprůchozí mezeru. Ověřujeme tedy logiku i skutečný pohyb hráče. Pro modulární studentský projekt můžeme uzly převést na předem připravené bloky a propojit jejich kompatibilní vstupy. To propojuje gramatiky s předchozím doporučením střední cesty.
Zdroje: Dormans a Bakkes: Generating missions and spaces (2011)
Ověřte více seedů a hraniční případy. Jeden povedený obrázek nestačí.
Kapitola o hodnocení generátorů je zdrojem pro potřebu hodnotit výstupy a vlastnosti generátoru. Body na slajdu jsou náš stručný výukový checklist, ne přepis kompletní taxonomie.
Kombinujte automatické kontroly s prohlídkou a playtestem. Náhodně vytvořený obsah nemusí být platný, vyvážený ani zajímavý.
Všechny uvedené herní příklady se opírají o primární textové zdroje. Nevyvozujeme z nich nezveřejněné interní algoritmy. Přesnější rozsah je uveden u jednotlivých případů.
Webové zdroje ověřeny 11. 10. 2026. Odkazy vyžadují internet, samotná přednáška a modely ne.
Zdroje: Microsoft Learn: Simulation Distance, Render Distance, and Ticking Areas · Nintendo: rozhovor s Eiji Aonumou (2017) · Ludeon Studios: RimWorld · Egosoft: X4 Foundations, oficiální press kit · Nintendo: Super Mario Bros., elektronický manuál · Jiří Macháček: Magitech – Generátor dungeonů (ČVUT, 2022)
Doplňkově: Togelius, Shaker, Dormans: PCG in Games, kap. 5 pro řetězcové a grafové gramatiky. Odkaz je také přímo u příkladů. Referenční implementace Kena Perlina je v poznámkách u šumu. Původní P03 slouží jako historický obsahový podklad, nikoli jako doklad všech původních zobecnění.
Herní AI, simulace a PCG se mohou technicky dotýkat, ale v této přednášce odlišujeme jejich výukové otázky.
Zdroje: Togelius, Shaker, Nelson: PCG in Games, kap. 1 (2016) · Dormans a Bakkes: Generating missions and spaces (2011) · Shaker, Togelius, Nelson: PCG in Games, kap. 4 · Shaker, Smith, Yannakakis: PCG in Games, kap. 12 · Epic Games: Random Streams · Epic Games: World Partition · Godot: Pausing games and process mode · Ken Perlin: Improved Noise, referenční implementace · Togelius, Shaker, Dormans: PCG in Games, kap. 5
Příště rozvineme samostatné procesy: denní cyklus, rutiny a produkci.
Dialogy, charakterizaci a podrobné chování NPC probereme později.
Most k P04: dnes jsme definovali stav a spouštěče, v návaznosti rozvineme řetězce činností, produkci a cykly. Nevkládáme sem celý kurz dialogů ani celou teorii příběhu.
Tady končí přednáška. Následuje oddělený volitelný dodatek se zadáním, odkazem na pracovní list a testem. Lze jej použít na cvičení nebo pro samostatnou práci.
Volitelný dodatek · pro cvičení nebo samostatnou práci
Vyberte jednu oblast své hry nebo přístav z dnešního příkladu.
Pracovní list a kontrolní otázky
Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.
Tento dodatek patří až za celý výklad. Návrh na 8 minut: 4 min zápis, 2 min výměna s druhou dvojicí, 2 min hledání chybějícího pravidla. Na cviku lze prodloužit na 15–20 minut a přidat papírový test. Časy jsou odhad, ne ověření ve třídě.
Hodnotíme konkrétnost: je jasný stav, spouštěč, použitý čas, obnova a pozorovatelný výsledek? Nevyžadujeme NPC dialog ani kompletní ekonomiku. Zatím jde o lokální návrh týmu.
Navazující práce do projektu: přenést pravidlo jedné oblasti, přidat test odchodu, pauzy a obnovení a najít závislost, která může proces zablokovat. Tým může nahlas formulovat očekávaný výsledek hraničního testu.
Volitelný dodatek · ověření porozumění
Vyberte jednu odpověď. Vysvětlení se objeví po volbě.
Zkuste vysvětlit: proč není viditelnost totéž co simulace, proč seed nestačí jako save a proč vítězná cesta nevylučuje softlock.
Zdroj: Microsoft Learn: Simulation Distance, Render Distance, and Ticking Areas · Epic Games: World Partition · Epic Games: Random Streams · Ludeon Studios: RimWorld · Godot: Pausing games and process mode
Osm otázek má okamžité vysvětlení. Do skóre vstupuje první odpověď na danou otázku, pak se uzamkne. Předchozí otázky lze prohlédnout, nový pokus vynuluje celý test. Test se vztahuje k jádru přednášky, nikoli k volitelnému PCG. Patří až do dodatku po skončení výkladu nebo na cvičení.
Pro kratší ověření vyberte otázky 1, 3, 4 a 8 jako společné hlasování. Otázka o skladu se vztahuje jen k našemu explicitnímu modelu. Test bez osobních údajů nic neodesílá.
Zdroje: Microsoft Learn: Simulation Distance, Render Distance, and Ticking Areas · Epic Games: World Partition · Epic Games: Random Streams · Ludeon Studios: RimWorld · Godot: Pausing games and process mode