Generátor map

PHP Generátor map

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ží)

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 45x (35.57 kB)
Aplikace je včetně zdrojových kódů v jazyce PHP

 

  Aktivity (1)

Program pro vás napsal Pavol Hejný
Avatar
Autor se věnuje vývoji mnoha www aplikací - http://pavolhejny.cz/

Jak se ti líbí článek?
Celkem (5 hlasů) :
4.84.84.84.84.8


 



 

 

Komentáře

Avatar
Luboš Běhounek (Satik):

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  +5 4.5.2015 10:05
:)
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovědět  +1 4.5.2015 13:52
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Pavol Hejný
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Pavol Hejný:

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
http://pavolhejny.cz/
Avatar
Luboš Běhounek (Satik):

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  +1 5.5.2015 9:18
:)
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.