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 elhelyezkedő 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 2026 Február - Március Multiplayer mód (beta), Rakéták!
1.3 2026 Űrbázisok és Építkezés
1.4 2026 Vége Szektorok és féreglyukak, optimalizálások
Tervezett játékfunkciók: Hajóvásárlás és fegyverraktár, Csapatok/klánok, Frakciók és ökonómia, Játékbeli rádió hangcsatornákkal, Teljes ellenség AI újradolgozás

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