Lukas KarstenLukas Karsten
← Zurück zu den Projekten

Space Shooter

Mär 2025 – Apr 2025Solo-Projekt (Uni-Aufgabe)
  • C++
  • SFML
  • CMake

Kleines 2D-Spiel in C++, entstanden im Rahmen einer Uni-Aufgabe.

Der Spieler weicht zwei Gegnertypen mit unterschiedlichem Verhalten aus und schießt sie ab.

Gameplay

Space Shooter: Startbildschirm mit Leben-Counter
Startbildschirm: Leben-Anzeige, Starfield-Hintergrund
Space Shooter: Gameplay mit Gegnern
Laufendes Spiel: Rote Gegner (schnell), Blaue Gegner (Tank)

Gegner-Typen

Rote Gegner (Schnell)

  • • 1 Lebenspunkt (sofort zerstört)
  • • Hohe Bewegungsgeschwindigkeit
  • • Häufige, schnelle Schüsse
  • • Aggressive Angriffsstrategie

Blaue Gegner (Tank)

  • • 3 Lebenspunkte (mehrere Treffer nötig)
  • • Langsame Bewegung
  • • Weniger häufige, langsamere Schüsse
  • • Taktische Bedrohung

Architektur & Design

Entity-System: Das Spiel nutzt eine klassische ECS-ähnliche Struktur. Die Game-Klasse verwaltet zentral den Player, alle Enemies und Bullets als Vektoren. Jede Entity hat eigene Update- und Draw-Methoden, die vom Game-Loop aufgerufen werden. Das ermöglicht einfaches Hinzufügen neuer Gegnertypen durch verschiedene Constructor-Parameter.

Delta-Time Movement: Bewegung ist frameunabhängig — die Spielgeschwindigkeit hängt nicht vom FPS ab. Alle Bewegungen nutzen dt (Delta Time), damit das Spiel auf 60 FPS und 120 FPS gleichartig läuft.

Collision Detection: Kollisionen werden mit getGlobalBounds().intersects() berechnet — schnell und zuverlässig für ein 2D-Spiel. Bullets gegen Enemies, Enemies gegen Player.

Enemy Spawning: Ein globaler spawnClock regelt die Gegner-Spawnrate. Die Schwierigkeit steigt nicht über Zeit (klassisches Design, fokussiert auf Skill statt RNG).

Steuerung

A / D: Spieler links/rechts bewegen

Leertaste: Schießen (tippen oder gedrückt halten)

Ziel: Alle Gegner zerstören, ohne dass sie an dir vorbeikommen. Starten mit 50 Lebenpunkten.

Warum SFML?

SFML ist leicht, direkt und modern genug für ein 2D-Shooting-Spiel. Im Gegensatz zu Unity/Godot hatte ich volle Kontrolle über die Rendering Pipeline und den Game Loop — perfekt für ein Uni-Projekt, das zeigen soll, wie Spiele unter der Haube funktionieren.

Code auf GitHub ansehen ↗