... merthogy már csináltam hasonlót.. De hatalmas a különbség a kettő között.
Igaz, a suliban kezdtem el, de nem volt rá elég az idő, hogy ott be is fejezzem, ezért gondoltam így esti levezető időtöltésként befejezem. Rémálom GUI-t tervezni, hogy mások is tudják használni a dolgokat... (Bezzeg a suliban egy funkció kivételével a scriptet átirkálva is tökéletesen működött már... :P )
A korábbi, ami
itt érhető el, az egy HTML5-ös bejárt, területet megjegyző, de ettől még új területet random generáló térképhez való megoldás volt. Amiben az volt a pláne, hogy a végtelenségig bármilyen irányba bővíthető a térkép (0-s koordináta alatt is).
Ez viszont nem (csak) működésben érdekes, hanem a dizájnja is nagyon szép. Sőt, igazából ez szinte csak grafika. Ugyanis ez tetszőlegesen testre szabható procedurálisan generált "terrain" (avagy annak textúrája, de heightmapként is használható, ha úgy van rá szükség) generáló, amihez
Perlin zajt használtam fel. Nem elég, hogy
– bár egyszerre csak kis szeletekben, de
– végtelen méretű terrain generálható vele (a
Perlin-féle módszernek köszönhetően), aminél az illesztések tökéletesen passzolnak, hanem semmi erőforrást nem igényel akármelyik koordináta megtekintése.
Lényegében mondhatjuk úgy, hogy bár pszeudo random generál egy 'seed' (kezdőérték) alapján domborzatot (de akár textúrákhoz is tökéletes, majd mutatok képet lejjebb), ezért akárhol le tudja az adott teret generálni. Az más kérdés, hogy egy nagyobb rész generálása nagyobb erőforrást igényel. (256x256 pixeles tér átlag ötszázad másodperc a laptopomon /ha be van lassulva, kéttizedig felmegy/, de pl. egy 1024x1024-es textúra már 2 másodperc (ami amúgy így sem sok), míg a 2048x2048-as textúra már közel 10 mp, nagyobbat meg csak egyet próbáltam, a dupláját, ki is akadt a gépem.. De jobb vas többet bír. Vagy kisebb darabokat elmentesz, arrébbmész a koordinátarendszeren, és a végén paintban egyberakod őket.. :P )
Ja, ahogy írtam - seed alapján generál, tehát
ha egy tér megtetszik, megosztható bárkivel, SŐT, konkrétan a Te beállításaiddal átküldhető, így terveztem meg.
Miközben ezt a bejegyzést írom, még nem vagyok kész, az utolsó simítás következik.
Már menüből teljesen alakítgatható az egész, mindössze a rétegződés infója nincs még figyelembe véve (ugyanis van benne magasságkoordináta, tehát a 2D megjelenítés ellenére térbeli a generált struktúra - nem csoda, az egész generáló kód alapja a ThreeJS egyik példafájljából van (ami meg 3D terrain) - én meg ugyanazt csak canvasra rajzolom ki (amit textúrának használ eredetileg a cucc), meg adok hozzá GUI-t.)
No,
kész is vagyok. Viszonylag. Íme a képek:
|
Első próbálkozás |
|
Az ötletadó mintájára |
|
Textúra is generálható |
Valószínűleg emiatt - ha lesz egy kis kedvem még majd holnap, meg pár percem a suliban - hozzácsapom a 3D megjelenítést is (mivel az már csak egy copy-paste), hogy az amúgy épp legenerált térképet körbe is lehessen forgatni gyönyörűen, csak úgy poénból..
Edit: (2018. jan. 05.)
Volt kedvem, hozzá is csaptam a 3D-t. Lehet az oldalon váltani köztük (a tetején). Print:
És mobilon is tökéletesen működik.
Egyébként az ötletet végső soron egy
weboldal adta, mikor egy
tök érdekes szakdolgozat olvasása után (informálódás, tanulás céljából) rátaláltam, és tetszett az elképzelés, meg a megvalósítás, csak én sajátot akartam, ami valamivel jobb is.
4096x4096-os térkép itt.