skyjade
  • Kezdőlap
  • Játékok
  • Programok
  • Rólunk
Image 1
Image 2
Image 3
Előző Következő

Spaceshooter

A Spaceshooter egy olyan projektünk, amelyre talán a legbüszkébbek vagyunk. Rengeteg időt és energiát fektettünk ebbe a játékba, illetve versenyt is nyertünk vele, ezért reméljük, hogy a játékosok is élvezni fogják. A játék egy űrhajós lövöldözős játék, amelyben az űrhajónkkal egy hatalmas világűrben kell túléljük a támadó kalózűrhajókat. A játék koncepciója egy komplex fejlődési lehetőséget ír le, azonban a jelenleg letölthető verzió ezt a funkciót nem tartalmazza. A játékmenet egyszerű, azonban az idő függvényében folyamatosan nehezedik, több ellenség jön, illetve egy főellenséget is tartalmaz a játék.

A játékot Pythonban írtuk, a Pygame modul segítségével, amit a felhasználó EXE formátumban windowson futtathat külső telepítés nélkül. A játék ingyenesen letölthető erre a letöltés gombra kattintva, illetve a forráskód is megtekinthető lesz hamarosan a GitHub oldalunkon.

A játékról bővebben...

Ismételten alkalmaztuk matematikai tudásunkat, rengeteg szögszámolás, és távolságszámítás volt szükséges a játék megírásához. A játékban a játékos egy űrhajót irányít, amely egy 2D világban mozog, és ahol az ellenséges űrhajókat kell megsemmisíteni. A forráskód több mint 1000 soros, illetve 3 ember is dolgozott ezen a projekten. A játék jelenleg angol, de mindenképp fogunk készíteni egy magyar fordítást. Talán ez a legjobban erőforrásigényes játék, de gyengébb gépeken is stabilan fut 10 képkocka/másodperc sebességgel. A program magában tartalmaz egy "deltatime" idő és mozgásszámolási metódust, amely lehetővé teszi hogy a gyengébb számítógépeken is játszható legyen. Az FPS korlát 30 a hibák elkerülése végett, de ez egyáltalán nem észrevehető.

Mit és hogyan?

Miután letöltöttük a programot, csomagoljuk ki a .zip archívumot, majd futtassuk a mappában található "spaceshooter.exe" fájlt. A játékprogram egy rövid betöltési idő után a főmenüt jeleníti meg, ahol az egérrel navigálhatunk. A Start gombra kattintva elindul a játék, megjelenik a képernyő közepén a saját hajónk, az alsó sarkakban pedig az interfészek.
A hajónkat WASD billentyűkkel irányíthatjuk, viszont ne merüljünk bele az űr-farolásokba, hamarosan érkezik első ellenségünk. A bal egérgombbal tudjuk használni a kiválasztott fegyvert, amelyet a jobb alsó interfész jelöl piros betűszínnel. Két féle fegyverrel kezdünk: egy rövid és egy folyamatos lézer. Az 1 és 2 gombokkal lehet ezek közt váltani, a folyamatos lézerhez nyomva kell tartani az egérgombot. Mindkét fegyvernek kell újratöltési idő, ami a hajó energiájába kerül. Az R gombbal kapcsolhatjuk ki/be a reakcióvezérlési rendszert (RCS), azaz a fúvókákat, amelyek lefékezik az űrhajónkat hogy ne sodródjon a végtelenségbe.

Interfészek

A bal alsó sarokban látjuk a hajónk telemetriai adatait, illetve a pajzs és burkolatállapotot. Minden hajónak van pajzsa, amely 8 különálló részből áll, külön irányokba nézve. Amely irányból az adott hajót támadás éri, abból az irányból csökken a pajzsrész energiája, amit a megfelelő színjelzéssel jelez nekünk a játék. Ha egy pajzsrész kikapcsol, és további támadás éri a hajót, a burkolat könnyen sérül, illetve egyéb alkatrészek is sérülhetnek, amelyet a jobb felső - akárcsak a GravitySim-ben - lenyitható interfészen tekinthetünk meg.
A jobb alsó sarokban található egy kisebb interfész, amely a kijelölt célpont adatait mutatja, ebbe beleértve a pajzsot, burkolati állapotot, és távolságot (D)
A célpont kijelölést az F gombbal tehetjük meg, ez mindig egyet fog léptetni az ellenséges hajók közül, végül bekapcsolódik az automata célzás, ha nincs több kijelölhető hajó. Ezt a program a célzó interfészen egy "A-TGT: ON" felirattal jelzi.

Irányítások

  • WASD: Mozgás
  • Bal egérgomb: Tűz
  • R: RCS be/ki
  • F: Célpontok közti váltás / automata célzás
  • I: Debug információk
  • B: Hajó menü
  • M: Radar térkép

A Játék működése

A program tartalmaz egy tick-rendszert, lehetővé teszi hogy 10 játékesemény legyen egy másodpercben. A játékmenetben a hajók mozgása, a fegyverek lövése, és az ellenséges hajók mozgása is ezen a rendszeren alapul. A játékban a hajók mozgása egy egyszerű vektoros számítás, amely a hajó sebességét, és irányát számolja ki. A hajók mozgása a gravitációval ellentétben egyenes vonalú, azonban a játékmenetben a hajók gyorsulása is szerepet kap, amelyet a hajók sebességének növelésével érünk el. Minden tick-ben ellenőrzi a program az összes hajó esetleges ütközését az összes kilőtt lézerrel, majd ha ütköznek, kiszámolja a szöget, és az adott szögben elhejezkedő pajzs életerejét levonja. A hajók burkolati állapotának sérülésekor megsérülhet a bármely modul, ez az adott modul hatékonyságának csökkenését eredményezi. Az ellenséges hajók egy egyszerű beprogramozott NPC-k, amely megadott feltételeken alapulva viselkedik. A játéknak kétféle lehetséges vége van: Felrobban az üzemanyagtartály, vagy szétesik a hajó. A játékmenet végtelen, nincs nyerési lehetőség a jelenlegi verzióban, azonban ez később változni fog.

Kódrészlet - ütközésérzékelés
ütközésérzékelés kódrészlete
deltatime kódrészlete
Kódrészlet - hajó mozgatás

Fejlesztési napló

Verzió Dátum Funkció
1.0 2024.04.26 Játékmotor elkészítése, alap mozgás, interfészek, lézer, ellenséges űrajók
1.01 2024.04.28 Menürendszer, bossfight
1.1 2025.06.13 Mentés/betöltés, aszteroidák, hajórakomány, fejlesztési lehetőség, stb..

Beütemezett, és még fejlesztés alatt álló verziók

1.2 2025 nyár Űrbázisok, építkezés, több fegyvertípus
1.3 2025 második fele Még több hajó, szektorok és féreglyukak, optimalizálás
1.5 2026 Többjátékos mód helyi hálózaton, kampány és story játékmód

Nos? Egy letöltés esetleg?

Nagyon örülünk ha kipróbálod játékunkat, főleg ha még visszajelzést is írsz nekünk!


skyjade

© 2024 Skyjade