ajhahn.de
← all repos

Repository

the-way-out

Top-down pixel-art escape-room shooter. Fight through locked rooms, work the levers, find the way out. Built with pygame; testbed for eeco.

Python · updated Jun 2026 · Apache-2.0

  • apple
  • eeco
  • escape-room
  • game-development
  • intel
  • macos
  • pixel-art
  • pygame
  • python
  • silicon
  • top-down-shooter
main

Languages

  • Python 78.5%
  • Markdown 18.1%
  • Shell 1.7%
  • YAML 0.6%
  • Swift 0.6%
  • TOML 0.3%
  • JSON 0.2%

Readme

The Way Out

A top-down pixel-art escape-room shooter.

CI Version Python 3.12+ macOS License

README · Documentation · Versioning · Changelog


The Way Out — character select

The character-select screen: five playables, each with its own HP, speed, damage, fire-rate, and signature ability.

Pick a character, fight your way through locked rooms, work the levers and pressure plates, and find the way out.

Play

pip install pygame
python main.py

Controls

Input Action
WASD / Arrows Move & aim (4-way)
Space Shoot
Shift Dash
E Use / interact
Esc Pause / back

Characters

Five playable characters, each with its own HP, speed, damage and fire-rate profile: the balanced Wizard, the Penguin tank, the rapid-fire Elf, the glass-cannon Shiggy, and the speedster Wolf.

Levels

Three hand-authored escape rooms. Levels are plain text maps under assets/levels/ (see LEGEND.md for the tile vocabulary) plus a manifest.json, so new rooms can be added without touching code. An in-game editor (editor.py) edits them live.

Project layout

Path Purpose
main.py Entry point & game loop
menu.py Title, settings, character & level menus
levels.py Level loading & runtime
units.py Player & enemy logic
interactables.py / static_objects.py / tileset.py World objects
editor.py In-game level editor
theme.py Shared palette & UI helpers
audio.py Music & SFX
assets/ Sprites, audio, fonts, level maps

A deeper walk-through of each subsystem — the game loop, levels, combat, the editor, the save file, and the self-updater — is in Documentation.

Build (macOS)

./build_mac.sh        # arm64 .app
./build_mac_intel.sh  # x86_64 .app

The app self-updates from this repository on launch via updater.py; save data lives outside the app bundle and is never touched by updates.

Versioning

Semantic versioning (vMAJOR.MINOR.PATCH); each release is a single annotated git tag. See CHANGELOG.md for the history.

License

Apache License 2.0 — see LICENSE.

See also

  • FlashOS — AArch64 bare-metal kernel for the Raspberry Pi 4 Model B.

Next: Documentation →

Recent commits

Files