15 — Progression und Level-up #16

Closed
opened 2026-08-11 14:07:19 +00:00 by RDietermann · 1 comment
Owner

Teil der Map #1 · Type: wayfinder:grilling · Blocked by: #3 · graduiert aus #2

Was gewaehrt ein Aufstieg, ist die Kurve Daten oder Formel, woher kommt Erfahrung, bleibt die Obergrenze bei 50?

Volle Fragestellung (kanonisch): .scratch/rustkeep-1.0/issues/15-progression-und-levelup.md

Teil der Map #1 · **Type: `wayfinder:grilling`** · **Blocked by: #3** · graduiert aus #2 Was gewaehrt ein Aufstieg, ist die Kurve Daten oder Formel, woher kommt Erfahrung, bleibt die Obergrenze bei 50? Volle Fragestellung (kanonisch): `.scratch/rustkeep-1.0/issues/15-progression-und-levelup.md`
RDietermann added the wayfinder:grilling label 2026-08-11 14:07:19 +00:00
Author
Owner

Aufgeloest in 5faa5d6. Kanonische Fassung: .scratch/rustkeep-1.0/issues/15-progression-und-levelup.md

Dieses Ticket entscheidet Formen und Regeln — die konkreten Zahlen bleiben beim Balancing, das ein spielbares Spiel voraussetzt.

Ein Aufstieg gibt genau einen Punkt

Frei verteilbar auf die fuenf Grundwerte (strength, dexterity, constitution, charisma, luck). Abgeleitete Groessen bleiben ausgeschlossen — Punkte direkt auf damage zu setzen umginge das ganze Modifikatorsystem.

current_exp und unspent_points leben an Game, nicht am Creature — die Platzierung, die #8 ausdruecklich hierher delegiert hatte. base.level bleibt am Wesen (Gegner haben echte Level, die Etagen-Skalierung liest sie), aber Erfahrung hat nur der Held; ein Feld, das fuer 99% der Exemplare bedeutungslos ist, schriebe der Save fuer jeden Gegner mit.

AssignPoints ist ein Command mit allen Punkten auf einmal, also ein Zug. Einer je Punkt hiesse bei drei Stufen drei Zuege, in denen ein Gift-Debuff tickt, waehrend man ein Menue bedient. Kein Umverteilen — ein Permadeath-Lauf endet endgueltig.

Keine Obergrenze

clamp(1, 50) faellt ersatzlos. Fuenfzig Stufen ueber fuenf Etagen waeren bedeutungslos, und eine harte Grenze waere der einzige Teil der Progression, der einen spaeteren Endlosmodus blockierte. Die Kurve begrenzt sich ueber steigende Kosten: exp_base und exp_exponent in [balance], zwei Zahlen statt fuenfzig Tabellenzeilen.

Erfahrung aus Toetungen und Quests

exp_reward an der creatures-Registry plus give_exp als zehnte Aktion. Zwei Wege zum selben Ziel, nach demselben Muster, mit dem #2 armor als Kurzschreibweise zuliess: exp_reward ist die Kurzform fuer einen Todes-Trigger, den sonst jede Gegnerdefinition mitschleppen muesste — samt einer is_self-Pruefung, die es gar nicht gibt.

Keine Erfahrung fuers Betreten einer Etage — das belohnte das Durchrennen. Geprueft wird am Ende von Game::execute nach dem Leeren der Warteschlange, in einer Schleife: drei Stufen auf einmal geben drei Punkte.

Die Zuwachs-Regel bleibt eng

Steigt max_health durch Progression um 10, steigt der Lebensstand um 10 mit — nur durch Progression. #2 hatte gewarnt: "sonst heilt ein Ring beim Anlegen."

Genau zwei Stellen: der Aufstieg und AssignPoints. Letztere ist die unauffaellige — max_health steigt erst, wenn constitution tatsaechlich erhoeht wird, also beim Verteilen und nicht schon beim Aufstieg. Ausruestung nie. Der Unterschied ist die Dauerhaftigkeit.

Rasse und Klasse bleiben flach

per_level entfaellt ersatzlos — das beantwortet die Skalierungsfrage aus dem Ticketkoerper mit "gar nicht". Dass "Zwerg: +2 Konstitution" auf Level 30 Rauschen ist, ist gewollt: was Charakteroptionen traegt, sind Faehigkeiten, und die veralten nicht. #3 hat sie als "Modifikatoren und Faehigkeiten" definiert; der interessante Teil ist die zweite Haelfte.

level darf modifiziert werden

base.level ist die einzige Quelle fuer Punkte; attribute(wer, "level") darf durch Modifikatoren hoeher ausfallen und wird von Bedingungen, Formeln und Etagen-Skalierung gelesen. Ein +1 level-Ring macht dich also fuer alles, was Level liest, staerker — ohne einen Punkt zu schenken. Verbieten waere die Bevormundung, die #3 abgeraeumt hat.

Endlosrunner — neu aufgetaucht, bewusst hinter 1.0

In dieser Sitzung kam auf, dass das Fernziel ein Endlosrunner ist. Das beruehrt drei geschlossene Entscheidungen: die Siegbedingung aus #11, GameOver { outcome: Won } aus #15, und die floors-Registry mit einem Eintrag je Nummer — Etage 500 braeuchte eine Definition.

1.0 bleibt endlich. Endlos ist additiv: repeat = true an der letzten Etage plus eine Skalierungsformel. Als eigener Punkt in der Map vermerkt. Die fehlende Level-Obergrenze ist der Teil, der davon jetzt schon profitiert.

Vier Nachtraege

  • #2 (01): give_exp als zehnte Aktion; per_level ausdruecklich nicht
  • #8 (07): current_exp/unspent_points an Game
  • #12 (11): AssignPoints als dreizehnter Command
  • #15 (14): exp_base/exp_exponent in [balance], exp_reward an creatures. Ausdruecklich kein points_per_level — ein Punkt pro Level ist eine Regel, kein Stellknopf

Auflage an #17 (16 Loot)

Die Beute-Skalierung darf nicht gegen fuenf feste Etagen fest verdrahtet werden — der Endlosmodus kommt spaeter.

**Aufgeloest** in 5faa5d6. Kanonische Fassung: `.scratch/rustkeep-1.0/issues/15-progression-und-levelup.md` Dieses Ticket entscheidet **Formen und Regeln** — die konkreten Zahlen bleiben beim Balancing, das ein spielbares Spiel voraussetzt. ### Ein Aufstieg gibt genau einen Punkt Frei verteilbar auf die fuenf Grundwerte (`strength`, `dexterity`, `constitution`, `charisma`, `luck`). Abgeleitete Groessen bleiben ausgeschlossen — Punkte direkt auf `damage` zu setzen umginge das ganze Modifikatorsystem. **`current_exp` und `unspent_points` leben an `Game`, nicht am `Creature`** — die Platzierung, die #8 ausdruecklich hierher delegiert hatte. `base.level` bleibt am Wesen (Gegner haben echte Level, die Etagen-Skalierung liest sie), aber Erfahrung hat nur der Held; ein Feld, das fuer 99% der Exemplare bedeutungslos ist, schriebe der Save fuer jeden Gegner mit. `AssignPoints` ist **ein** Command mit allen Punkten auf einmal, also ein Zug. Einer je Punkt hiesse bei drei Stufen drei Zuege, in denen ein Gift-Debuff tickt, waehrend man ein Menue bedient. Kein Umverteilen — ein Permadeath-Lauf endet endgueltig. ### Keine Obergrenze `clamp(1, 50)` faellt ersatzlos. Fuenfzig Stufen ueber fuenf Etagen waeren bedeutungslos, und eine harte Grenze waere der einzige Teil der Progression, der einen spaeteren **Endlosmodus** blockierte. Die Kurve begrenzt sich ueber steigende Kosten: `exp_base` und `exp_exponent` in `[balance]`, zwei Zahlen statt fuenfzig Tabellenzeilen. ### Erfahrung aus Toetungen und Quests `exp_reward` an der `creatures`-Registry plus **`give_exp` als zehnte Aktion**. Zwei Wege zum selben Ziel, nach demselben Muster, mit dem #2 `armor` als Kurzschreibweise zuliess: `exp_reward` ist die Kurzform fuer einen Todes-Trigger, den sonst jede Gegnerdefinition mitschleppen muesste — samt einer `is_self`-Pruefung, die es gar nicht gibt. **Keine Erfahrung fuers Betreten einer Etage** — das belohnte das Durchrennen. Geprueft wird am Ende von `Game::execute` nach dem Leeren der Warteschlange, in einer **Schleife**: drei Stufen auf einmal geben drei Punkte. ### Die Zuwachs-Regel bleibt eng Steigt `max_health` durch Progression um 10, steigt der Lebensstand um 10 mit — **nur durch Progression**. #2 hatte gewarnt: *"sonst heilt ein Ring beim Anlegen."* Genau zwei Stellen: der Aufstieg und `AssignPoints`. Letztere ist die unauffaellige — `max_health` steigt erst, wenn `constitution` tatsaechlich erhoeht wird, also beim Verteilen und nicht schon beim Aufstieg. Ausruestung nie. Der Unterschied ist die Dauerhaftigkeit. ### Rasse und Klasse bleiben flach `per_level` **entfaellt ersatzlos** — das beantwortet die Skalierungsfrage aus dem Ticketkoerper mit "gar nicht". Dass "Zwerg: +2 Konstitution" auf Level 30 Rauschen ist, ist gewollt: was Charakteroptionen traegt, sind **Faehigkeiten**, und die veralten nicht. #3 hat sie als "Modifikatoren *und* Faehigkeiten" definiert; der interessante Teil ist die zweite Haelfte. ### `level` darf modifiziert werden `base.level` ist die **einzige** Quelle fuer Punkte; `attribute(wer, "level")` darf durch Modifikatoren hoeher ausfallen und wird von Bedingungen, Formeln und Etagen-Skalierung gelesen. Ein `+1 level`-Ring macht dich also fuer alles, was Level *liest*, staerker — ohne einen Punkt zu schenken. Verbieten waere die Bevormundung, die #3 abgeraeumt hat. ### Endlosrunner — neu aufgetaucht, bewusst hinter 1.0 In dieser Sitzung kam auf, dass das Fernziel ein **Endlosrunner** ist. Das beruehrt drei geschlossene Entscheidungen: die Siegbedingung aus #11, `GameOver { outcome: Won }` aus #15, und die `floors`-Registry mit einem Eintrag *je Nummer* — Etage 500 braeuchte eine Definition. **1.0 bleibt endlich.** Endlos ist additiv: `repeat = true` an der letzten Etage plus eine Skalierungsformel. Als eigener Punkt in der Map vermerkt. Die fehlende Level-Obergrenze ist der Teil, der davon jetzt schon profitiert. ### Vier Nachtraege - **#2 (01)**: `give_exp` als zehnte Aktion; `per_level` ausdruecklich *nicht* - **#8 (07)**: `current_exp`/`unspent_points` an `Game` - **#12 (11)**: `AssignPoints` als dreizehnter Command - **#15 (14)**: `exp_base`/`exp_exponent` in `[balance]`, `exp_reward` an `creatures`. Ausdruecklich **kein** `points_per_level` — ein Punkt pro Level ist eine Regel, kein Stellknopf ### Auflage an #17 (16 Loot) Die Beute-Skalierung darf **nicht gegen fuenf feste Etagen fest verdrahtet** werden — der Endlosmodus kommt spaeter.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RDietermann/rustkeep#16