Developer blog / Game Development

Már 3 éve annak, hogy utoljára jelentkeztem a Codename Z-vel kapcsolatban. Még 2013. márciusában raktam ki a legutolsó állapotát a játéknak, amit le is lehetett tölteni, és utána úgy tűnhetett, hogy ennyi volt, vége, nem lesz már belőle semmi, vaporware lett... de nem! Tény, hogy nem foglalkoztam vele évekig, mert az egyetemen bejött a szakirány és a féléves programokat írtam, meg a szakdolgozat projektet, vagy ha pedig épp nem azt, akkor arduino-ra fejlesztettem és ez gyakorlatilag felemésztette minden időmet, de ennek most vége, az egyetemmel kész vagyok, így a hozzátartozó projektekkel is, és most az elmúlt 2 hónapban szinte nonstop a Codename Z fejlesztésével voltam elfoglalva.

Az eddigi fontosabb újdonságok:

  • Lua script rendszer, amellyel bármilyen komplex működést le lehet kódolni a pályáknak.
  • Mentés, ezzel egyúttal megoldottá vált, hogy át lehessen járni pályák között, és vissza is lehessen térni régi helyekre. (A Lua kódot is menti, majd onnan folytatja)
  • Brutális render optimalizáció, modern Intel processzorokon 40-90 frame/sec-el is elfut (és ez még nem a vége!).
  • Teljes joystic támogatás, lehet gamepad-al is játszani, ha valakinek ez a szíve vágya.
  • A falak rajzolása teljesen újra lett gondolva, a szerkesztőn belül voxelenként megrajzolhatóak az egyes csempék.

...na meg hát nagyjából a fél programot újraírtam, csak azok semmi említésre méltó újdonságot nem hoztak be, de a jövőbeli frissítéseket megalapozták. Inkább ezekkel ment el az idő java része, úgyhogy ezért tűnhet még úgy, hogy nincs olyan sok újdonság.

Ez egyelőre még az alpha verzió, de közeleg a béta, aminél már publikálni fogom a pályatervezőt is. Az lenne az ötlet, hogy bárki tudjon pályákat csinálni hozzá és remekül moddolható legyen. Az alap sztory kampányra is ez az elképzelésem, hogy alapvetően outsource-olom minél több embernek a pályák elkészítésének a feladatát, így azok igazán változatosak és kreatívak lesznek (elvégre ezen áll vagy bukik az egész, nem az engine-en).

Na és a lényeg, egy kis demó!

Érdkességnek pedig egy példa, hogy a fenti videón látható rész hogyan is néz ki a pályatervezőből:

CodenameZ editor minta

Még 2011 őszében kezdtem el foglalkozni az Unreal Development Kit-tel, aztán ehelyett kezdtem bele a Codename Z fejlesztésébe. Alapvetően az nem tetszett benne, hogy túlzottan egy adott feladatra van kiélezve, és az én egyéni igényeimre nehéz lett volna átprogramozni (ugye a bontható voxel pálya, plusz itt erősen limitált a felhasználható dinamikus fények száma is), meg hát ilyen erős motor mellé ütős grafika is járna, én meg nem vagyok grafikus. Pixelgrafikával még el-el vagyok, de inkább maradok elsősorban a programozásnál.

Mindettől függetlenül azért végigmentem anno egy videó kurzuson, amiben az UDK alapjait elsajátítottam és összedobtam a teszt pályák mellett egy olyat is, amiben van feladat, illetve van eleje és vége. Hogy ne vesszen teljesen kárba a vele töltött idő, ez most összeraktam egy videóba. (a hóesésre vagyok külön büszke, mert az nem preset cucc :P)

Miután sok évnyi keresés után végre találtam egy programot, amivel szoftver-renderelt játékból is tudok 30fps-el videót felvenni, végre elkészülhetett életem első Gameplay Trailer-e! Az első szerencsés játék a „Codename Z: Alpha Labs Sector A” lett. A jelenlegi palettáról még talán az „Incomplete Operation”-nek csinálok majd egyet, a többihez nem érdemes, viszont jönnek majd az új játékok, amik sokkal háromdésebbek lesznek mint eddig bármi. ;)

A trailer a játékkal együtt az alábbi linken megtekinthető:
http://vbstudio.hu/games/codenamez-alpha_labs_sector_a

Elérkezett hát a várva várt pillanat, publikálásra került a Codename Z első alfája.

Tech Demo

Mint azt már korábban írtam, az AI kimarad ebből a verzióból, viszont helyette összeraktam egy érdekesnek bizonyuló kis pályát, tele apró meglepetésekkel. Cél az nincs, csupán a felfedezés. Na de lássuk csak mit is lehet csinálni: rögtön az elején teljes fegyverarzenállal indulunk, ezek között a szám gombokkal vagy az egérgörgővel váltogathatunk. Ajtókat az E gombbal nyithatjuk ki, F gombra bekapcsol az elemlámpa, N gombra pedig az éjjellátó.

A rakétavetővel és az overkiller-el, atomjaira bonthatjuk az egész pályát, meg az ellenfeleket is, a Beam Gun-nal vaporizálhatjuk őket és bónusz feature a gomba. Igen, gomba. Van egy pár elrejtve a pályán, és meg lehet őket enni. A hatás nem marad el :D

Ha kifogytunk a lőszerből, csalhatunk is. Hozzuk elő a konzolt az F1 gombbal és oda írjuk be, hogy "giveall", aztán enter. Ez a birtokunkba juttatja az összes fegyvert (ha esetleg nem lenne meg, bár itt alapból megvannak) és teljes lőszermennyiséget ad mindhez.

Többet nem is mondanék, a képek mindent elmondanak, maga a játék meg méginkább. Innen letöltheted:
http://vbstudio.hu/games/codenamez-alpha_labs_sector_a
Jó szórakozást ;-)

...de nem az, amire gondoltok, még nem. Ez most egy tavalyi verzió, amit véletlenül most túrtam elő és úgy éreztem, hogy nem merülhet feledésbe. Ez egész pontosan a Haladó Programozás órára készített verzió, amiben még felülnézet van és a régi Incomplete Operation-ös pályával, de tele rengeteg advanced cuccal. Olyanok mint: spéci dinamikus fénykezelés, menürendszer, normálisan megrajzolt szereplők, látványosan bontható falak, rakétavető, shotgun, éjjellátó (N), szonár (M).

A játékot letölthetitek innen: http://vbstudio.hu/games/codenamez-ioap

A mostani alpha verzió is jön, már majdnem kész vagyok vele. Az AI az nem nagyon működik benne, de most nem is fogok már nekilátni megcsinálni, hanem gyorsan publikálom így ahogy van, ugyanis több radikálist változtatást is készülök végrehajtani, amik miatt legközelebb max nyáron lehet belőle normális verzió.

Lassan már érik egy tech-demo, de most már egy rendes, nem olyan, amiből gyorsan egy „mondjuk hogy kész” játékot faragok, és kihagyok egy csomó klassz funkciót a sztory meg a játékmenet miatt. A pálya rombolhatóságát és a dinamikus fényeket még eddig nem igazán mutattam be, úgyhogy a hangsúly főleg ezen a részén lesz.

bird's view

Legújabb feature a kamera mozgásának immár fokozott szabadsága. Már tud mozogni függőlegesen is, ezáltal bármilyen magasságú lehet a főhős, továbbá megoldhatóvá vált a „head bobbing” is (ez utóbbit ki lehet majd kapcsolni :D).

Ahogy a képen látható, a nézés iránya is változtatható, bár ez a rész csalás. A trükk az, hogy a horizont került arréb. Képzeljünk el két monitort egymáson, a horizont a kettő között lesz. Ha csak az alsó monitort nézzük, akkor olyan, mintha lefelé néznénk, mert a horizont alatti részt látjuk csak, pedig valójában a kamera továbbra is egyenesen néz. Ezt a technikát alkalmazták több hasonló elvű régi játékban is, mint pl. a Duke Nukem 3D-ben. Bár hogy lesznek-e ennyire madártávlati jelenetek, az azon fog múlni, hogy meg tudom-e oldani, hogy a menyezet egyes nyílásain betekintve is renderelje a falakat, mert ez egy kicsit bonyolítja a procedúrát. Ami viszont mindenképp lesz, az a padló és plafon közti mozgás.

Vaporizer gunNekiláttam és implementáltam egy részecskegyorsító... izé... részecske motort a játékba és most mindenből részecskék folynak.

Részecske, avagy hivatalos nevén Particle, róluk azt kell tudni, hogy olyanok, mint egy sprite, csak ezeknek nincs textúrája, egyszínű az egész és a mérete sem fix, többnyire picikék. Ilyen részecskékből előállítható rengeteg minden: törmelék, vér, víz, füst, hamu, tűz, lövedéknyomvonal, szikrák... gyakorlatilag bármi, ami apró kis színes pontokból kirakható és természetesen különféle fajta részecskéknek eltérő lehet a viselkedésük is. A dolog még cifrázható is azzal, hogy lehet átlátszó, vagy additív blending-el is kirajzolni őket. Utóbbi kiváló pl. lézerfegyver nyalábjához (a képen pont nem azzal van, az csak simán átlátszó, majd kijavítom).

Jelenleg még csak kezdem felfedezni a benne rejlő potenciált, a mai remekmű a baloldalt látható hamvadás animácó, ami a 2D sprite-ot alakítja 3D-s particle hamufelhővé, megtartva az eredeti pixelek színét (ha nem is sokáig). A terv az, hogy rengeteg ilyen cucc lesz és ha nem esek túlzásokba a mennyiséggel, akkor elég korrektül fogja vinni bármelyik átlagos CPU. (Csak várjátok ki míg berakom a multi-thread támogatást is :D)

Másik nagy újítás az, ahogyan a falak lebomlanak: amikor egy darabot kilövünk a falból, annak a helyét feltölti ilyenekkel, és aztán repülnek a szélrózsa minden irányába, pattogva, miközben folyamatosan rajzolódnak át a padlóra, - mint ahogy az a hamunál is látszik - így miután eltűntek, utána is örökre megmarad a nyomuk. Jó lesz majd így a végleges játékban visszatérni egy korábbi csatatérre és végignézni a pusztításunk nyomait :D