C# týden November Black Friday
Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
Pouze tento týden sleva až 80 % na e-learning týkající se C#

Generátor map

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Jednoduchá PHP aplikace, která slouží k vytvoření náhodného herního ostrova na základě zadaných parametrů.

Mapa ostrova se vykreslí jako PNG obrázek. Generátor funguje přímo na map.towns.cz .

Celý princip je opravdu velmi jednoduchý a je rozdělen do tří kroků. Vše jsem popsal přímo v kódů. Samotný generátor postupně vytvoří:

Ostrov (pobřeží)

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Ostrov se generuje pomocí náhodně kmitajícího bodu. Pozice bodu se na začátku náhodně vyberou. Jakmile bod narazí na okraj mapy, jeho pozice se vygeneruje znovu.

Ostrov

Řeky

U každé řeky je vybrán počáteční bod a směr. Poté se kreslí řeka, která náhodně mění směr. Až narazí na moře nebo okraj mapy, začne se generovat nová. Celý proces se několikrát opakuje. (záleží na parametru délka řek)

Řeky

Další terény:

Další terény se generují obdobně jako samotný ostrov. Mohou však narazit jak na moře, tak na řeku nebo další jiný terén.

Další terény

Dalšími terény jsou:

  • dlažba
  • sníh/led
  • písek
  • kamení
  • hlína
  • sůl
  • tráva(toxic)
  • les
  • řeka
  • tráva(jaro)
  • tráva(pozim)

Terény si může každý upravit / přepsat. Tyhle konkrétní používám ve své hře towns.cz

Po provedení těchto tří kroků se z pole vytvoří PNG obrázek s mapou.

Ve své hře mám nástroj, který umí na základě těchto mapových obrázků vytvořit ostrov pro skutečné hráče:

Velmi malý zkušební svět vygenerovaný z obrázku mapy.

Budu rád za jakékoliv nápady a postřehy. :-)


Galerie

Program byl vytvořen v roce 2015.

 

Stáhnout

Staženo 103x (35.57 kB)
Aplikace je včetně zdrojových kódů v jazyce PHP

 

 

Aktivity (1)

 

 

Komentáře

Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Luboš Běhounek Satik:4.5.2015 10:05

Ty řeky mi přijdou moc propletený, asi by bylo ideální je generovat na základě heightmapy - pro mapu mít heightmapu, pro řeku vygenerovat náhodný startovní bod a pak jen hledat okolní pixel s nejnižší výškou, dokud se nenarazí na vodu / konec mapy :)

Odpovědět
4.5.2015 10:05
https://www.facebook.com/peasantsandcastles/
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Luboš Běhounek Satik
Matúš Petrofčík:4.5.2015 13:52

a čo ak vzniknú jazerá? :D

Odpovědět
4.5.2015 13:52
obsah kocky = r^2 ... a preto vlak drnká
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Pavol Hejný
Autoredaktor
Avatar
Odpovídá na Luboš Běhounek Satik
Pavol Hejný:4.5.2015 18:26

Já jsem to chtěl udělat co nejjednodušší. Tohle je aplikace, kterou jsem udělal víceméně v roce 2008. Algoritmus, který mám opravdu ve hře přetváří mapu v reálném čase. A konkrétně generování nových řek nepracuje na výškách, ale na přitažlivosti / odpudivosti od různých terénů. Tzn. řeka vyjde z hor a postupně se stočí do moře. Přitom obtéká města, ale protéká lesy. A pokud např. proteče pouští, stane se z ní oáza.
Kdybych to sem ale všechno dal, bylo by místo jednoduché aplikace, kterou si může každý lehce měnit a hrát si s ní něco pekelně složitého...
(A taky jsem tě nechtěl kopírovat :) )

A jezera by vůbec nevadila - to by naopak bylo zajímavé.

Odpovědět
4.5.2015 18:26
/^(web )?(app )?developer$/
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Luboš Běhounek Satik:5.5.2015 9:18

Jezero by mohlo vzniknout, když řeka "doteče do místa, kde v okolí není žádný nižší bod, ale ještě nenarazila na vodu :)

Editováno 5.5.2015 9:18
Odpovědět
5.5.2015 9:18
https://www.facebook.com/peasantsandcastles/
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.