Developer blog / Profession / University projects /

hun VEP verseny

University projects, April 18, 2012

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, főleg hogy az nincs is C#-hoz. 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/