Developer blog / 2012

Boldog Karácsonyt Minden Kedves Látogatónak! :)

Amikor elhatároztam, hogy Karácsonyra összehozok egy játékot, nem is sejtettem hogy mit vállalok el :D Határidőre dolgozni nem a legjobb, főleg amikor az utolsó napon kerülnek elő hibák. Nem is beszélve a misztikus hibákról, amik csak bizonyos rendszereken jönnek elő.

Codename: Xmas

Codename: Xmas (klikk ide a játékhoz)

Ha már a Codename Z motorjára írtam, ragaszkodtam hozzá hogy valamelyest utaljon rá a neve. Az utóbbi időben kizárólag a 3D résszel foglalkoztam, nem is csoda, hisz a 3D világ sokkal érdekesebb kihívásokat tartogat és az eredmény is látványosabb. Ami jelentős fejlődés a legutóbbi verzióhoz képest, az a skybox, illetve hogy a padló is lehet átlátszó, olyan hatással, mintha üveglapon járnánk (ez a funkció nem látható a karácsonyi kiadásban). Ezekből a lehetőségekből remek űrbéli pályákat lehet csinálni.

További újítás, hogy már a képarány se fixen 4:3-as. Kivéve a felülnézetes módnál, azon okból, hogy szélesvásznú képnél zavaró, hogy oldalirányban messzebre látunk, mig fölfelé meg lefelé alig. A 3D módban választható lesz, épp úgy, ahogy most is a beállítások menüben.

Ennyi update jelentés elég lesz mára, mindenki menjen ajándékot bontani :-)

Egyetem mellett nehezen jut időm másra, de mivel ez részben a beadandó feladatom is (megint), ezért lassan de biztosan haladok tovább a játékkal. A Codename Z: Incomplete Operation mint a neve is utal rá: félkész. Most ezt a régi engine-t fejlesztem tovább, azóta kerültek bele a dinamikus fényekhez dinamikus árnyékok is, rengeteg optimalizáción esett át, kapott komplett menürendszert is.

Mogyorós Márton kolléga jóvoltából lesznek új ellenfelek és jó sok tereptárgy, statikus és interaktív egyaránt.

Fejlődik a pályatervező is, amit a végleges játéknál tervezem hogy publikáljam. Ehhez lesz majd „Online MapStore”, ahova egy VB stúdiós login ellenében bárki feltöltheti és menedzselheti a saját pályáit. Mindezt login nélkül is le lehet majd tölteni ráadásul közvetlenül a játékon belül, és már megy is!

(A Wolfenstein grafika nem lesz a végleges verzióban, csak ez volt hirtelen kéznél)

A 3D mód, ami eredetileg poénnak indult, ilyen „ilyet is tudok” alapon, az mostanra elég fejlett, mondhatni játszható állapotba került. Az Incomplete Operation-ben még csak a falakat renderelte, és a statikus fényeket, most már az összes dinamikus fény is benne van, és sprite-okat is tud, tehát ellenfél, tereptárgy, lövedék, minden megjeleníthető benne. Ezért kár is lenne érte, ha ez a mód csak egy bónusz funkcióként lenne elrejtve. A terv az, hogy ugyan a fő játék az marad a felülnézetes, lesz egy bónuszküldetés a 3D módban, ami az alapjáték történetéhez akár semmilyen szinten nem kötődik.

Úgy döntöttem publikálom néhány programom, amiket eredetileg saját felhasználásra írtam. Ezek ötlete mindnek fejlesztések során született meg, és későbbi fejlesztések során vált rendkívűl hasznossá. Azóta még megtoldottam őket egy egységes és felhasználó barát felülettel, plusz mind támogat magyar és angol nyelvet.

Hogy ezek külön-külön pontosan mit is csinálnak, azt most itt inkább nem írom le, megtekintheted őket az alkalmazások között. Mind a ToolSet előnevet viseli.

Remélem másnak is hasznára válhatnak majd, fogyasszátok egészséggel :-)

Az utóbbi időben ezerrel dolgoztam a sulis és egyéb projektjeimen, ezek közül szeretnék bemutatni egyet az előbbiek közül:

Codename Z: Incomplete Operation

A Vizuális Eseményvezérelt Programozás nevű óra keretében kaptuk a feladatot, hogy írjunk egy játékot, úgyhogy írtam egyet. Persze azért ebben rengeteg órányi munka és legfőképp korábbi tapasztalat van, szóval így könyű (könnyebb), hogy nem idén látok először programkódot. A játékkal meg is nyertem az első díjat a tárgyhoz tartozó programozási versenyen, amin minden osztályból a legjobb féléves munkák indultak.

Vizuális Eseményvezérelt Programozás verseny 1. díj

Maga a játék szörnyen egyszerű, A pontból B pontba el kell jutni egy darabban, közben zombik és trollface-ek hada próbál megállítani minket, és ha ez nem lenne elég, a létesítmény automata biztonsági rendszere is az ellenségünk! De nem kell kétségbe esni, a pálya tele van lőszerrel és elsősegélycsomagokkal.

Felülnézetben fedezhetjük fel ezt a veszélyes világot, ahol fontos szerepet játszanak a fények. Ez már az elején nyilvánvalóvá vált, hogy fények nélkül túl üres lenne a pálya, így viszont jelentős szerepet kap a történet során az elemlámpa, melyet az F gombbal tudunk ki és be kapcsolni (Xbox Controller esetén B). A pálya több részén is koromsötétben kell utat találnunk, és közben visszaverni az ellenfeleket, de szerencsére ahogy mi sem látunk a sötétben, ők sem! Viszont ha túl közel kerülsz hozzájuk, megérzik a jelenléted!

Codename Z: Incomplete Operation

Az irányítás:


(Az Xbox Controller-t automatikusan felismeri indításkor, ha be van dugva. Felismer más gamepadokat is, de a gombok kiosztása azoknál eltérő lehet)

 

És persze nem utolsó sorban itt van a lényeg, maga a játék:
http://vbstudio.hu/games/codenamez-incomplete-operation

A programhoz a következőknek kell telepítve lenniük:

Az utóbbi kettő, ha van játék a gépeden, akkor már valószínűleg telepítve van.
Jó szórakozást! ;)

 

Most, hogy a lényeget már letöltötted, jön a kevésbé érdekes rész, a technikai infó :D

Hogy a félreértéseket elkerüljük, most előre kijelentem: a játék nem használ DirectX-et a megjelenítésre! OpenGL-t sem. Az egész játék a .NET 2.0 rendszer GDI+ API-ját használja a grafikák kirajzolására. Részben ezt, és részben közvetlenül végez számításokat a memóriában. Ez az összetettebb képszámolásoknál kell, a fények kirajzolásánál, illetve az ütközéstérkép olvasásánál, mert ezeknél rendkívűl fontos a sebesség, és a beépített Bitmap.GetPixel() nem képes ezt a teljesítményt szolgáltatni. Ennek az oka egyszerűen az, hogy a GetPixel() minden híváskor lezárja a bitmapot a memóriában, kiolvassa azt az egy pixelt, aztán fölszabadítja, és ezután a kiolvasott pixelnek még létrehoz külön egy Color objektumot. A közvetlen memória írásnál és olvasásnál csak egyszer zárja le a bitmapot, és addig nem szabadítja fel, amíg az összes pixelműveletet el nem végezte, a pixeleket pedig byte formájában olvassa ki pointer-ek segítségével.

A program egyetlen egy helyen használ DirectX-et, mégpedig a joystick kezeléséhez.

A hangokat az irrKlang hang library biztosítja. Csak ajánlani tudom, mert bárki számára szörnyen egyszerű a használata. Az alábbi linken érhető el:
http://www.ambiera.com/irrklang/