# SLUDGEBOWL – Stilrichtung „NEONSCHLAMM"
### Fantasy × Cyberpunk, und warum die Mischung eine Bedeutung hat

---

## 1. Die Grundidee

Ein Fantasy-Cyberpunk-Mix scheitert fast immer daran, dass er dekorativ ist: man klebt Neon an
Orks und nennt es einen Stil. Das sieht sofort zusammengeschustert aus, weil die beiden Hälften
nichts miteinander zu tun haben.

**Bei SLUDGEBOWL haben sie einen Konflikt miteinander. Das ist der ganze Trick:**

> **Die Kreaturen sind uralt. Das Geld ist neu.**
> Der Sport auf Ghould ist ein tribales Ritual aus Schlamm, Knochen und einem lebenden Ball.
> Dann kamen die Konzerne, kauften die Ligen und schraubten ihre Technik obendrauf.
> Das Neon gehört nicht den Kreaturen. Es wurde ihnen aufgezwungen.

Daraus folgt jede einzelne visuelle Regel von selbst.

### Die fünf Gesetze

**1. Die Körper bleiben Fantasy.**
Trolle, Orks, Echsen. Fleisch, Knochen, Leder, Schlamm. Kein Chrom um des Chroms willen, keine
Neon-Ganzkörperanzüge, keine glatten Oberflächen. Wer die Rasse nicht erkennt, hat verloren.

**2. Technik ist Prothese, nicht Rüstung.**
Cybernetik existiert, weil im letzten Spiel ein Arm abgebissen wurde. Sie ist **hydraulisch,
rostig, undicht und schlecht montiert** — mit Bolzen in lebendes Fleisch geschraubt, Schläuche mit
Lederriemen fixiert. Ein Troll mit Hydraulikarm ist ein Krüppel mit Ersatzteil, kein Cyborg-Held.

**3. Neon ist Beschilderung, kein Licht-Design.**
Neon erscheint ausschließlich als **Fremdkörper mit Absender**: Sponsorentafeln, Werbe-Hologramme
über dem Schlamm, flackernde Anzeigetafeln, Firmenlogos auf Prothesen, ein Barcode am Halsband des
Flonks. Nie als atmosphärische Beleuchtung „weil Cyberpunk".

**4. Warm von unten, kalt von oben.**
Das ist die **visuelle Signatur** des Spiels und die wichtigste Einzelregel:

| Quelle | Richtung | Farbe | Bedeutung |
|---|---|---|---|
| **Warm** | von unten / seitlich | Orange | die alte Welt: Fackeln, Kohlebecken, Brand |
| **Kalt** | von oben | Blaugrau bis Cyan | die neue Welt — oder schlicht der Himmel |

Jedes Sprite, jede Kachel, jedes UI-Element wird **warm von unten und kalt von oben** beleuchtet.
Ein konsequent durchgehaltenes Lichtmodell bindet heterogene Assets stärker zusammen als jede
Farbliste.

**Wichtige Präzisierung zu Regel 3:** Das kalte Oberlicht ist keine Ausnahme vom Neon-Verbot,
weil es **nicht zwingend Neon ist**. In der Schlammliga ist die kalte Lichtquelle der offene
Himmel — entsättigtes Blaugrau (`#4d5560`-Bereich), kein Cyan. Erst mit steigender Division
*wird* das Oberlicht zu Neon, weil dann tatsächlich Flutlicht und Holo-Tafeln darüber hängen.
Die Lichtrichtung bleibt konstant, die Lichtfarbe wandert von Blaugrau nach Cyan. Damit
widersprechen sich Regel 3 und 4 nicht mehr: Neon hat immer einen sichtbaren Absender, das
kalte Oberlicht aber nicht immer Neon zu sein.

**5. Neon-Menge folgt der Division.**
Das ist eine **Art-Direction-Regel, keine Spielmechanik** — die Unterscheidung ist wichtig:

| Division | Neon-Anteil | Kaltes Oberlicht | Wirkung |
|---|---|---|---|
| **Schlammliga** | fast null | Blaugrau (Himmel) | Fackeln, handgemalte Bretter, Dreck. Kalt und arm. |
| **Knochenliga** | vereinzelt | Blaugrau + erste Cyan-Akzente | erste Sponsorentafeln, ein flackerndes Display |
| **Goldene Kessel** | erdrückend | volles Cyan-Flutlicht | Holo-Werbung über dem Feld, Drohnenkameras |

Der Spieler *sieht* seinen Aufstieg, bevor er ihn liest. Der Aufstieg fühlt sich nicht nur nach
Erfolg an, sondern auch nach Verlust.

Damit daraus eine echte Mechanik statt nur Stimmung wird, fehlt noch: ein Sponsoring-Wert, der
sich aus Ligahöhe und Spektakel-Wert speist, sichtbare Schwellen, und eine spielerische
Konsequenz (z. B. Sponsorengelder gegen Auflagen, oder Neon-Blendung als Nachteil bei
Nachtspielen). Bis das definiert ist, ist Regel 5 ehrlicherweise Art Direction.

### In drei Wörtern
**dreckig · verkauft · zäh**

### Was der Stil ausdrücklich NICHT ist
Kein Blade Runner. Kein Synthwave. Kein sauberes Purple-Cyan-Gradient. Kein Chrom-Ork.
Das Bild ist zu 85 % braun, nass und dunkel — die 15 % Neon wirken nur, *weil* der Rest so
schmutzig ist.

---

## 2. Palette

**48 Farben**, streng gegliedert. Der Anteil ist Absicht: Neon ist knapp und deshalb laut.

| Rampe | Stufen | Anteil im Bild | Werte (Anker) |
|---|---|---|---|
| **Schlamm** | 8 | ~40 % | `#241a14` → `#4a3524` → `#7a5a35` → `#a8813f` |
| **Fleisch** | 8 | ~15 % | `#3d5240` → `#6b8f52` → `#9fb26a` (grün) / `#8a5f4a` (rot-braun) |
| **Knochen** | 6 | ~10 % | `#2e2a26` → `#8a8073` → `#d8cdb4` (nie reines Weiß) |
| **Rost & Eisen** | 8 | ~15 % | `#2a2f36` → `#4d5560` → `#7d6b52` → `#a8562e` (Rost) |
| **Feuer (warm)** | 5 | ~10 % | `#7a2f14` → `#c25a1e` → `#f09a35` → `#ffd98a` |
| **Neon Cyan** | 5 | ~7 % | `#0d3d47` → `#1e8a99` → `#2ff3e0` → `#c8fff8` |
| **Neon Magenta** | 4 | ~3 % | `#4a0f2e` → `#c01f6a` → `#ff2e88` → `#ffb3d4` |
| **Blut/Team** | 4 | Akzent | `#6e1414` + 3 Trikotfarben |

**Regeln:**
- **Kein reines Schwarz, kein reines Weiß.** Dunkelster Wert `#160f0c`, hellster `#ffe9d6`.
- Neon-Farben sind **niemals Flächenfarbe** — nur Kanten, Glühen, Displays, Logos.
- Die beiden Neontöne **schließen sich pro Team aus**: Cyan-Team vs. Magenta-Team. Damit ist die
  Zugehörigkeit im Getümmel auch bei 24 px Sprites eindeutig, ohne Trikots lesen zu müssen.

---

## 3. Größenverhältnisse

### Auflösung & Skalierung

| Parameter | Wert | Begründung |
|---|---|---|
| **Interne Auflösung** | **640 × 360** | ×3 = 1920×1080 exakt, ×2 = 1280×720 exakt, Steam Deck (1280×800) ×2 mit 40 px Letterbox oben/unten |
| **Kachelgröße** | **32 × 32 px** | PixelLab-nativ; 20 × 11,25 Kacheln pro Bildschirm |
| **Kamera** | **low top-down (~20°)** | Bodenlesbarkeit *und* stehende Figuren. **Gilt für ALLE Assets — Charaktere, Objekte, Kacheln.** Eine einzige Perspektive ist die zweitwichtigste Kohärenzregel nach dem Licht. |

*Änderung gegenüber der ersten Art Bible: 480×270 → 640×360. Grund: Ein Rugbyfeld braucht Breite.
Bei 480 px sieht man zu wenig Feld, um taktisch zu spielen.*

### Sprite-Höhen (alles Vielfache/Teiler von 32)

| Element | Größe | Verhältnis zur Kachel | Rassen |
|---|---|---|---|
| **Flonk** | 24 × 24 | 0,75 | — |
| **Körpertyp klein** | 32 × 32 | 1,0 | Grutz, Skarr, Harpyie, Chitt |
| **Körpertyp mittel** | 48 × 48 | 1,5 | Grokk, Durn, Ghul, Mensch, Dämonblut |
| **Körpertyp massiv** | 64 × 64 | 2,0 | Troll, Skorn, Oger |
| **Plott (Tor)** | 64 × 64 | 2×2 Kacheln | — |
| **Porträt (Menü)** | 64 × 64 | — | alle |

Der Troll ist damit **doppelt so hoch wie ein Grutz**. Das ist bewusst extrem: Größenunterschied
ist bei 32-px-Sprites das stärkste verfügbare Lesbarkeitsmittel, stärker als Farbe oder Form.

### Feldmaße

```
36 Kacheln breit  ×  16 Kacheln hoch   =   1152 × 512 px
├─ Angriffszone A: 10 ─┤├─ Niemandsland: 16 ─┤├─ Angriffszone B: 10 ─┤
   davon Graben: 2 Kacheln direkt vor jedem Plott
```

Sichtbar sind bei 640×360 rund **56 % der Feldbreite** → die Kamera scrollt weich mit dem
**aktiven Spieler** (nicht mit dem Flonk — das wurde im Demo bewusst so entschieden, weil sonst
die eigene Figur aus dem Bild läuft), Minimap unten rechts gibt die Übersicht. Kein statisches Vollbild-Feld: Das Original war
übersichtlich, aber leblos — Mitscrollen erzeugt Druck.

---

## 4. Screen-Aufbau

### Match-HUD (640 × 360)

```
┌────────────────────────────────────────────────────────────────┐ y=0
│ ┌──────┐        ╔═══════════════════════╗            ┌──────┐  │
│ │FLONK │        ║  4 : 3    ▮▮▮▯▯  2:14 ║            │ ●REC │  │ 28px
│ │ ◕ 71 │        ╚═══════════════════════╝            └──────┘  │
│ └──────┘         Neon-Holotafel, schwebt                       │
├────────────────────────────────────────────────────────────────┤ y=28
│                                                                │
│                                                                │
│                      S P I E L F E L D                         │
│                   (scrollend, kein Chrome)                     │ 304px
│                                                                │
│                                                                │
├────────────────────────────────────────────────────────────────┤ y=332
│ ┌──┐ GRUBNAK  ▰▰▰▰▰▰▱▱  ⚠2                    ┌──────────────┐ │
│ │▓▓│ Troll · #7  Ausdauer                     │ ▪ ▪  ◈   ▪▪  │ │ 28px
│ └──┘                                          └──────────────┘ │
└────────────────────────────────────────────────────────────────┘ y=360
   Aktiver Spieler (links)                       Minimap (96×44)
```

**Prinzip:** 56 px Chrome insgesamt (15,5 %), 304 px reines Spielfeld. Das Getümmel *ist* die
Information — jedes zusätzliche HUD-Element müsste sich rechtfertigen.

- **Flonk-Laune** oben links, permanent sichtbar. Der Flonk darf nie unangekündigt eskalieren,
  sonst wird das System frustrierend statt witzig.
- **Anzeigetafel** als schwebendes Neon-Hologramm — in der Schlammliga ist es ein schiefes
  Holzbrett mit Kreidezahlen. Gleicher Platz, anderes Asset, sofort spürbarer Statusunterschied.
- **Ausdauer** nur beim aktiven Spieler, nicht über allen Köpfen.
- Fouls/Warnungen als kurze Bauchbinde über dem Feld, nie als Dauerelement.

### Management-Screen (640 × 360)

```
┌──────────────┬───────────────────────────────┬─────────────────┐
│ KADER        │  ┌────┐  GRUBNAK              │  GHOLDINZ       │
│              │  │    │  Troll · Massiv · #7  │  ▸ 2.840 Gh     │
│ ▸ Grubnak  ⚠ │  │ 64 │                       │  ▸ Schulden     │
│   Skreel     │  │px  │  STR ████████░░  8    │    1.200 (▲12%) │
│   Vatch    ✝ │  └────┘  TOU ███████░░░  7    ├─────────────────┤
│   Morrn      │          SPD ███░░░░░░░  3    │  SPIELTAG 9/18  │
│   Krukk      │  Narben: Metallkiefer,        │  vs. Tzarn Rott │
│              │          fehlendes Auge       │  ▸ Rivalität    │
│  144px       │          210px                │   146px         │
└──────────────┴───────────────────────────────┴─────────────────┘
```

Drei Spalten, feste Breiten, kein Scrollen in der Mittelspalte. Alles Wichtige auf einen Blick —
gegen den größten Schwachpunkt des Originals (ständige Menü-Ladevorgänge).

### UI-Materialsprache
Geschnitztes Holz und Knochen als Rahmen, **darübergeklebt** billiges Konzern-Interface: dünne
Cyan-Linien, Scanline-Flimmern, ein Sponsorenlogo in der Ecke, das man nicht wegklicken kann.
Auch hier: das Alte trägt, das Neue klebt drauf.

---

## 5. Kacheln & Feldaufbau

**Wang-Tileset mit Eck-Autotiling** (16 bzw. 25 Kacheln), Ebenen von unten nach oben:

| Ebene | Inhalt | Technik |
|---|---|---|
| 0 | Grundboden: trockener Ocker-Schlamm ↔ nasser dunkler Schlamm | Wang-Tileset, 32 px |
| 1 | Nässe-Overlay, wächst über die Spielzeit und bei Regen | zweites Wang-Set, alpha-geblendet |
| 2 | Persistente Schleifspuren und Blutflecken | Decals zur Laufzeit, Render-Target |
| 3 | Zonenmarkierungen aus Knochen | Einzel-Sprites, nicht gekachelt |
| 4 | Graben + Wasser | eigenes Tileset, animiert (4 Frames) |
| 5 | Objekte: Plott, Fackeln, Sponsorentafeln | 8-Richtungs-Objekte |
| 6 | Charaktere + Flonk | Y-sortiert |
| 7 | Neon-Glühen, Regen, Partikel | additiv geblendet |

**Kachel-Ketten:** PixelLab kann Tilesets über `lower_base_tile_id` verketten. Reihenfolge, damit
alle Übergänge zueinander passen:
`nasser Schlamm → trockener Schlamm → Grabenrand → Wasser → Steinsockel`
Jedes Set nutzt die Basis-Kachel des vorherigen. So gibt es keinen einzigen harten Bruch im Boden.

---

## 6. Produktionsregeln für Asset-Generierung

Das ist der operative Teil — **so entsteht Kohärenz technisch**, nicht durch guten Willen:

1. **Ein Stil-Anker.** Ein einziger Charakter wird in höchster Qualität erzeugt und ist ab dann
   die Referenz. Alle weiteren Charaktere: `mode="pro"` + `style_character_id=<Anker>`.
2. **Ein Objekt-Anker.** Analog über `style_object_id`.
3. **UI erbt vom Anker** über `style_image_base64` mit dem Anker-Sprite.
4. **Kachel-Ketten** über `lower_base_tile_id` (siehe oben).
5. **Perspektive ist gesperrt:** `view="low top-down"` bei *jedem* Aufruf, ohne Ausnahme.
6. **Der Prompt-Stamm ist gesperrt.** Jede Charakterbeschreibung endet mit demselben Block:

   > *„…mud-caked bone and cracked leather armour, one rusty bolted-on hydraulic cybernetic
   > prosthetic, small amber sponsor tag, muted mud-brown ochre and bone palette, warm orange
   > underlight from below and cold blue-grey rim light from above, grimy and scarred"*

   Variiert wird nur der vordere, rassenspezifische Teil.

   **Achtung — der Stamm wurde korrigiert.** Ursprünglich stand hier ein *cyanfarbenes*
   Sponsorenschild und ein *cyanfarbenes* Randlicht. Das kollidierte mit Abschnitt 2, wo Cyan und
   Magenta einander pro Team ausschließen sollen: ein Cyan-Detail an *jedem* Charakter hätte
   Magenta als Teamkennung entwertet. Teamfarbe sitzt ausschließlich in der
   **Hydraulikflüssigkeit der Prothese**, alles andere Neon am Körper ist neutral (Amber).
   Der bereits erzeugte Stil-Anker trägt noch das alte cyanfarbene Detail und müsste bei einer
   Neuerzeugung angeglichen werden.
7. **Nachbearbeitung ist Pflicht:** Jedes fertige Asset läuft durch `tools/pixelize.py` gegen die
   Projektpalette. Erst danach gilt es als Asset, vorher ist es ein Vorschlag.
