A következő projekt egyik nagy fejlesztése a címben is szereplő különböző típusú varázslatok lesznek. Azonban ahhoz, hogy mindez el tudjon készülni számos apróbb részletet kellet kidolgozni az engine-ben:
- billboard render
- volumetric line render
- a fentebbi két típusú renderelés optimalizálása batcheléssel
- eltérő sebességű lövedékek kezelése
Ezek közül a legfontosabb az utolsó: bármekkora sebességű lövedék pontos kezelését teszi lehetővé, az azonnal becsapódó / lézer stílusú lövedéktől a sokkal lassabban mozgó rakétáig.
A lövedékhez szorosan kapcsolódik még az az újítás, hogy a shapeknél minden fegyverhez külön lehet beállítani a sebzési faktor ill. hogy a lövedék visszapattanjon-e a shape felületéről.
Miután a lövedékek fontos szerepet játszanak a legtöbb akciójátékban, ezért az ellenük való védekezés is hangsúlyos összetevője azoknak. A pajzsok gyakorlatilag egyszerű tárgyak, amelyek shape / shapejei-nek sebzési faktorai a pajzs funkciójának megfelelően vannak beállítva. Ezenkívül a pajzs mérete is fontos tényező. Pl. a szimpla fapajzs kis méretű és sebzési faktorai magasak, míg egy harci pajzs nagy méretű, anyaga fém jellegű, sebzési faktorai alacsonyak és akár bizonyos lövedéket / varázslatot vissza is verhet, mint például a villámot.
Ennek engine oldali megvalósítása a felvett és kézben lévő tárgy a lövedékekkel történő interakciójának megoldása. Ehhez azonban már nem elégséges a Bullet saját ütközési csoportjainak használata (collision group), hanem teljes mértékben sajátot kell használni. És ha már itt tartottam frissítettem a Bulletet 2.8.2-re ill. a Recast libraryt is.
A lövedékek továbbgondolása a varázslatok voltak, amiből már el is készült a villámlás, tűzgolyó ill. "méreg". A lista feltehetően még bővülni fog a következő demóig.
Ha pedig varázslatról van szó, akkor nem maradhatnak ki az italok sem. Míg az előző demóban terminálnál lehetett gyógyulni itt egyelőre csak italoktól. Ezenkívül lesznek egyéb mágikus tárgyak is, amelyek támadásunk avagy védekezésünk erejét növeli. Ezek az engine oldalon, mint scriptek jelentkeznek: lefuthat script amikor felveszünk ill. eldobunk egy tárgyat és persze akkor is amikor használjuk azt.
A végén pedig jöjjenek egyéb változások:
- meshek vágása CSG algoritmussal, amit a szerkesztő használ pályakészítésre
- a főhős megsebzését és annak intenzitását változó méretű piros keret jelzi
- játék mentésénél screenshotot is mentünk amit betöltéskor megjelenítünk
- opcionális külső konfig file
és észrevételek:
- g++ néha furcsán castol floatot integerre legalábbis nem ugyanúgy fut le a kód, mint MSVC esetén
- sajnos elég hamar előjött a RGBE tárolás hátránya: a hagyományos textúraszűrés nem mindig alkalmas ennek a tárolási mód kezelésére. Ennek megoldására javasolt a GL_EXT_texture_shared_exponent.
és a legvégén egy kép a villámról a Grypania demóban tesztelve: