|
|
||
|---|---|---|
| .github/workflows | ||
| cross | ||
| src | ||
| tests | ||
| third_party | ||
| tools | ||
| .gitignore | ||
| .gitmodules | ||
| CHANGELOG.md | ||
| CMakeLists.txt | ||
| CMakePresets.json | ||
| LEVELDESIGN.md | ||
| LICENSE | ||
| README.md | ||
| REFERENCE.md | ||
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. 1–2 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.
- Lade das ZIP für dein Betriebssystem aus den Releases (Windows x64/x86/ARM64/XP, Linux x86_64/i686, macOS Apple Silicon/Intel).
- Entpacken und starten. Auf macOS
window-defender.appper 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. 1–2 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.
- Download the ZIP for your OS from Releases (Windows x64/x86/ARM64/XP, Linux x86_64/i686, macOS Apple Silicon/Intel).
- Extract and run. On macOS, open
window-defender.appby 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.