Shortens character names throughout dialogue, save.py loop-twist lines, and README. Adds three wallpaper images to Wallpaper/ and embeds Doom_Slyer.png as the README screenshot.
DOOM × MATRIX: SYSTEM FAILURE
Ein interaktives Text-Adventure in Python, das die Lore von DOOM und The Matrix zu einer gemeinsamen, düsteren Verschwörung verschmilzt: Die Matrix läuft nicht neben der Hölle — sie läuft auf ihr.
"What if the Matrix was just a very inefficient DOOM engine?"
Inhaltsverzeichnis
- Schnellstart
- Story-Prämisse
- Charakterklassen
- Spielablauf & Layer
- Kampfsystem
- Hacking-System
- Inventar & Gegenstände
- Enden
- Easter Eggs & Cheat-Codes
- Speicherstände & Loop-Twist
- Kommandozeilen-Optionen
- Projektstruktur
- Erweitern des Spiels
Schnellstart
Voraussetzungen: Python 3.9+ (getestet mit 3.13). Keine Pflicht-Abhängigkeiten — colorama wird automatisch genutzt, falls installiert (für saubere ANSI-Farben in der klassischen Windows-Konsole), ist aber optional.
python doom-matrix-adventure.py
Optionale Flags:
python doom-matrix-adventure.py --fast # überspringt alle Tipp-/Dramatik-Verzögerungen
python doom-matrix-adventure.py --seed=1337 # reproduzierbarer Run (fester Zufalls-Seed)
python doom-matrix-adventure.py --fast --seed=42 # beides kombiniert
Der Einstieg funktioniert auch direkt über das Paket:
python -m doom_matrix.main
Story-Prämisse
Du wachst im Construct auf — dem neutralen Trainingsraum der Matrix. Morpheus begrüßt dich als Doom Slayer, doch bevor du dich orientieren kannst, schlägt Alarm: Die Maschinen haben etwas gebaut, das sie HELL SERVER nennen.
Die zentrale Wendung: Argent-Energie treibt die Matrix an. Die Menschen in den Stasiskapseln sind keine Batterien — sie sind Seelen-Prozessoren, die Dämonen rendern. Die Hölle ist kein Ort neben der Simulation, sie ist deren Fundament. Der Doom Slayer selbst ist ein Rogue Process, ein Programm, das sich weigerte gelöscht zu werden — deshalb kann er die Regeln beider Welten brechen.
Auf dem Weg begegnest du dem weißen Hasen (ein Fourth-Wall-Break-Moment direkt zu Spielbeginn), dem Orakel in ihrer Küche mitten im Matrix-Code, und erlebst einen echten "Fehler in der Matrix": eine schwarze Katze, die exakt zweimal denselben Weg läuft — das untrügliche Zeichen dafür, dass gerade jemand den Code verändert.
Charakterklassen
Zu Beginn wählst du eine von drei Klassen. Sie bestimmen Startwerte, Startwaffe und wie schnell deine Corruption steigt (relevant für die Enden):
| Klasse | Fokus | HP | Armor | Focus | Hacking | Strength | Corruption-Rate | Startwaffe |
|---|---|---|---|---|---|---|---|---|
| Slayer | Doom — Kraft & Ausdauer | 120 | 20 | 60 | 2 | 8 | ×1.0 | Super Shotgun (20 Shells) |
| Operator | Matrix — Hacking & Mobilität | 85 | 10 | 100 | 9 | 3 | ×1.0 | Plasma Rifle (100 Cells) |
| Anomalie (Hybrid) | Ausgewogen, einzigartige Dialoge | 100 | 15 | 80 | 5 | 5 | ×2.0 | Super Shotgun + etwas Plasma |
Zusätzlich wählst du zu Spielbeginn im Construct eine zweite Waffe (Super Shotgun oder Plasma Rifle) — unabhängig von der Klasse.
Spielablauf & Layer
Das Spiel ist in Layer unterteilt, die den Fortschritt der Simulation widerspiegeln:
| Layer | Ort |
|---|---|
| 4 | Mars UAC Base |
| 3 | The Matrix (Start) |
| 2 | Hell Server |
| 1 | The Architect's Core |
| 0 | (geheim) — nur im wahren Ende erreichbar |
Ablauf
- Construct-Intro — Aufwachen, Morpheus, Alarm, Waffenwahl.
- Weißer Hase — ein Hologramm huscht vorbei. Folgst du ihm, öffnet sich kurz ein "Kaninchenbau" mit einem Blick auf die reale Terminal-Sitzung (inkl. echtem Systembenutzernamen) — das setzt die Weichen für das geheime Ende.
- Agent-Imp-Kampf — dein erster Gegner, halb Agent, halb Dämon.
- Wegwahl — drei Portale: Mars UAC Base, tiefer in die Matrix, oder direkt zum Hell Server (Schnellweg, aber weniger Beute).
- Mars UAC Base (Hub) — Waffenkammer (BFG 10000 + rote Keycard), Kontrollzentrum (Hacking-Check → Crucible-Fragment), Waffentresor (benötigt rote Keycard), prozedural generierte Nebenräume.
- Matrix Deep — die schwarze Katze (Deja-vu-Glitch), das Orakel (Dialogszene + Crucible-Fragment), Kampf gegen Agent Smith (Dialogwahl beeinflusst, ob er sich vervielfacht).
- Mars UAC Base und Matrix Deep sind beide vor dem Hell Server erreichbar — welchen Weg du zuerst nimmst, der andere folgt automatisch danach. Nur die dritte Portal-Option ("Schwarzes Loch") überspringt beide.
- Hell Server (Hub) — Altarraum (drittes Crucible-Fragment), prozedurale Kampf-/Beuteräume, Bosskampf gegen den Cyberdemon.
- Der Archi-Lord (Endboss) — Dialogwahl beeinflusst Corruption und das spätere Ende; bei drei gesammelten Crucible-Fragmenten kannst du sie zum Crucible Sword verschmelzen.
- Ending — abhängig von Entscheidungen, Corruption und ob du den weißen Hasen gefolgt bist plus alle drei Fragmente besitzt.
Kampfsystem
Kämpfe laufen rundenbasiert mit vier (bzw. fünf) Aktionen ab:
- Schießen — wählt eine verfügbare Waffe, Schaden hängt vom Waffen-Dreieck ab:
- Ballistisch (Shotgun, Fäuste) ist stark gegen
demon, schwach gegenprogram. - Plasma (Plasma Rifle, BFG) ist stark gegen
program/hybrid, etwas schwächer gegendemon. - Nahkampf (Crucible Sword) ist ausgeglichen, leicht im Vorteil gegen
hybrid.
- Ballistisch (Shotgun, Fäuste) ist stark gegen
- Bullet Time — kostet 25 Focus, garantiert Ausweichen des nächsten Gegnerangriffs und einen kritischen Treffer (+50% Schaden). Reicht der Focus nicht, verpufft der Versuch als normaler (ungeschützter) Zug.
- Glory Kill — nur nutzbar, wenn ein Gegner gestaggert ist (seine Stagger-Leiste ist voll). Tötet ihn sofort und heilt dich um 25 HP. Ohne gestaggerten Gegner schlägt der Versuch fehl und du kassierst einen Konter.
- Hack — ein Skill-Check (
d20 + Hackinggegen die Firewall des Gegners). Erfolg lässt dich einen Effekt wählen (Einfrieren, Waffen-Jam, HP-Leak, Gegner umdrehen). Misslingt der Hack, erleidest du Rückstoßschaden und sammelst eine Trace-Marke — bei drei Marken schickt das System Verstärkung in den Kampf. - Medkit benutzen — erscheint nur, wenn du ein Medkit im Inventar hast.
Boss-Gegner (Cyberdemon, Archi-Lord) haben mehrere Phasen: bei bestimmten HP-Schwellen werden sie aggressiver und ihre Stagger-Leiste wird zurückgesetzt.
Hacking-System
Hacking ist nicht nur eine Kampfoption, sondern auch der Schlüssel zu Umgebungsrätseln:
- Kontrollzentrum (Mars Base): ein Hack mit Firewall 10 öffnet ein verstecktes Fach mit einem Crucible-Fragment.
- Schwarze-Katze-Glitch (Matrix Deep): ein optionaler Hack (Firewall 12) lässt dich der Code-Bruchstelle nachspüren und ein Log-Fragment finden — kostet aber etwas Corruption.
Erfolgschance: Würfelwurf (1-20) + Hacking-Wert ≥ Firewall des Ziels.
Inventar & Gegenstände
| Item | Wirkung |
|---|---|
| Medkit | Heilt 30 HP |
| Armor-Shard | Gibt 15 Armor |
| Ammo-Pack | Füllt Munition aller Waffen auf |
| Backup-Pille | Einmaliges Auto-Revive bei tödlichem Treffer |
| Rote/Blaue/Gelbe Keycard | Öffnet entsprechend verriegelte Türen in Hub-Räumen |
| Crucible-Fragment | Sammle 3, um den Crucible Sword zu schmieden — und Voraussetzung für das geheime Ende |
| Praetor-Token | Skillpunkt (Health, Focus, Hacking oder Strength dauerhaft erhöhen) |
| Log-Datei | Lore-Fragment, kein Kampfeffekt |
Waffen: Fäuste (unbegrenzt), Super Shotgun, Plasma Rifle, BFG 10000 (limitierte Spezialmunition), Crucible Sword (nur nach Verschmelzung aller 3 Fragmente).
Enden
Welches Ende du bekommst, hängt von Corruption, deiner letzten Dialogwahl beim Archi-Lord und ob du den weißen Hasen gefolgt bist und alle drei Crucible-Fragmente besitzt:
| Ende | Bedingung |
|---|---|
| Wake Up (geheimes, wahres Ende) | Weißem Hasen gefolgt und 3/3 Crucible-Fragmente. Layer 0 wird erreicht — ein Fourth-Wall-Break mit deinem echten Systembenutzernamen. |
| Der Dunkle Pakt | Corruption ≥ 60% — du wirst selbst zum neuen Dark Lord. |
| Der neue Architekt | Dialogwahl "Ich will die Kontrolle übernehmen" beim Archi-Lord. |
| ...mit Cheats (New Game+) | Dialogwahl "Ich will einen neuen Spielstand" beim Archi-Lord. |
| Rip and Tear | Standard-Ende, falls keine der obigen Bedingungen zutrifft. |
| Game Over → Bluepill | Bei Tod: die blaue Pille schlucken → ironisches Büro-Ende. |
| Game Over → Neu laden | Bei Tod: Programm beenden. |
Hinweis zum geheimen Ende: Um alle 3 Fragmente zu sammeln, musst du sowohl die Mars UAC Base (Kontrollzentrum-Hack) als auch Matrix Deep (Orakel) besuchen, bevor du den Hell Server (Altarraum) betrittst — die dritte Portal-Option ("Schwarzes Loch") überspringt beide und macht das wahre Ende in diesem Run unerreichbar.
Easter Eggs & Cheat-Codes
Cheat-Codes können jederzeit anstelle einer normalen Eingabe (z. B. im Kampfmenü oder in Hub-Räumen) eingegeben werden:
| Code | Effekt |
|---|---|
IDDQD |
God Mode an/aus (kein Schaden mehr) |
IDKFA |
Alle Waffen + volle Munition |
thereisnospoon |
Senkt Corruption leicht |
xyzzy |
Klassischer Nichts-passiert-Scherz (Referenz auf Colossal Cave Adventure, 1977) |
doom / knee-deep / kneedeepinthedead |
Pixel-Nostalgie-Easter-Egg, gibt einen Bonus-Praetor-Token |
Weitere versteckte Momente:
- Der weiße Hase erscheint nur einmal, direkt vor dem ersten Kampf.
- Die schwarze Katze läuft zweimal exakt gleich — ein bewusster "Fehler in der Matrix", kein Zufallsevent.
- Das Orakel reagiert unterschiedlich, je nachdem ob du dem Hasen gefolgt bist und wie hoch deine Corruption ist.
Speicherstände & Loop-Twist
Nach jedem Spielende wird automatisch ein Speicherstand unter doom_matrix/saves/autosave.json abgelegt. Zusätzlich führt doom_matrix/saves/meta.json Buch über die Gesamtzahl deiner Durchläufe.
Ab dem zweiten Durchlauf reagiert Morpheus mit einer subtil unterschiedlichen Zeile zu Spielbeginn — ein wachsender Hinweis darauf, dass diese Simulation schon öfter gelaufen ist, als dir bewusst ist.
Kommandozeilen-Optionen
| Flag | Beschreibung |
|---|---|
--fast |
Deaktiviert alle Tipp-Animationen und dramatischen Pausen |
--seed=<zahl> |
Fixiert den Zufalls-Seed für reproduzierbare Durchläufe |
Projektstruktur
Doom-Matrix/
├── doom-matrix-adventure.py # Kompatibilitäts-Wrapper / Haupteinstieg
└── doom_matrix/
├── main.py # Alternativer Einstiegspunkt (python -m doom_matrix.main)
├── engine/
│ ├── ui.py # Farben, Textausgabe, Balken, Glitch-Effekte
│ ├── game.py # Titel-Bildschirm, Klassenwahl, Szenen-Dispatch
│ ├── save.py # JSON-Speicherstände, Meta-Statistiken, Loop-Twist
│ └── cheats.py # Cheat-Code-Handling
├── entities/
│ ├── player.py # Spieler-Stats, Klassen, Leveling, Corruption
│ ├── enemy.py # Datengetriebene Gegner-Klasse (Stagger-System)
│ └── items.py # Item/Waffen/Inventar-Klassen, Waffen-Dreieck
├── systems/
│ ├── combat.py # Kampf-Engine (Stagger, Bullet Time, Glory Kill)
│ └── hacking.py # Skill-Check-System, Trace-Marken
├── world/
│ ├── rooms.py # Room-/Hub-Klassen für Raum-Navigation
│ ├── generator.py # Prozedurale Raum-/Encounter-Generierung
│ ├── layers.py # Story-Szenen aller Layer (Intro bis Endboss)
│ └── endings.py # Ending-Logik und Game-Over-Verzweigung
├── data/
│ ├── weapons.json # Waffendaten (Schaden, Munitionstyp, Typ)
│ ├── enemies.json # Gegnerdaten (HP, Stagger, Angriff, Firewall)
│ └── items.json # Item-Definitionen
└── saves/ # Autosave & Meta-Statistiken (JSON, zur Laufzeit erzeugt)
Architekturprinzipien:
- Daten von Logik getrennt — Gegner, Waffen und Items liegen als JSON vor und lassen sich ohne Code-Änderungen erweitern oder neu balancieren.
- Room-Graph statt linearer Szenen — Hub-Bereiche (Mars UAC Base, Hell Server) bestehen aus vernetzten
Room-Objekten statt fest verdrahteter Szenenfolgen. - Eine generische Kampf-Engine — dieselbe
run_combat()-Funktion bedient sowohl einfache Gegner als auch mehrphasige Bosse. - Seed-injizierbarer Zufall — jede Funktion, die Zufallswerte braucht, nimmt ein
random.Random-Objekt entgegen, was reproduzierbare Testläufe und den--seed-Modus ermöglicht.
Erweitern des Spiels
- Neue Gegner: Eintrag in
doom_matrix/data/enemies.jsonergänzen (id, name, type, hp, stagger_max, attack_range, firewall, optional boss/phases). - Neue Waffen: Eintrag in
doom_matrix/data/weapons.jsonergänzen und inentities/player.pybzw. der jeweiligen Szene überplayer.add_weapon("<id>")vergeben. - Neue Räume/Hubs:
world/rooms.pysRoom/Hub-Klassen verwenden; sieheworld/layers.py(mars_base,hell_server) als Referenz. - Neue Enden:
world/endings.py::determine_ending()um eine weitere Bedingung erweitern und einen passenden_ending_*-Handler ergänzen. - Neue Cheat-Codes: in
engine/cheats.py::try_cheat()ergänzen.
Erstellt von LXC für Andy. 🐇
