An 8 bit retro game for modern windows/linux
Find a file
internaut 725eead154
Some checks failed
Build (Windows / Linux / macOS) / linux (push) Has been cancelled
Build (Windows / Linux / macOS) / macos (push) Has been cancelled
Build (Windows / Linux / macOS) / windows (push) Has been cancelled
Build (Windows / Linux / macOS) / release (push) Has been cancelled
0.6.0
2026-07-31 00:35:10 +02:00
.github/workflows feat: Add spoken announcements and release 0.7.0 2026-07-30 21:50:05 +02:00
cross feat: Add spoken announcements and release 0.7.0 2026-07-30 21:50:05 +02:00
src 0.6.0 2026-07-31 00:35:10 +02:00
tests feat: Build the level from the real desktop 2026-07-31 00:20:44 +02:00
third_party v2 2026-06-08 22:16:34 +02:00
tools Release 0.6.0: Balance-, Input- & Boss-Rig-Overhaul 2026-07-28 08:23:34 +02:00
.gitignore Release 0.4.0: VS-Modus, Spezialattacken, Bonus-Level & Content-Overhaul 2026-06-21 14:39:06 +02:00
.gitmodules v0.2.1 - bugfixing, submodule 2026-06-17 08:59:09 +02:00
CHANGELOG.md feat: Build the level from the real desktop 2026-07-31 00:20:44 +02:00
CMakeLists.txt feat: Build the level from the real desktop 2026-07-31 00:20:44 +02:00
CMakePresets.json v0.2.0 full rewrite, modularization, persistence, testset, etc 2026-06-16 11:29:03 +02:00
LEVELDESIGN.md 0.6.0 2026-07-31 00:35:10 +02:00
LICENSE linux fixes 1 2026-06-11 21:29:41 +02:00
README.md feat: Add spoken announcements and release 0.7.0 2026-07-30 21:50:05 +02:00
REFERENCE.md feat: Build the level from the real desktop 2026-07-31 00:20:44 +02:00

Window Defender

Ein 8/16-Bit-Plattform-Shooter in C auf Basis von [raylib](https:// www.raylib.com/) dein Desktop ist das Level. An 8/16-bit platform shooter in C built on [raylib](https:// www.raylib.com/) your desktop is the level.

Version 0.7.0 · Changelog · Full reference (English) · License: MIT


🇩🇪 Deutsch

Fenster sind Plattformen, Icons sind Bonus-Fressziele. Als Jetpack-Held ballerst du Aliens, Monster und Getier ab, die deine Fenster anfressen. Schießt du nicht genug Gegner ab, fressen sie die Fenster weg sind alle weg, ist Schluss und es kostet ein Continue. Schlage die Wellen einer Stufe und den Stufen-Boss, um weiterzukommen. Jeder der zehn Bosse verlangt seine eigene Taktik stures Umkreisen und Ballern reicht nicht mehr; die Angriffe sind fair telegrafiert und je nach Schwierigkeit klar schaffbar. Treffer lesen sich nach Wucht (leicht / schwer / heftig), Boss-Angriffe haben Schadensstufen und können dich kurz umwerfen ohne dass dich eine Salve festnageln kann. Jede Stufe hat ein einzigartiges Plattform-Layout und drei eigene Songs, die sich abwechseln. Sound-Modus umschaltbar zwischen 8-Bit (SID) und 16-Bit (Amiga/SNES). Beim ersten Start läuft ein cineastisches Action-Intro. 12 Spieler (Tastatur/Gamepad) + Endlos-Modus.

Neu in 0.7.0: das Spiel spricht eine Ansager-Stimme kommentiert 76 Ereignisse zweisprachig (Englisch/Deutsch): Boss-Ankündigung mit Namen, Powerups, „Gefahr", den Continue-Countdown, die Stufe mit gesprochener Nummer und mehr. Gesprochen wird mit der eigenen Klangsynthese des Spiels keine Fremdbibliothek, keine Sprachdateien auf der Platte, nichts nachzuinstallieren; solange gesprochen wird, senkt die Musik weich ab und kommt danach zurück. Das Intro erzählt neu und dramatisch in beiden Sprachen, mit wortgenauen Untertiteln. Plattformen verteilen sich besser: leere Höhenbänder werden über die ganze Bildschirmbreite mit erreichbaren Stufen aufgefüllt, statt top-lastig oben zu hängen. Auf macOS liegt jetzt window-defender.app im Paket per Doppelklick starten, denn nur dann gilt die Freigabe für die Bildschirmaufnahme dem Spiel selbst (Eintrag „Window Defender") statt dem Terminal, aus dem es gestartet wurde.

Für Spieler

Zum Spielen brauchst du nur die fertige Datei für dein OS kein Compiler.

  1. Lade das ZIP für dein Betriebssystem aus den Releases (Windows x64/x86/ARM64/XP, Linux x86_64/i686, macOS Apple Silicon/Intel).
  2. Entpacken und starten. Auf macOS window-defender.app per Doppelklick öffnen: nur so gilt die Freigabe für die Bildschirmaufnahme dem Spiel selbst (Systemeinstellungen → Datenschutz & Sicherheit → Bildschirmaufnahme, Eintrag „Window Defender"); nach dem Erteilen die App einmal komplett beenden und neu öffnen. Weitere Erststart-Hinweise (z. B. Windows SmartScreen) sowie die komplette Steuerung, Power-up-Liste und Systemanforderungen stehen in der REFERENCE.md (englisch).

Kurzfassung Anforderungen: 64/32-bit Windows 7+ (ARM64: Windows 10 on ARM), Linux (x86_64/i686) mit OpenGL 3.3+, oder macOS 11+ (Apple Silicon/Intel); 2 GB RAM; OpenGL-3.3-fähige GPU (XP-Build: OpenGL 1.1). Auf schwacher Hardware helfen die In-Game-Optionen Performance-Profil, FPS-Limit, Render-Auflösung, Effekte und adaptive Qualität.

Einstellungen und Highscores werden pro Benutzer gespeichert (nicht im Programmordner): settings.ini als lesbare Datei, Highscores als manipulationssichere scores.dat. Speicherorte: siehe REFERENCE.md.

Für Entwickler

raylib wird ausschließlich über find_package(raylib REQUIRED) aufgelöst (keine fest kodierten Pfade). Mindestversionen: CMake 3.10, C-Standard C11, GCC oder Clang.

# Konfigurieren, bauen, ausführen (Linux/macOS)
cmake -S . -B build           # macOS/Homebrew ggf.: -DCMAKE_PREFIX_PATH=/opt/homebrew
cmake --build build
./build/window-defender

Bequemer: CMake-Presets (CMakePresets.json, optionales Tooling, benötigt CMake ≥ 3.19; das Projekt baut weiterhin ab CMake 3.10 ohne Presets):

cmake --preset macos-arm64       # -> build-macos (Dev)
cmake --build --preset macos-arm64
ctest --preset macos-arm64

Das Preset macos-arm64 pinnt CMAKE_OSX_ARCHITECTURES=arm64 und CMAKE_PREFIX_PATH=/opt/homebrew (kritischer Fix: die Toolkit-cmake läuft x86_64 unter Rosetta und würde sonst gegen das arm64-Homebrew-raylib scheitern). Die Release-Presets spiegeln CI (Release + WD_WERROR=ON) und nutzen eigene Build-Verzeichnisse.

# Tests (reine Logik, kein raylib nötig)  aktuell 174 Tests
ctest --test-dir build

Build aus dem Quellcode (pro OS), Cross-/Release-Builds (Finch/Docker, inkl. Windows XP), Projektstruktur, Versionierung und Fehlerbehebung: siehe REFERENCE.md. Beiträge sind willkommen (Pull Request / Issue).


🇬🇧 English

Windows are platforms, icons are bonus snack targets. As a jetpack hero you blast the aliens, monsters and critters that gnaw at your windows. Don't shoot enough of them and they eat your windows away — once all are gone you're done and it costs a continue. Beat a stage's waves and its boss to advance. Each of the ten bosses now demands its own tactic — circling and shooting no longer cuts it; attacks are fairly telegraphed and clearly beatable per difficulty. Hits read by force (light / heavy / major), boss attacks have damage tiers and can briefly knock you down — without any barrage ever stun-locking you. Each stage has a unique platform layout and three rotating songs; toggle between 8-bit (SID) and 16-bit (Amiga/SNES) sound modes with M. A cinematic action intro plays on first launch. 12 players (keyboard/gamepad) + endless mode.

New in 0.7.0: the game speaks — an announcer voice calls out 76 events in English and German: boss announcements with the boss name, power-ups, "danger", the continue countdown, the stage with its number spoken, and more. The voice comes from the game's own synthesis — no third-party library, no voice files on disk, nothing to install; while it speaks, the music ducks smoothly and comes back afterwards. The intro is newly written and dramatic in both languages, with word-timed subtitles. Platforms spread out better: empty height bands are filled with reachable steps across the full screen width instead of clinging to the top. On macOS the package now contains window-defender.app — launch it by double-click, because only then does the screen-recording approval apply to the game itself (entry "Window Defender") rather than to the terminal it was started from.

For players

To play you only need the prebuilt binary for your OS no compiler.

  1. Download the ZIP for your OS from Releases (Windows x64/x86/ARM64/XP, Linux x86_64/i686, macOS Apple Silicon/Intel).
  2. Extract and run. On macOS, open window-defender.app by double-click: only then does the screen-recording approval apply to the game itself (System Settings → Privacy & Security → Screen Recording, entry "Window Defender"); after granting it, quit the app completely and open it again. Further first-launch notes (e.g. Windows SmartScreen) plus the full controls, power-up list and system requirements are in REFERENCE.md.

Requirements in short: 64/32-bit Windows 7+ (ARM64: Windows 10 on ARM), Linux (x86_64/i686) with OpenGL 3.3+, or macOS 11+ (Apple Silicon/Intel); 2 GB RAM; OpenGL 3.3 capable GPU (XP build: OpenGL 1.1). On weak hardware use the in-game performance profile, FPS limit, render resolution, effects and adaptive quality options.

Settings and high scores are stored per user (not in the program folder): settings.ini as a readable file, high scores as a tamper-evident scores.dat. Locations: see REFERENCE.md.

For contributors

raylib is resolved solely via find_package(raylib REQUIRED) (no hard-coded paths). Minimum versions: CMake 3.10, C standard C11, GCC or Clang.

# Configure, build, run (Linux/macOS)
cmake -S . -B build           # macOS/Homebrew may need: -DCMAKE_PREFIX_PATH=/opt/homebrew
cmake --build build
./build/window-defender

Easier: CMake presets (CMakePresets.json, optional tooling, needs CMake ≥ 3.19; the project still builds from CMake 3.10 without presets):

cmake --preset macos-arm64       # -> build-macos (dev)
cmake --build --preset macos-arm64
ctest --preset macos-arm64

The macos-arm64 preset pins CMAKE_OSX_ARCHITECTURES=arm64 and CMAKE_PREFIX_PATH=/opt/homebrew (critical fix: the toolkit cmake runs x86_64 under Rosetta and would otherwise fail to link against the arm64 Homebrew raylib). The release presets mirror CI (Release + WD_WERROR=ON) and use their own build directories.

# Tests (pure logic, no raylib)  currently 174 tests
ctest --test-dir build

Building from source (per OS), cross-/release builds (Finch/Docker, incl. Windows XP), project structure, versioning and troubleshooting: see REFERENCE.md. Contributions welcome (pull request / issue).

Project layout (short):

src/        Game code (app, game, entities, desktop, renderer, ui, save, collision, perf)
tools/      Sprite generators/validators (Python)
tests/      Property/unit tests (CTest)
cross/      Cross-/release build (Dockerfile, scripts, toolchains)

Lizenz / License

MIT siehe / see LICENSE.