111 lines
6.9 KiB
Markdown
111 lines
6.9 KiB
Markdown
# PLAN – Ninelands für Reddit
|
||
|
||
Basic-Version von Ninelands als tägliches Reddit-Spiel (Devvit Web) für den Jam **Reddit Game of the Day 2026**.
|
||
Abgabe: **9. Dezember 2026, 03:00 MEZ**. Eingereicht wird in „Best Daily Game“ und als Portierung in
|
||
„Best Ported Daily Game“.
|
||
|
||
## Entscheidungen des Besitzers (2026-11-13)
|
||
|
||
- **Nur 9×9**, **nur Englisch**.
|
||
- **Das Spiel steht im Vordergrund:** kein Menü, kein Footer, kein Feedback-Knopf. Ausnahmen sind ein schlanker
|
||
Startbildschirm (Name, Datum, eigene Statistik/Streak) und eine Ergebniskarte am Ende. Beides ist Teil des Spiels
|
||
und wird von der Jury ausdrücklich verlangt.
|
||
- **Kern: Karte des Tages mit Bestenliste.** PvP höchstens später als KI-Duell-Bonus (wenig Spieler gleichzeitig
|
||
online, viel Aufwand, kostet Polish).
|
||
- **Freischaltbares:** Themen und Banner aus dem Hauptspiel, gekoppelt an Streak und Sterne statt an Herrscher-Stufen.
|
||
- **Lizenz GPL-3.0** (Besitzer ist alleiniger Urheber der Engine). Das Gerüst der Devvit-Vorlage bleibt BSD-3-Clause
|
||
(`LICENSE-TEMPLATE.md`).
|
||
- **Musik ja**, mit einer kleinen Credits-Stelle (CC BY-SA 4.0 verlangt die Nennung). Alle Sprites stammen aus
|
||
„Mini World Sprites“ (CC0). Nachweise in `CREDITS.md`.
|
||
|
||
## Phase 0 – Grundlagen
|
||
|
||
1. Sync-Skript `scripts/sync-engine.sh`: holt `src/core` von einem festen Ninelands-Tag (Vorschlag: `v0.11.0`) nach
|
||
`src/engine/` und notiert den Tag in `src/engine/VERSION`. Die Kopie wird nie von Hand geändert. Die Campaign- und
|
||
Puzzle-JSONs nur mitnehmen, wenn der Import sonst bricht. Besser: prüfen, ob esbuild sie per Tree-Shaking weglässt.
|
||
2. Prüfen, ob die Engine mit TypeScript 7, Biome und esbuild der Vorlage baut. `src/engine/` von Biome ausnehmen,
|
||
denn fremde Formatierung soll nicht zu Änderungen an der Kopie zwingen.
|
||
3. Assets übernehmen: die Tile-Sprites, die das 9×9-Spiel braucht, sowie die Themen und Banner für Phase 2. Bei der
|
||
Musik auf die App-Größe achten: das Hauptspiel hat 21 MB (6 Titel, Opus + MP3). Vermutlich nur 1–2 Titel und nur
|
||
ein Format. Das Größenlimit von Devvit vorher in der Doku prüfen.
|
||
|
||
## Phase 1 – Kern (Tagesrätsel)
|
||
|
||
1. **Tagespost:** Ein Scheduler-Job legt jeden Tag um 00:00 UTC einen neuen Post an („Ninelands #N – <Datum>“).
|
||
Jeder Tag bekommt so eigene Kommentare, in denen über die Karte diskutiert wird.
|
||
2. **Tageskarte:** Seed aus dem Datum, 9×9, mit den drei Sternzielen wie im Hauptspiel (★ Gold, ★ Länder, ★ beides),
|
||
berechnet aus Bot-Partien auf derselben Karte.
|
||
3. **Spiel:** Brett im Post, Ziele-Zeile live, Rückgängig wie im Hauptspiel.
|
||
4. **Abgabe und Prüfung:** Der Client schickt die Züge, der Server spielt sie mit derselben Engine nach und speichert
|
||
nur selbst berechnetes Gold (wie im Hauptspiel). So kann niemand die Bestenliste mit erfundenen Werten fälschen.
|
||
5. **Bestenliste** je Tag in Redis (Sorted Set): Sortierung wie bei den Ninelands-Ranglisten, also **Sterne ↓,
|
||
Gold ↓, früher abgegeben zuerst**. Gewertet wird nur der erste Versuch; danach darf man weiterspielen, das zählt
|
||
aber nicht. _Entscheidung Besitzer._
|
||
6. **Streak:** aufeinanderfolgende Tage mit gespielter Tageskarte.
|
||
7. **Startbildschirm:** Name, Nummer und Datum, eigene Streak, „Play“.
|
||
8. **Ergebniskarte:** Sterne, Gold, Länder, Platz, Streak, Teilen-Zeile (`Ninelands #N ★★☆ · 9/9 lands · 85 gold`)
|
||
und der Anstoß, sie in die Kommentare zu posten.
|
||
9. **Devvit Journeys:** Ereignisse für Start, Abgabe und Streak (Jury-Kriterium).
|
||
10. **Credits:** ein kleines „ⓘ“ auf dem Startbildschirm mit Musik- und Sprite-Nachweis.
|
||
11. **Erstes Spielen:** Hinweise im Zusammenhang statt Textwand (Jury-Kriterium „Intuitive Onboarding“).
|
||
|
||
## Phase 2 – Wiederkommen
|
||
|
||
1. Themen freischalten über die Streak (z. B. 3 / 7 / 14 Tage), Banner über gesammelte Sterne. Die Auswahl erfolgt
|
||
direkt auf dem Startbildschirm, ohne eigenes Menü.
|
||
2. **User-Flair** im Subreddit (z. B. „🔥 12-day streak“, Tagessieger). Vorher in der Doku prüfen, wie Devvit Web
|
||
Flair setzt.
|
||
3. Winter- bzw. Winterfest-Thema passend zur Bewertung im Dezember.
|
||
|
||
## Phase 3 – optional
|
||
|
||
- KI-Duell gegen den Computer als Bonus nach dem Tagesrätsel. Nur, wenn Phase 1 und 2 poliert sind.
|
||
|
||
## Phase 4 – Einreichung (alles nach Rückfrage beim Besitzer)
|
||
|
||
- Eigenes Subreddit für das Spiel; öffentlicher Demo-Post (der einzige öffentliche Schritt).
|
||
- App-Listing auf developers.reddit.com (Upload, **kein** `devvit publish`).
|
||
- Auf Devpost angeben, dass es eine Portierung ist, und erklären, was seit dem 11. Nov. neu entstanden ist (Pflicht
|
||
für bestehende Projekte); optional die Feedback-Umfrage.
|
||
- **`README.md` (Englisch) ersetzen:** Spiel und Spielanleitung – Pflicht laut offiziellen Regeln.
|
||
- Subreddit öffentlich (oder „Restricted“: lesbar für alle) und < 200 Mitglieder.
|
||
- Video (< 1 min) und Screenshots für die Beschreibung – die Jury darf allein danach urteilen.
|
||
- **Bewertung 9.–16. Dez.:** Tagesposts müssen weiterlaufen; in der Zeit keine riskanten Uploads.
|
||
|
||
## Grober Zeitplan
|
||
|
||
| Bis | Was |
|
||
| :------- | :--------------------------------- |
|
||
| 16. Nov. | Phase 0 |
|
||
| 29. Nov. | Phase 1 spielbar im Test-Subreddit |
|
||
| 4. Dez. | Phase 2, Polish |
|
||
| 8. Dez. | Puffer, Demo-Post, Einreichung |
|
||
|
||
## Weitere Entscheidungen (2026-11-13)
|
||
|
||
- **Eigener Seed für Reddit** (Präfix ungleich `hivedoku-daily-`): Sonst wäre die Tageskarte dieselbe wie auf der
|
||
Website, und „Watch the best game“ dort verriete die Lösung.
|
||
- **Nur der erste Versuch zählt** für die Bestenliste; Weiterspielen ist erlaubt, wird aber nicht gewertet.
|
||
- **Subreddit:** Entwickelt wird im Test-Subreddit, das `devvit playtest` selbst anlegt. `r/Ninelands` (falls frei)
|
||
legt der Besitzer erst für den Demo-Post an. Hochgeladene, nicht veröffentlichte Apps lassen sich nur in Subreddits
|
||
mit < 200 Mitgliedern installieren – für die Jam-Demo reicht das.
|
||
|
||
## Risiken
|
||
|
||
- Devvit ändert sich schnell: Scheduler, Redis, Flair und Journeys vor dem Bauen in der aktuellen Doku lesen
|
||
(`https://developers.reddit.com/docs/llms.txt`, die Seiten gibt es als `.md`, per `curl` abrufbar).
|
||
- App-Größe durch die Musik.
|
||
- Die Engine kennt viele Modi (Kampagne, Puzzles, Duell). Unnötiges darf nicht ins Bundle wandern
|
||
(Metafile von esbuild prüfen).
|
||
|
||
## As built
|
||
|
||
### 2026-11-13 – Repo, CI, Lizenz
|
||
|
||
- Repo `DieLustigeTierwesen/ninelands-reddit` (privat) angelegt.
|
||
- CI: Die `parallel:`-Stufe der Vorlage kennt der Forgejo-Runner nicht („Invalid run/uses syntax“). Ersetzt durch
|
||
einzelne Schritte nacheinander.
|
||
- Lint der Vorlage war rot: Das Biome-Schema 2.6.4 passte nicht zur installierten CLI 2.6.6, und `package.json` hatte
|
||
keinen Zeilenumbruch am Ende.
|
||
- Lizenz auf GPL-3.0 umgestellt (`LICENSE` aus dem Hauptspiel, `package.json` → `GPL-3.0-only`). Der BSD-Text der
|
||
Vorlage bleibt als `LICENSE-TEMPLATE.md`, denn BSD verlangt, dass der Hinweis erhalten bleibt. `CREDITS.md` angelegt.
|