← Zpět na přehledVHS · P03Úvod

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.

Návrat do stejné vesnice

Vyberu truhlu, odejdu na hodinu a vrátím se. Co najdu?

  • Je truhla znovu plná, nebo pořád prázdná?
  • Vyrobil sklad další zboží?
  • Může mě obchodník přivítat jinak?
Co musíme znát před odpovědí?
Rozsah paměti, pravidla vývoje, použitý čas a způsob návratu.

Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.

Čtyři otázky návrhu světa

  • Co je stav a co si svět pamatuje?
  • Co změnu spouští: hráč, čas, jiné entity?
  • Co se počítá mimo aktivní oblast?
  • Jak změnu hráč pozná a jak ji otestujeme?

Na konci dokážete popsat chování jedné oblasti v mini-GDD.

Paměť a samostatný vývoj

Bez vývoje mimo oblastVý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.

Původní názvy a přesnější otázky

Původní označeníCo nyní zkoumáme
TimelessKdy se lokální změny zahodí nebo obnoví?
Causal / Player-inducedJaké následky má hráčova akce a jak daleko zasáhnou?
Evolving / IndependentCo spouští změnu bez přímé hráčovy akce?

Používáme vlastnosti systémů místo historického žebříčku her.

Vidět, počítat a uchovat

OtázkaPříklad
VykreslováníVidím objekt na obrazovce?
Aktivní výpočetAktualizuje se jeho pohyb, výroba nebo chování?
Uchování stavuExistuje 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

Stav jedné oblasti

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.

Akce a přechod stavu

Před akcíPodmínka a událostPo 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.

Pokus: odejít a vrátit se

Hráčv oblasti
Truhlaplná
Inventář0 mincí
Sklad3 / 9

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.

Reset jako návrhové rozhodnutí

  • Nový pokus může obnovit překážky a zdroje.
  • Checkpoint může obnovit jen část stavu.
  • Opakovaná odměna může být záměr nebo exploit.
  • Hráč potřebuje poznat, co restart skutečně obnoví.

Reset oblasti a reset hráčova inventáře popište zvlášť.

Životnost změny

RozsahOtázka v GDD
Aktuální návštěvaPřežije změna opuštění místnosti?
Úroveň / pokusPřežije smrt a checkpoint?
Uložená kampaňPřežije zavření a načtení hry?
Sdílený světVidí stejný stav i ostatní hráči?

„Trvalé“ vždy potřebuje doplnit: v jakém rozsahu?

Ani klasická hra nemá nulový stav

Super Mario Bros.

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.

Diablo

Procedurální obsah a změny během hraní mohou existovat společně.

Diablo: hráč v kamenném dungeonu
Diablo (1996), Blizzard. Snímek z původní P03.

Zdroj: Nintendo: Super Mario Bros., elektronický manuál · Togelius, Shaker, Nelson: PCG in Games, kap. 1 (2016)

Dosah hráčovy změny

ZměnaDosah v našem návrhu
Otevřená truhlaJeden objekt v jedné oblasti.
Opravený mostZměna dostupných cest.
Doručená zásilkaÚkol a nabídka obchodníka.
Podpora frakceGlobá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.

Které hodiny používáme?

Herní čas
Den může trvat několik skutečných minut.
Skutečný čas
Čas zařízení nebo serveru, případně běh mezi návštěvami.
Čas aktivní oblasti
Pokračuje jen při aktualizaci této oblasti.
Čas konkrétního úkolu
Spustí se podmínkou, může mít vlastní pravidla pauzy.

U lhůty musí být jasný start, rychlost, pauza a konec.

Akce jiných entit

PodnětMožná reakce v našem modelu
Hlad obchodníkaPřeruší práci a jde jíst.
Otevření trhuVyrazí ke stánku.
Chybějící vstupVýroba se zastaví.
Hráč zablokoval cestuZvolí 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.

Bez hráče může znamenat pět věcí

  • Hráč nedává vstup.
  • Avatar se dívá jinam.
  • Avatar odešel z oblasti.
  • Hra je pozastavená.
  • Klient nebo celý program je vypnutý.

Každá situace může mít jiné pravidlo. Běžící server není vypnutý svět.

Zdroj: Godot: Pausing games and process mode

Minecraft Bedrock: dvě vzdálenosti

Render distanceSimulation 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

Pokus: výroba mimo oblast

Sklad má 3 kusy. Vyrábí 2 kusy za herní minutu, kapacita je 20. Vstupů je dost, spotřeba žádná.

PolitikaSklad po návratuAktualizace modelu
Zmrazení3 / 200
Krok po minutě13 / 205
Dopočet při návratu13 / 201

Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.

RimWorld: simulace a výběr událostí

Postavy

Potřeby, zranění a vztahy ovlivňují reakce kolonistů.

Storyteller

Ří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

Zelda: kombinace pravidel

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.

Zdroj: Nintendo: rozhovor s Eiji Aonumou (2017)

Skript, systém a dramaturgie

NástrojK čemu jej použijeme
Skriptovaná událostDůležitá situace má určené podmínky a výsledek.
Systémová pravidlaVí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)

Změna musí být čitelná

  • Viditelný důsledek: most je opravený, sklad plnější.
  • Dohledatelná příčina: zpráva, stopa, stav úkolu.
  • Srozumitelný časový tlak a možnost reakce.
  • Ochrana důležitého obsahu, pokud to odpovídá návrhu.

Náhodná ztráta úkolu může působit jako chyba, i když simulace funguje.

Podrobnost podle potřeby

Způsob výpočtuMož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četObnova 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.

Streaming není pravidlo zapomínání

World Partition v Unreal Engine načítá a uvolňuje buňky kolem streaming sources, například hráče.

  • Technická hranice určuje, co je právě načtené.
  • Návrh hry určuje, které změny mají přežít.
  • Stabilní ID spojí obnovený objekt s jeho uloženým stavem.

Odchod z oblasti nesmí nechtěně vynulovat splněný úkol.

Zdroj: Epic Games: World Partition

Co musí obsahovat uložená hra

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

Pokus: stejný seed

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

Pokus: chyba při načtení

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.

Zámek nemusí být dveře

ZámekKlíč v návrhu
Zamčené dveřePředmět nebo oprávnění.
PropastSchopnost pohybu, most nebo jiná cesta.
Neznámý postupZnalost hráče.
Zakázaný průchodStav ú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)

Logický postup a fyzický prostor

Logika úkolu

  • Co musí hráč získat?
  • Co tím zpřístupní?
  • Kde může volit jinou cestu?

Prostor

  • Kde jsou místnosti?
  • Jak se propojí?
  • Jak hráč pozná cestu a překážku?

Pěkný půdorys ještě nezaručuje splnitelný postup.

Zdroj: Dormans a Bakkes: Generating missions and spaces (2011)

Pokus: dostupnost cíle a softlock

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.

Závislosti zdrojů

Surovina → výroba → zboží → prodej → prostředky na další provoz

  • Co se stane, když chybí vstup nebo odběratel?
  • Lze zdroj úplně vyčerpat?
  • Může jedna změna zastavit celý řetězec?

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.

X4: ekonomika přesahuje kokpit

  • NPC lodě a stanice obchodují.
  • Výrobní řetězce propojují suroviny a další zboží.
  • Nabídka a poptávka se promítají do cen.

Pozorovaná scéna je jen část ekonomických vztahů světa.

Z oficiálního popisu nevyvozujeme stejně detailní fyziku všech sektorů.

Zdroj: Egosoft: X4 Foundations, oficiální press kit

Příklad zápisu: pravidlo skladu

PoložkaNáš návrh
StavZásoba 3, kapacita 20, dostatek vstupů.
Vývoj2 kusy za celou herní minutu, do kapacity.
Mimo oblastDopočet při návratu, při pauze čas stojí.
UloženíZásoba a poslední herní minuta aktualizace.
TestPo 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.

Kontrolní otázky pro váš svět

  • Co přetrvá po odchodu a co po restartu?
  • Co mění hráč a co běží samostatně?
  • Jaký čas a jakou podrobnost používáme?
  • Může se hráč zablokovat nebo dostat odměnu dvakrát?
  • Jak ověříme návrat a změnu vysvětlíme hráči?

Výsledkem je popsané a otestovatelné chování oblasti.

Procedurální generování

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 obsahuPrůběh světa
Ruční návrh nebo generátor.Reset, paměť, čas a interakce.

Co patří do PCG

Procedurální generování obsahu vytváří herní obsah algoritmicky, s omezeným nebo nepřímým vstupem člověka.

  • Úrovně, předměty, pravidla a příběhy.
  • Také textury, hudba a další obsah.

Dopad na hratelnost není obecně uznávanou hranicí mezi PG a PCG.

Zdroj: Togelius, Shaker, Nelson: PCG in Games, kap. 1 (2016)

Modulární generování: střední cesta

Ve studentských pracích se osvědčuje skládat prostředí z předem připravených bloků.

Ruční návrhGenerá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.

Magitech: mřížka hotových dlaždic

Studentská hra z VHS. Navazující bakalářská práce: Jiří Macháček, 2022.

  • Ručně připravené čtvercové dlaždice tvoří tileset.
  • Agenti vytvářejí rozložení dlaždic v 2D mřížce.
  • Podle sousedů generátor vybere tvar s potřebnými cestami.

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)

Náhodná čísla, šum a gramatika

NástrojTypická úloha
Generátor náhodných číselVýběr z možností nebo parametrů.
Šumové poleProstorově související hodnoty, například výšky terénu.
GramatikaPř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

Gramatika potřebuje kontrolu

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.

Zdroj: Togelius, Shaker, Dormans: PCG in Games, kap. 5

Přepis krok za krokem

Jedna konkrétní derivace

  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

Další platné výsledky

  • 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.

Délka a rytmus úrovně

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 p
  • Kostra drží pořadí důležitých momentů.
  • B obměňuje jednotlivé překážkové úseky.
  • Rozpočet přepisů nebo hloubky omezí velikost; na hranici použijeme B → c.

Tři úseky B nejsou tři místnosti ani horní mez délky.

Zdroj: Togelius, Shaker, Dormans: PCG in Games, kap. 5

Strom přepisů ještě není mapa

Strom přepisů pro k-c-z-c-pLevel má děti B a p. B se rozvine na k, B, z, B. Obě zbývající B se přepíší na c. Listy zleva doprava jsou k, c, z, c, p. Nejde o mapu místností.LevelBkBczBcp
Listy zleva doprava: 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.

Grafový přepis: přidáme odbočku

Dva přepisy grafu: odbočka a klíč před zámkemNahoře se cesta 1:Q–2:Q–3:Q mění na rozcestí v 1:Q s větvemi do 2:Q a 3:Q. Dole se cesta 2:Q–1:Q mění na rozcestí v 2:Q: jedna větev vede ke klíči 3:K, druhá přes jeho zámek 4:Z do 1:Q. Plné čáry jsou obousměrné průchody; přerušovaná šipka označuje odemykání.1:Q2:Q3:Q⇒1:Q2:Q3:Q2:Q1:Q⇒2:Q3:K4:Z1:Q
Q = místnost · K = klíč · Z = zámek. Plná čára = průchod; přerušovaná šipka = odemykání.

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í.

Zdroj: Togelius, Shaker, Dormans: PCG in Games, kap. 5

Větvený strom: tři klíče a návraty

Větvená úroveň se třemi navazujícími klíči a zámkyZ původní P03, s novým očíslováním klíčů. Cesty tvoří obousměrný strom. Z horní odbočky získáme K1 pro spodní zámek Z1. Ve spodní části získáme K2 pro horní zámek Z2. Za Z2 je K3 pro spodní závěrečný zámek Z3. Za Z3 je cíl F. Přerušované šipky ukazují závislosti, nikoli chodby.SQQQZ2QK3K1Z1QQQK2Z3QF
S = start · Q = místnost · F = cíl. Plné čáry = průchody; přerušované šipky = odemykání.

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.

Od grafu k hratelnému prostoru

Původní P03: abstraktní graf úkolů s klíči, zámky a cílem
1. Logika a závislosti
Původní P03: úkoly rozmístěné do propojených místností
2. Místnosti a spojení
Původní P03: prostor s obrysy stěn a dveřmi
3. Geometrie a dveře

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)

Hodnocení generátoru

  • Platnost: lze obsah používat a dokončit?
  • Rozmanitost: mění se skutečně relevantní vlastnosti?
  • Ovládání: umí návrhář zadat žádoucí omezení?
  • Zážitek: funguje výsledek pro zamýšlené hráče?

Ověřte více seedů a hraniční případy. Jeden povedený obrázek nestačí.

Zdroj: Shaker, Smith, Yannakakis: PCG in Games, kap. 12

Zdroje: herní příklady

Zdroje: pojmy a technické příklady

Návaznost: cykly činností a NPC

Příště rozvineme samostatné procesy: denní cyklus, rutiny a produkci.

  • Cykly činností a jejich přerušení.
  • Produkce, spotřeba a závislosti.
  • Rutiny NPC a jejich reakce na stav světa.

Dialogy, charakterizaci a podrobné chování NPC probereme později.

Návrhový úkol ve dvojici

Volitelný dodatek · pro cvičení nebo samostatnou práci

Vyberte jednu oblast své hry nebo přístav z dnešního příkladu.

  • Zapište tři stavy, jednu hráčovu akci a jeden samostatný proces.
  • Určete odchod, pauzu, uložení a návrat.
  • Navrhněte dvě ověřovací situace, včetně nepříjemné hranice.

Pracovní list a kontrolní otázky

Školní model a naše návrhové volby, ne údaj o interním fungování konkrétní hry.

Aktivní test

Volitelný dodatek · ověření porozumění

Otázka 1 / 80 správně / 0 odpovědí

Objekt není vidět. Co z toho bezpečně vyplývá?

Vyberte jednu odpověď. Vysvětlení se objeví po volbě.

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

Obsah přednášky

Poznámky