’Deferred is preferred’ tartja a népi bölcsesség.
Ez egy speckó renderelési módszer, a fényeket és árnyékokat utólag adja a látható képhez. Sok problémát meg lehet vele oldani, de sokkal lassabb, főleg egy régebbi dx9-es videókártyán. A régi módszer (forward rendering) 60-100 fps körül ment, ez az új 30 alá is mehet, attól függően, mennyi nagy fényforrás látható éppen. Mondjuk a 7300gs (64 bit) karim nem a legújabb, igazából a geforce 7-es szériájának teteje és azon felülire módosulhat ezzel a becélzott végfelhasználói csoport. Megtartottam a régi, egyszerűesített rajzolást is, csak ott egy fény van csak egyelőre, a nap, azon még dolgozni kéne, hogy így nézzen ki, de az a jövő zenéje. Annyit gyorsítottam a dolgon, hogy a napot egyből a g-buffer generáláskor kiszámolom egy negyedik bufferbe - első a szín, második a normálisok és csillivill-faktor, harmadik a z buffer. Ezzel spórolok egy full-screen-es directional-light rajzolást, ami talán megéri. Fényeket is hozzá lehet kötni tárgyakhoz, így jöhettek létre a himbálózó fények, amik nagyon fontosak, mert anélkül semmik vagyunk. (mondom én, aki 2 órát Minecraft-ol napi szinten :D)
Amúgy van diffúz point és spotlight, valamint textúrás-projekciós spotlight is, mert nem lehet játék rácsos textúrás HIMBÁLÓZÓ spotlight-ok nélkül. A vicces az, hogy a valóságban egy berácsozott lámpa fényében sosem lehet látni a rácsozatot, de ez nem valóság.
Csináltam vizet is, ritka hitvány egy valami lett, el is döntöttem, hogy lehet nem is foto realisztikus megjelenítés lesz. Mondjuk még egy fénytörés/visszaverődés félét csinálok rá (stalker doksi alapján: http://http.developer.nvidia.com/GPUGems3/gpugems3_ch19.html)
Csak még megjegyzem, hogy már a hang része is nagyjából készen van a játéknak, a szokásos wav fileok a 3d-s hangoknak, és .ogg a streamelt muzsikának. Én annyival még megfejeltem a dolgot, hogy a vorbisdll nem a hdd-ről nyomja a zenét, hanem betöltöttem az egész ogg filet ram-ba (3 megát kibírunk), és onnan megy. Hosszabb dialógusokat is lehetne .ogg-ban tárolni, csak nem nagyon akarok dialógusokat, hanem önfeledt szórakozást inkább, a többieknek meg ott a Kossuth Rádió. J
Apropó dialógusok, a ’szkriptrendszert’ is elkezdtem. A törzse már megvan, a legegyszerűbb módot választottam, amit windows-on lehet: minden pályának van egy dll-je, amiben van egy csomó függvény, amit az engine hívogathat, ha valami speciális történik. Pl a pályaszerkesztőben el lehet helyezni 3d-s dobozokat, aminek lehet egy neve. Ha a játékos belép ebbe a dobozba, a pályához betöltött dll-ből meghívja az azonos nevű függvényt. Az a függvény meg tehet, amit akar, leginkább döntéshozó- játéklogikai kódokat tartalmaz. A dll induláskor kap egy nagy struktúrát, amiben az összes olyan függvény pointere megvan, amin keresztül az engine-t elérheti. Első függvény volt, hogy lejátszhat egy hangot, ha a játékos bemegy a dobozba. Miért nem használok lua/python/as cumókat? Nem a sebesség miatt, hanem mert nincs rá szükség. Nincsenek illúzióim a játékkal kapcsolatban, nem lesz külön ember a szkriptelésre, én fogom azt is csinálni.
Itt a szokásos zagyva videó (hangja nincs.)