Files
dreamer-game/README.md
2026-09-16 20:06:38 +02:00

304 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Traumwandler
Ein 3D-Spiel in Godot 4.7 (GDScript). Alle Objekte bestehen aus Godot-Primitiven
(Box, Zylinder, Kugel, Kapsel) — kein externes Asset.
Du bist ein Wesen aus der Traumwelt. Menschen tragen Träume mit sich herum, die
sie allein nicht bewegt bekommen. Du wirst zu ihnen geschickt.
## Starten
godot --path .
Steuerung: **WASD** bewegen · **Q** Kamera drehen · **Mausrad** Zoom ·
**Klick** auf einen Menschen folgen · **E** interagieren · **F** folgen ·
**R** notieren · **J** Journal · **1/2/3** Tempo.
Die **Kamera** ist fest wie in Diablo: schräg von oben, diagonal über den
Bezirk, zwei Zoomstufen, Drehen in 90°-Schritten. Die Maus ist immer frei.
Menschen sind klein, Häuser groß — die Stadt soll groß wirken und der Geist
entrückt.
**Die Oberfläche** ist um den Tag gebaut. Unten über die ganze Breite liegt
die **Zeitleiste**: 24 Felder, eines je Stunde, die laufende steht heraus.
Grau heißt unbekannt, gelb „hier stimmt etwas nicht, noch nicht benannt", rot
ein benannter Blocker, grün ein gebautes System. Links darüber die Ursachen,
rechts die Momente; bricht einer auf, pulsiert die laufende Stunde und rechts
läuft die Uhr. Ein Klick auf eine Stunde öffnet ihre Karte direkt darüber — was passiert, Auslöser, Belohnung, welche Technik
passt.
Das **Journal** (J) ist eine Seitenleiste rechts, die Welt bleibt sichtbar:
Techniken und Missionen als Karten mit Farbkante, Details auf Klick. Karten
sind Daten, Knöpfe sind Aktionen — es gibt je Panel höchstens eine
hervorgehobene. Fenster in der Mitte gibt es nur an Orten: Brett, Hörsaal,
Aushang schreiben. **Esc** geht eine Ebene zurück, nicht gleich ganz zu.
Oben links stehen nur Zeit und Mission. Alles Weitere steht im Journal.
In der Traumwelt springt **Leertaste**. Auf der Erde gibt es keinen Sprung:
der Geist geht zu Fuß.
## Spielschleife
**Journal** (Taste **J**, in beiden Welten dabei)
Das Journal führt Buch — es lehrt und vergibt nichts.
* **Techniken** — was du gelernt hast, mit Stufe und Erfahrung. Besser werden
sie nur draußen.
* **Akten** — je Mensch mit Mission ein Blatt Papier: Person und Traum, was im
Weg steht, der Befund aus Spuren und Beobachtungen, der Tag, die Notizen mit
Uhrzeit, ein Stempel, wenn der Traum erfüllt ist. Und der Knopf
**Hinfahren**, der dich vor seine Tür setzt. Keine Patientenakte: die Leute
sind nicht krank, sie haben Gewohnheiten.
* **Missionen** — die Menschen, für die du dich entschieden hast, jeweils mit
ihrem **Tagesablauf**: der Tag von 0 bis 23 Uhr, in Abschnitte geteilt. Es
gibt keine Wochentage; jeder Tag ist derselbe. Zu Beginn steht in jedem
Abschnitt nur ein Strich — der Tag ist leer, bis du dabei warst.
**Zwei Ebenen** — Gewohnheiten und Momente
Ein Mensch wird von zwei verschiedenen Dingen aufgehalten, und beide brauchen
eine andere Art zu spielen.
Gewohnheiten sitzen im Tagesablauf planend laufen ohne dich weiter
Probleme sitzen in Momenten reagierend du musst dabei sein
Eine Gewohnheit hat einen Platz im Tag: um zehn räumt sie auf, statt
anzufangen. Du findest den Platz, pflanzt eine Ersatzhandlung ein, und sie
läuft von allein. Ein psychisches Problem hat keinen Platz — es bricht in
**Situationen** auf, wann es will. Solange eine läuft, kommt der Traum nicht
voran; du kannst sie aussitzen oder mit der passenden Technik beenden.
Dreimal die richtige Technik im richtigen Moment, und das Problem ist
überwunden — dieser Moment kommt nicht wieder. Bis dahin umgehst du ihn jedes
Mal aufs Neue.
**Eigene Menschen** — Aushang schreiben
Am Schwarzen Brett lässt sich ein Mensch selbst schreiben: Name, Alter, Beruf,
Traum, Geschichte — und **Wörter**. Fünfundfünfzig Alltagswörter, wie Leute
über sich reden: *aufschiebend, konfliktscheu, nachtaktiv, hadert mit sich*.
Mindestens sechs. Sie sind das Einzige, was die Mechanik liest: aus ihnen
schließt das Spiel die Ursachen, die Blocker im Tag, die Klemmen und acht
Verhaltenswerte — wie leicht ein System sich setzen lässt, wie gut es trägt,
wie stark die Abwehr ist, wie oft Momente aufbrechen, wie lange sie dauern,
wie schnell der Traum von sich aus vorankommt, wie gut soziale Techniken
greifen, wie leicht man ihm ansieht, was dahintersteckt. Ein Wort zieht an
mehreren Stellen, oft in beide Richtungen: *perfektionistisch* lässt Systeme
besser tragen und den Anfang schwerer fallen.
Der Beruf gibt den Tagestyp: Heimarbeit, Frühschicht, Büro, Studium,
Werkstatt. Jeder eigene Mensch hat so einen eigenen Alltag, in dem seine
Blocker an ihren Tageszeiten stehen — und jede seiner Ursachen mindestens
einmal, sonst wäre sie nie zu erkennen. Ein Zufall-Knopf füllt das Formular
so, wie der Generator Menschen macht. Eigene Aushänge liegen unter
`user://aushaenge.cfg`, überleben den Neustart und ersetzen die letzten
erzeugten Einwohner; ein Aushang lässt sich wieder abnehmen.
**Diagnose und Routinen** — der Kern des Spiels (im Code heißen Routinen „Systeme“)
Ein Traum scheitert an Ursachen: *kein Anfang*, *keine Zeit*, *keine Kraft*,
*kein Halt*, *kein Grund*. Jeder Mensch hat zwei bis drei davon, nie alle. Die
stehen nirgends — du findest sie nur, indem du dabeistehst.
Dabeisein füllt den Abschnitt im Ablauf: du siehst, dass sie um zehn aufräumt.
Ob das ihren Traum aufhält, entscheidest du — mit **R**. Bis dahin steht dort
ein Fragezeichen.
Sichtbar wird eine Ursache an den Tätigkeiten, die sie hervorbringt. Wer nie in
Gang kommt, räumt auf statt anzufangen, recherchiert oder schreibt Später-Listen.
Wer keine Kraft hat, schaut abends eine Serie und bleibt danach wach. Jede
dieser Tätigkeiten hat einen **Auslöser** und eine **Belohnung**.
Gegen eine erkannte Ursache baust du eine Routine in den Tag:
Einführen Ein System, das fehlt — in einen freien Slot.
Ändern Eine Tätigkeit, die schadet — mit gleicher Belohnung ersetzt.
Liefert die Ersatzhandlung dieselbe Belohnung, hält sie besser. Das ist Duhiggs
goldene Regel: Auslöser und Belohnung bleiben, nur die Handlung dazwischen wird
getauscht. Manche Techniken ersetzen nichts, sie nehmen dem Verhalten den
Auslöser.
Der Fortschritt ist keine Kette von Einzeltreffern, sondern ein **Tempo**:
Tempo je Tag = Grundrate × Faktor je Ursache
nichts gelöst 4 % je Tag → der Traum steht praktisch still
eine gelöst 18 % je Tag → er kommt voran
alle gelöst 61 % je Tag → in gut zwei Tagen erfüllt
Ungelöste Ursachen bremsen multiplikativ. Zwei Bremsen sind viel schlimmer als
eine — deshalb lohnt es, alle zu finden.
So laufen die zwei Schleifen:
Techniken lernen → Systeme bauen → Traum läuft schneller
Träume erfüllen → Dorf wächst → neue Wege entdecken
Ein erfüllter Traum bringt ein Wesen mit seinem Haus ins Dorf, und in diesem
Haus wird ein neuer Weg gelehrt. Zu Beginn kennt das Dorf nur einen.
Nach jedem Einsatz braucht eine Technik 30 Sekunden Ruhe. Ein Einbau gelingt
nicht immer — Übung entscheidet.
**Traumwelt** — eine schwebende Insel, die ein Hügel ist
* Fest sind nur drei Dinge: der **Hörsaal der Wege**, der **Dorfplatz** um den
leuchtenden **Traumbaum** und das **Tor zur Erde**. Alles andere entsteht
beim Wachsen.
* **Die Insel beginnt kahl** und eben. Ab dem Dorfplatz steigt sie an; jeder
erfüllte Traum bringt einen Bewohner mit seinem Haus, und wer später kommt,
wohnt weiter außen und damit höher. Das Dorf wächst den Hügel hinauf — vom
Platz aus sieht man, wie weit man gekommen ist.
* Jedes Haus steht auf einer **Terrasse** in Höhe seiner Tür, die als
Böschung in den Hang ausläuft. Dach, Laterne an der Tür, Licht innen. Die
Wege folgen dem Hang und tragen Laternen. Spieler und Bewohner laufen auf
dem Boden, den ein Höhenfeld trägt.
* Häuser suchen sich ihren Platz selbst — mit Nachbarn, Weganschluss und dem
Dorfplatz in erträglicher Nähe — und meiden das Tor. Ein Weg führt nie
durch ein Haus; findet die Suche keinen, wird feiner gesucht und notfalls
woanders angedockt.
* **Die Wesen helfen.** Jeder erfüllte Traum bringt ein Wesen ins Dorf, und es
trägt, aus wessen Traum es kam. Sprich es an (**E**): es flüstert, was in der
Wohnung des Menschen liegt, um den es gerade geht — eine Spur, ohne dass du
hingehen musst.
* **Schwarzes Brett** am Dorfplatz — hier hängen die Menschen aus, die nicht
weiterkommen. Mission annehmen.
**Erde** — ein Stadtbezirk nach japanischem Vorbild
* **Arterien** in einem groben, leicht versetzten Raster spannen Blöcke auf.
Am Blockrand stehen die Häuser direkt an der Straße, ohne Vorgarten. Ins
Blockinnere führt eine schmale Sackgasse — *roji* —, an der die hinteren
Parzellen hängen. Der mittlere Block bleibt Park.
* **Hier wächst nichts.** Alle 16 Menschen sind von Anfang an da und leben
ihren Tag: schlafen, arbeiten, grübeln, essen, spazieren. Wer wo wohnt,
arbeitet in der Nähe; das Café liegt in der Mitte.
* **Wege kommen vom Navigationsnetz.** Beim ersten Betreten wird aus allen
Kollisionsformen ein Navigationsnetz gebacken (unter einer Sekunde): Straßen,
Türlücken, Möbel, Klötze — auf der Insel genauso.
Menschen und der Geist fragen es nach Pfaden; Türen und Treppen finden sie
von allein. Das Straßennetz zeichnet nur noch die Wege.
* **Beide Welten bleiben bestehen.** Wer aus dem Traum zurückkehrt, findet
dieselbe Stadt; die Menschen haben derweil ihren Tag weitergelebt. Jede Welt
liegt auf ihrer eigenen Kollisionsebene mit eigener Navigationskarte.
* **Passanten.** Zwölf Leute ohne Geschichte laufen stündlich zu einer anderen
Straßenecke oder in den Park: kein Name, kein Schild, keine Mission, nur
damit die Straßen nicht leer sind.
* **Die Stadt ist einstöckig.** Wohnhäuser und Sonderbauten sind geschlossene
Häuser: ein Raum mit Tür, Fenstern, Möbeln und den Spuren seines Bewohners.
Alles andere steht als flacher Klotz da, ebenfalls nur Erdgeschoss.
* Du bist ein unsichtbarer Geist, der eine Handbreit über dem Boden schwebt,
sich aber bewegt wie ein Mensch: Wände halten, Türen sind die Wege,
Schwerkraft gilt. Bist du in einem Haus, verschwinden Dach und Schild, und
alle Wände werden zu kniehohen Stümpfen gekürzt, wie bei den Sims. Nichts
wird durchsichtig; bei drei Meter hohen Häusern verdeckt kein Nachbar den
Blick.
* **F** oder ein Klick hängt dich an einen Menschen: du gehst seiner Spur
nach, durch dieselben Türen und Treppen, so schnell wie nötig — auch bei
Tempo 3, wo du ihm zu Fuß nie folgen könntest. Steht er weit weg, planst du
den Weg zu ihm über die Straßen, aus deinem Haus heraus und in seines
hinein. Bleibst du hängen, zieht die Leine dich nach; wer sich mit gedrückter
Taste zwei Sekunden lang nicht rührt, steht wieder auf der Straße. **F** noch einmal —
oder ein Schritt mit **WASD** — lässt ihn wieder los.
* Schilder tragen nur die Mission, der Fokus, der Verfolgte und wer unter der
Maus steht. Sonst überdecken sich im Café acht Namen.
* **Spuren in der Wohnung.** Von jeder Ursache liegt etwas in der Wohnung des
Menschen herum: das Handy auf dem Boden, der vollgeschriebene Kalender, leere
Dosen am Bett, ungeöffnete Briefe, der verstaubte Koffer. Geh hinein, sieh
hin, **E** liest die Spur. Die Ursache steht dann im Journal und ihre Stunden
werden in der Zeitleiste **verdächtig** — du weißt, wann du dabei sein musst.
* **R notieren.** Was den Traum aufhält, steht nirgends geschrieben. Du siehst
nur, was der Mensch tut, und musst selbst entscheiden: läuft hier etwas
schief? Triffst du den Moment, steht die Ursache im Journal und der Slot
wird bebaubar. Greifst du daneben, schaust du sechs Sekunden umsonst hin.
Zusehen allein deckt nichts auf — das Bemerken ist der Zug.
* Nah herangehen, **E** drücken, Technik wählen. Das Panel nennt für jede
Technik nur, ob Thema und Moment passen — keine Zahl.
* Wer mit Mission zur Erde reist, landet vor der Tür seines Ziels. Der Fußweg
quer durch den Bezirk war Leerlauf; das Gehen zählt in der Wohnung und beim
Folgen. Aus der Akte heraus bringt **Hinfahren** dich jederzeit dorthin.
* Die Säule im Park bringt dich zurück in die Traumwelt.
## Ob es gelingt
Ein System einzurichten ist kein Selbstläufer:
20 % + 13 % je Fertigkeitsstufe
− 25 % wenn der Mensch gerade abwehrt
begrenzt auf 5 … 95 %
Gelingt es, steht das System im Slot. Wie gut es trägt, entscheidet nicht der
Wurf, sondern die Passung: eine Ersatzhandlung mit **derselben Belohnung** wie
der Blocker — oder eine Technik, die ihm den Auslöser nimmt — hält deutlich
besser als eine, die nur den freien Platz füllt.
Im Moment einer Situation wird nicht gewürfelt. Entweder die Technik trifft das
Problem oder nicht. Jeder Einsatz sperrt die Technik für 30 Sekunden.
**Eine Technik wird nur besser, indem du sie anwendest.** Der Lehrort gibt sie
dir, mehr nicht: kein Üben, kein Trainieren, keine Währung, die man dagegen
eintauschen könnte. Ein Erfolg bringt 2 EP, ein Fehlversuch 1 — auch der zählt.
## Aufbau
project.godot Projekt, Autoload `Game`
scenes/main.tscn Einstieg
scripts/game.gd Zustand, Diagnose, Systeme, Momente, Tempo, Uhr (Autoload)
scripts/technique_db.gd die zwölf Techniken mit ihren Hinweisen
scripts/human_db.gd Bezirk: Arterien, Blöcke, roji, Parzellen, Menschen
scripts/dream_db.gd Traumdorf: wachsende Häuser, Wege, Bewohner, Lehrorte
scripts/netz.gd Wegenetz: Knoten, Kanten, Andocken, kürzester Weg
scripts/orte.gd Orte, Türen, Wege, Etagen, Treppenhaus (beide Welten)
scripts/bewohner.gd Bewohner mit Tagesablauf, Hut nach Beruf, Haltung nach Klemme
scripts/main.gd Weltenwechsel, Fokus, Interaktion
scripts/player.gd Geist: feste Kamera, Schwerkraft, Spur-Leine, Schleier, Funken
scripts/dream_world.gd Insel mit Dorf
scripts/earth_world.gd Stadt mit Stockwerken, Treppen, Etagenschnitt, Tag-Nacht-Wechsel
scripts/ursachen.gd Ursachen, blockierende Tätigkeiten, Belohnungen
scripts/probleme.gd Psychische Probleme und die Momente, in denen sie aufbrechen
scripts/woerter.gd Alltagswörter und was das Spiel daraus schließt
scripts/aushaenge.gd Eigene Aushänge: speichern, laden, prüfen
scripts/ui.gd HUD, Journal, Tagesablauf, Hörsaal, Brett, Panels
scripts/prims.gd Bausteine aus Primitiven, Etagenschnitt
## Prüfen
tests/run.sh # Parse-Vorlauf, dann die ganze Suite (Zeitraffer 8×)
tests/run.sh schnell # ohne die langen Simulationen, für den Loop
Der Parse-Vorlauf lädt nur alle Skripte: ein Parse-Fehler ließe die Suite
sonst bis zum Timeout hängen. Die Suite läuft mit `Engine.time_scale`, dazu
misst sie jeden Abschnitt und nennt am Ende die langsamsten. Jede `ERROR:`-
Zeile im Log lässt den Lauf durchfallen.
Mit Display laufen zusätzlich der **Rauchtest** (das echte Spiel samt eigener
Aushänge-Datei, ein paar Sekunden spielen, Log muss sauber sein) und die
**Flimmer-Probe** (stehende Szene, Kamera um Millimeter gerückt, Bilder
verglichen: deckungsgleiche Flächen fallen so auf). Der **Zufallslauf** in der
Suite läuft 90 Sekunden kreuz und quer durch die Stadt und prüft, dass der
Geist nie hängen bleibt, nie unter den Boden und nie über die Dächer gerät.
godot --path . tests/shots.tscn # 28 Screenshots nach user://shots/
`verify` fährt das echte Spiel: leeres Traumdorf, einziehende Wesen mit ihren
Tagesabläufen, gewachsenes Dorf und erzeugter Bezirk,
Häuser betreten, Journal in beiden Welten, im Hörsaal lernen,
Verbessern allein durchs Anwenden, Mission am Schwarzen Brett annehmen,
Ursachen benennen, Systeme bauen, Momente abfangen, Probleme überwinden,
Tempo messen, zur Erde reisen,
Tagesabläufe über einen ganzen Tag, Wirkung der Technikwahl, Cooldown,
verdeckte Erfolgschance, keine Passungshinweise,
Tempo und Nachtsprung,
nur lösbare Aushänge, Mission abschließen,
Insel wachsen lassen, Tastensteuerung. Beendet sich mit Code 1, wenn etwas
fehlt.
Mehrere Prüfungen messen statt zu behaupten. Über 24 Ausbaustufen darf sich kein
erzeugtes Gebäude mit einem anderen berühren und keines über den Inselrand
ragen; jeder Weg eines Bewohners muss in sein Zeitfenster passen — auch in
einem Dorf mit 24 Häusern und einer Stadt mit 27 Menschen. Und der erste Traum
muss mit dem einen Startweg allein zu schaffen sein: über fünf Zufallsläufe
vier bis acht Tage, ohne dass der Spieler eingreift. Ohne das hinge Loop 2
fest, denn ohne ersten Traum gibt es keine zweite Technik.