Web GL
2013-05
2013.V.31
A Metaadat szerkesztő
Jelenleg a játék megjelenítésére a program egy nagy textúrát használ. Ennek a mérete 2048 * 1024, vagyis 64 * 32 "mező"(tile). (A mező az az elem, amiből a térkép felépül, egy mező mérete 32 * 32 képkocka – emez konfigurálható.)
Maga a textúra egy png file, amit kb úgy lapátoltam össze egyelőre a netről összerabolt képelemekből. Csakhogy, ez a kép nem hordozza azokat az információkat, amik szükségesek ahhoz, hogy a játékban ezek a képelemek megfelelően működjenek. Mik is ezek az információk?
- A bejárhatóság (passability) azt fejezi ki, hogy az adott képelemen a szereplők átgázolhatnak-e, vagy sem. Például, a fű bejárható, de a víz nem. (Az RPG játékokban senki sem tud úszni.)
- Az magasság (elevation) az a mérőszám, hogy a képelem mennyire hajlamos takarni. Egy magasabban elhelyezkedő képelem takarhat egy olyan mozgó elemet is, amelyiknek az Y koordinátája nagyobb. A magasság formálisan egy 0-tól 5-ig terjedő szám (ugye, a fák nem nőnek az égig!), leegyszerűsítve azt fogalmazza meg, hogy az adott képelem takarási szempontból hány mezővel van lejjebb a képernyőn.
- Kitöltöttség (solidity): Különböző rajzolási optimalizációkat tesz lehetővé, ha eltárolom, hogy egy mező teljesen kitöltött-e, vagy vannak átlátszó részei.
Hogy ezeket ne kelljen kézzel csinálnom kockás papíron, és ne hülyüljek meg, csináltam egy primitív metaadat szerkesztőt. Az egész nagyon egyszerűen működik: A billentyűzeten "P", "E" vagy "S" gombokkal, vagy a felső gombsorral lehet váltogatni az üzemmódok között. Szerencsére a kitöltöttséget nem is kell kézzel megcsinálnom, nagyjából 30 sor kód kiszámolja nekem szépen. A többi az én feladatom, kitartó kattintgatást igényel.
Felül látható a bejárhatóság szerkesztő. A nyilak azt mutatják, hogy az adott mezőről milyen irányokba haladhat tovább a T. játékos. Érdemes megfigyelni, hogy a fák koronája bejárható (mögötte fog menni a szereplő, a később feltűnő magasság beállítás miatt), de a töve nem. A zöld fennsík bejárható, de nem minden irányban: a nyilakból látszik, hogy a játékos nem mehet le a szélén.
Íme a magasság beállítások. Látszik, hogy mik azok a részek, amik mögé a játékos berambózhat, és ott takarásban lesz.
Hát ennyit mára.
2013.V.21
Kóstoljátok meg a szerkesztőt!
A szerkesztő most már képes a térképeket egy-egy wikioldalba kimenteni, és onnan betölteni. Például itt a Maps/Wilderness1 oldal, amire rákattintva az oda lementett térképet lehet kipróbálni, illetve szerkeszteni.
Enjoy!
2013.V.15
Tömegnyomor a barlangban
Továbbfejlesztettem a térkép szerkesztőt: be lehet állítani az új térkép méretét, és a szerkesztés közben ki lehet próbálni a szerkesztés alatt álló pályát.
Így néz ki egy 50x50-es barlang pálya, amikor ugyanannyi emberke rohangál benne, mint az amúgy 128x128-as erdős pályán:
Gondoltam, megosztom veletek, mert viccesnek tűnt. :)
2013.V.13
További térkép generátorok
A tegnapi hegyeken felbuzdulva nekiláttam egy új térkép generátornak. Ez a korábbi erdős-mezős-vizes terep helyett egy kicsit nyomasztó színvilágú barlangot generál:
A barlang falain látható, hogy a tegnapi hegyrajzoló algoritmus építi fel a falakat.
Így néz ki egy teljes barlang térkép 10%-ra kicsinyítve:
A barlang kamrákat kialakító, sejtautomatán alapuló algoritmus mellékterméke egy másik generátor, ami nagyjából véletlenül jött létre; ez egy tagolt szigetvilágot készít:
2013.V.12
Hegyek és völgyek
Itt az ideje kicsit érdekesebbé tenni a terepet! Ennek az RPG-kben egy visszatérő módja a táj tagolása hegyekkel. Ugyanez a technika kell barlangok, szurdokok és ehhez hasonló területek kialakításához is.
A kiindulópont, mint a terep felépítésénél is, valamilyen grafikus minta, amiből a program darabokat vág ki, és azokból felépíti a játékot. Esetünkben ez a minta a következőképpen néz ki:
Világoskék vonallal jelöltem be, hogy hol vannak a mezők határai. Szóval ez az alapanyag. Ebből építünk hegyeket.
A hegyek úgy épülnek fel, hogy kijelölök a térképen úgynevezett fennsíkokat. A fennsík nem más, mint egy összefüggő füves terület, és egy magasság attribútum, ami azt fejezi ki, hogy hány mező magasan van az alföldhöz képest a fennsík. A fenti minta például megfelel egy 3x3-as fennsíknak, aminek a magassága 3 mező.
Rajzolásnál felhasználom a felső részt a fennsík körvonalazásához, és az alsó részt a fennsík alatt található mezők kitöltéséhez. Ezzel azt az érzetet keltem, hogy az adott terület magasabban helyezkedik el.
Ha több fennsík is található a térképen, akkor ezek megfelelő módon kell, hogy takarják egymást, például ha egy magasabb hegy található egy kicsit hátrébb, az takarhatja a lejjebb található, de alacsonyabb fennsíkot.
Külön figyelmet kell fordítani a fennsíkok felső, oldalsó, és alsó széleire. A nyugati határokhoz másik kitöltő mintát kell használni, mint a keleti határokhoz. Még bonyolultabb a fennsíkok felső szélei és a hegyoldalak alsó szélei, ezek ugyanis kombinálódnak a környéken található tereppel, vagy a takarásban levő másik fennsíkkal!
Lássuk hát az első próbálkozásom a fentiek megvalósítására:
Nem néz ki rosszul, de egyelőre hemzseg a hibáktól, lássuk nagyítva a hibákat típus szerint:
- Piros karika: Itt a fennsík felső széle rosszul kombinálódik: az alul található, elvben láthatatlan tereppel párosítja a program a környező hegy helyett! Ez elég bonyolult probléma, és elsőre még nincs fiz ötletem arra, hogy hogyan oldható meg legegyszerűbben.
- Narancs karika: Sarok elem hiányzik. Ez nem olyan vészes, de jobban fog kinézni, ha majd megcsinálom szépen. Nem bonyolult, van rá grafikai elem, csak még nem használom illendően.
- Kék karika: Ez szebben nézne ki, ha a fűszálak részben fednék a hegyoldal alját. Van erre grafikai elem, de egyelőre nem használja a program.
- Árnyék: Marha jól nézne ki, ha a hegyoldal keleti széle árnyékot vetne a tőle jobbra található mezőre!
Folytatása következik!
2013.V.10
Alakulgat a térkép szerkesző
Gondoltam, itt az ideje megosztani dicső veletek a térkép szerkesztőt!
Ez átmeneti jelleggel a következő címen lakozik: http://apocalypse.rulez.org/~upi/webgl/upigl/index.html?editor
Lehet benne:
- A térképet scrollozni a görgetősávokkal, vagy a középső gombbal.
- Zoomolni vagy az alul található műszerrel, vagy az egér görgővel.
- A terepet szerkeszteni.
- Fákat és bokrokat ültetni és kiszedni.
- Beállítani a terep mezőinek a bejárhatóságát (vagyis hova mehetnek a figurák).
Hát, egyelőre ennyi.
2013.V.09
Ha harc, hát legyen harc
Megkezdődött a játék fejlesztésének az a szakasza, ahol véget ér a béke!
A harci mód egyelőre, mint minden a játék összes többi eleme is, eléggé vázlatos. Összesen kétféle parancsból választhat a játékos: támadás vagy védekezés. Ezek közül a védekezés nem csinál az égvilágon semmit. :)
A támadás már izgalmasabb. Először is ki lehet választani, hogy ki legyen az áldozat. A választás után az aktív karakter odarongyol, nyom egy tockost, aztán szépen visszaballag a helyére. Vannak számítógép által irányított szereplők (NPC-k) is: ők véletlenszerűen választanak áldozatot a másik csoportból.
A harc körökre osztott: minden karakternek van egy harci sebessége, amit a képernyő alján egy csík jelez. Amikor a csík "megtelik", akkor léphet az adott szereplő.
Addig tart a csata, amíg az egyik csoport összes tagja el nem halálozik.
Implementációs szempontból úgy néz ki a történet, hogy megjelent az objektumok egy új osztálya, amit nemes egyszerűséggel Controller
-nek hívok. A Controller hivatott arra, hogy az akciót megjelenítse, és a játékos kattintgatását értelmezze. Az eddigi kód egy része átköltözött egy "OverworldController
" nevű objektumba, az új kód, ami pedig a bunyóért felel, egy "Battle
" nevű objektumban lakozik.
Mindkettőjük közös ismerőse a "Game
" objektum, ami azért felel, hogy a jelenleg aktív Controller
megfelelő tempóban üzemeljen és időnként rajzoljon.
Várható még további Controller
-ek megjelenése a kódban:
IntroController
: Ez lesz a játék bejelentkező képernyője, ami képes lesz a játékot betölteni, vagy új játékot indítani.GameOverController
: Amikor a főszereplő elhalálozott, ez fogja a játékost vígasztalni vagy kigúnyolni.InventoryController
: A játékos által eddig összeharácsolt anyagi javakban lehet majd itt gyönyörködni.- És még sokan mások.
2013.V.02
Na mizu?
Ki lehet próbálni: az erdő lakói most már hajlandóak szóba állni veled!
Ha rákattintasz valakire, akkor a főszereplő odabandukol hozzá (vagy esetleg hosszan kergeti), és utána megtudhatod, milyen mély mívű bölcsesség lakozik elméjében.
A kódot szerkezetileg eléggé átdolgoztam. A struktúra kb. a következő:
- Van egy Game objektum, ami csak adminisztratív feladatokat lát el, és mozgásban tartja az eseményeket.
- A Game objektum támaszkodik egy Kontroller objektumra. A Kontroller az, amelyik valamilyen folyamatát a játéknak szabályozza.
- Kontrollerből egyelőre kétféle van:
- Az "overworld" kontroller felelős az erdőben mászkálásért.
- A "dialog" kontroller végzi a párbeszédet (ami egyelőre csak egy kósza mondatból áll, de hát minden kezdet ilyen).
Próbáljátok ki szeretettel. 100 pontot ér, ha megtaláljátok a Ghostbusters referenciát! A véletlenszerűen generált nevek között is van néhány fura példány...
Apocalypse KÖZÖS
A jó hadvezér megnyerte a csatát mielőtt elkezdte volna. A rossz küzd a győzelem reményében.