V posledních dnech jsem se trochu zajímal o generování herního světa ve hrách, jako je například populární Minecraft. Není žádným tajemstvím, že tyto hry používají pro generování svých světů náhodné šumy, nejznámější je určitě Perlinův šum. Sám jsem o této problematice nic nevěděl, ale ve výsledku je to velice implementačně velice jednoduchá záležitost (optimalizačně je to trochu složitější). Pojďmě se proto podívat na to, co to je Perlinův šum, jaké má výhody při generování herních světů a na algoritmus, jak si takový šum naimplementovat.
Štítek: algoritmus
[Seriál] Generujeme herní úrovně, 4. díl
Když jeden z mých kamarádů viděl generátor z posledního dílu, poznamenal: „Jako dobrý, ale je to hrozně předvídatelný, jak to vždycky jde dolů“. Přestože jde o generátor původem pro plošinkovku a směr „dolů“ je poměrně logický, řekl jsem si, že by nebylo na škodu si s generátorem ještě trochu pohrát a pokusit se přijít s něčím, co by bylo pro změnu vhodné do nějaké střílečky. A při vymýšlení postupu jsem se propracoval i k takovým chuťovkám, jako je třeba algoritmus RED pro balancování zátěže na síťových přepínačích.
[Seriál] Generujeme herní úrovně, 3. díl
Znáte hru Spelunky? Jde o celkem populární 2D roguelike plošinovku a jako každá správná plošinovka, i tahle má procedurálně generované úrovně. Na rozdíl od jiných, podstatně nahodilejších roguelike her, je poměrně dost obsahu Spelunky tvořeno ručně a naroubováno na náhodný generátor. Je to realizováno skrze blueprinty, pečlivě vytvořené návrhy, které generátoru říkají, jak mají vypadat celé sekce úrovně a generátor pak úroveň seskládá z těchto blueprintů. Jak? To popíšu v dnešním článku.
[Seriál] Generujeme herní úrovně, 2. díl
V předchozím dílu jsem předvedl jednoduchý algoritmus pro vytváření náhodně generovaných bludišť. Dnešní díl předvede, jakým způsobem se tento algoritmus dá upravit, aby generoval uzavřené místnosti, propojené mezi sebou dveřmi takovým způsobem, aby bylo možné se do každé místnosti dostat.
Kostra grafu – algoritmus
Jako doplňkový článek k seriálu o generování videoherních úrovní si dovolím uvést algoritmus pro hledání kostry grafu. Ten se může občas hodit, pokud nechceme, aby v naší úrovni existovaly smyčky – hráč by mohl chudák chodit pořád dokola. Najití kostry grafu (a následné přizpůsobení úrovně) zajistí, že hráč bude mít k dispozici odbočky, ale do cíle bude existovat právě jedna cesta.
[Seriál] Generujeme herní úrovně, 1. díl
Napadlo mě, že by mohlo být zajímavé udělat seriál o různých algoritmech, které můžete použít ve svých hrách pro generování úrovní. Pochopitelně nejlepší hry používají velice specifické algoritmy, často na míru dělané, trocha inspirace ale nikdy neuškodí. Všechny mapy jsou „tile-based“, což znamená, že jsou tvořeny čtverci (přesněji řečeno obdélníky). Zajímá vás to? Čtěte dál!