7.9 KiB
7.9 KiB
CLAUDE.md – Ninelands für Reddit (Devvit)
Diese Datei lädt Claude Code in jeder Sitzung. Sie hält fest, was dieses Projekt ist, wie gearbeitet wird und wo wir stehen. Stand: 2026-11-13, frisch angelegt aus der Devvit-Vorlage Bare.
Projekt
- Ninelands auf Reddit: eine Basic-Version von Ninelands als Reddit-Spiel
(Devvit Web) für den Jam Reddit Game of the Day 2026 – https://redditgameofday2026.devpost.com/ (Regeln:
/rules). Besitzer: Lukas Müllner (StackTeam). Mit dem Besitzer Deutsch sprechen. - App-Name in
devvit.json:ninelands-game. Ordner:/data/Documents/projects/ninelands-game. - Repo:
git@git.stackteam.at:DieLustigeTierwesen/ninelands-reddit.git(Forgejo, privat, angelegt 2026-11-13). - Umfang und Phasen stehen in
PLAN.md(vereinbart 2026-11-13): 9×9, nur Englisch, Karte des Tages mit Bestenliste, Streak und Ergebniskarte, kein Menü/Footer. Spieldesign entscheidet weiterhin der Besitzer.
Woher Fragen beantwortet werden
- Das Hauptspiel (Regeln, Engine, Gestaltung): Repo
DieLustigeTierwesen/DokuHive, lokal/data/Documents/projects/hivedoku– dortREADME.md,hicedoku_plan.md(Entscheidungen „as built“), Leitfadenguide/chapters/. Bei Fragen zu Regeln oder Absicht dort nachlesen, nicht raten. - Allgemeiner Spiele-Blueprint (Arbeitsweise, Fallstricke, Releases): Repo
DieLustigeTierwesen/game-blueprint, lokal/data/Documents/projects/game-blueprint/AGENT.md. Erkenntnisse, die für künftige Spiele gelten (z. B. „wie baut man ein Devvit-Spiel“), dort nachtragen.
Grenzen zum Hauptspiel
- In
/data/Documents/projects/hivedokunichts ändern, committen oder pushen. Jeder Push auf dessenmaindeployt die Live-Seite; Releases dort (itch, Desktop, Android) laufen übernpm run releaseund gehören nicht zu diesem Projekt. - Die Engine von Ninelands (
hivedoku/src/core, reines TypeScript ohne DOM/Server, seeded RNG,applyMove,legalMoves, Replay) darf übernommen werden – als Kopie mit festem Stand (z. B. Sync-Skript, dassrc/corevon einem Ninelands-Tag holt und den Tag notiert). Die Kopie hier nicht von Hand ändern; Änderungen an der Engine gehören ins Hauptspiel. Achtung:src/coreimportiert JSON aus../campaign/und../puzzles/– nur mitnehmen, was die Basic-Version braucht. - Lizenz: GPL-3.0 (entschieden 2026-11-13). Das Gerüst der Vorlage bleibt BSD-3-Clause (
LICENSE-TEMPLATE.md). Fremd-Assets mit Nachweis inCREDITS.md: Musik CC BY-SA 4.0 (Nennung im Spiel nötig), Sprites CC0.
Jam – Regeln (Stand 2026-11-13)
Quelle: Übersichtsseite, vom Besitzer kopiert nach rules/ (lokal, in .gitignore). Devpost blockt automatische
Abrufe (403).
- Abgabe: 9. Dezember 2026, 03:00 MEZ (Jam 11. Nov. bis 8. Dez.).
- Aufgabe: ein Daily Game auf Devvit Web (Interactive Posts): kurzer täglicher Ablauf, frische Inhalte (tägliche Challenges, Rätsel, Karten), leicht zu lernen, wiederspielbar.
- Portierung erlaubt: eigene Kategorie „Best Ported Daily Game“ (6.000 $). Das Original (die IP) muss man selbst besitzen; bei der Einreichung angeben, dass es eine Portierung ist.
- Einreichung: App-Listing auf developers.reddit.com und Demo-Post (Link zu einem Subreddit mit öffentlichem Post, in dem das Spiel läuft – danach wird bewertet, also selbsterklärend machen). Optional: Feedback-Umfrage. Kein Repo-Link, kein Video verlangt.
- Nicht veröffentlichen (
devvit publish/ App Review): hochladen und playtesten reicht, die App darf privat bleiben. - Bewertung: Delightful UX, Polish (nahe an Veröffentlichungsqualität, Devvit-Regeln einhalten), „Reddit-y“ (Gemeinschaft, eigene Identität), Daily Content.
- Pluspunkte: schneller Einstieg ohne Textwände, klare eigene Optik, Startbildschirm mit Name/Datum/Statistik, Ergebniskarte am Ende (Statistik, Streak, Kommentar, Abo-Hinweis), Devvit Journeys für Ereignisse, Bestenliste und Streaks; Reddit-Funktionen wie Flair, Kommentare, Snoovatare.
- Nicht gewollt: offensichtliche „KI-Optik“ (KI-Nutzung ist erlaubt), Reddit-Klischees als Thema, bekannte Spielideen ohne eigenen Dreh, Spiele, die nicht auf Reddit laufen.
- Noch offen (offizielle Regeln
/rulesfehlen, die Datei inrules/ist leer): Teilnahmebedingungen (Land, Alter, Steuern), Rechte an der Einreichung, Lizenzvorgaben, Regeln zu Fremdcode.
Technik (Vorlage Bare)
- Devvit Web: Client
src/client/(Splashsplash.ts→public/splash.html, Spielgame.ts→public/game.html), Serversrc/server/(index.ts,server.ts, Speicherdb.ts), gemeinsame Typensrc/shared/api.ts. Gebaut mit esbuild nachpublic/unddist/server/. - Werkzeuge der Vorlage beibehalten: Biome (Lint + Format,
npm run lint/npm run format) statt Prettier, Tests mitnode --test(*.test.ts), Typprüfungtsc --build. - Befehle:
npm run test(Typen, Lint, Unit-Tests, Build – das ist die Prüfung vor jedem Merge),npm run playtest [r/sub](baut, lädt hoch, installiert im Test-Subreddit),npm run publish(lädt hoch und stellt einen Review-Antrag bei Reddit – nur nach Rückfrage beim Besitzer). - Node 24 über nvm (global ist 20): Befehle mit
source ~/.nvm/nvm.sh && nvm use 24 >/dev/null &&beginnen. - Kein eigener Server, keine eigene Datenbank, keine eigenen Konten: Spieler sind Reddit-Nutzer, gespeichert wird über Devvit (Redis). Externe Netzaufrufe sind bei Devvit eingeschränkt – vor jeder Idee, die das Ninelands-Backend anspricht, in der Devvit-Doku prüfen (https://developers.reddit.com/docs).
- Aktuelle Devvit-Doku lesen, bevor etwas gebaut wird – die Plattform ändert sich schnell; nicht aus dem Gedächtnis arbeiten.
.github/workflows/ci.yamlstammt aus der Vorlage. Forgejo führt.github/workflowsaus, wenn es kein.forgejo/workflowsgibt;runs-on: ubuntu-latestist der gemeinsame Hetzner-Runner (fürnpm run testreicht er).
Arbeitsweise
- Ein Branch pro Änderung (
feat/…,fix/…,chore/…), auch für Doku. - Merge nur, wenn
npm run testmit Exit-Code 0 endet. Ausgabe in eine Log-Datei, dann$?prüfen – nie mit| grep … &&oder;verketten. Muster:npm run test > log 2>&1; code=$?; if [ $code -eq 0 ]; then … merge; fi. git merge --no-ff, Branch löschen,mainpushen (sobald ein Remote existiert), im Bericht erwähnen.- Conventional Commits; Ende jeder Nachricht:
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>. - Code-Kommentare auf Deutsch.
- Größere Entscheidungen und Fallstricke in
PLAN.md(Abschnitt „as built“, Deutsch) festhalten; am Ende eines Schritts Erkenntnisse von sich aus nennen. - Innerhalb eines vereinbarten Plans selbstständig weitermachen; anhalten bei Spieldesign, Geschmack, externen Konten,
Geld, Lizenz und allem, was öffentlich wird (
devvit publish, Posts in echten Subreddits). - Kein Geld ausgeben.
Geheimnisse – nie ausgeben, nie committen
- Devvit-Token
~/.devvit/token(Reddit-Anmeldung des Besitzers): nie lesen, ausgeben oder kopieren; diedevvit-Befehle nutzen ihn selbst. - Forgejo-Token
~/.config/forgejo-token: nur innerhalb von Befehlen lesen. - Nutzer sollen nie Schlüssel in den Chat kopieren.
Stand (2026-11-13)
- Vorlage Bare committet, Repo
DieLustigeTierwesen/ninelands-redditangelegt,maingepusht. Lint der Vorlage repariert (Biome-Schema 2.6.4 → 2.6.6,package.jsonohne Schlusszeilenumbruch);npm run testlokal grün. - CI: Die
parallel:-Stufe der Vorlage ersetzt (Forgejo-Runner v13: „Invalid run/uses syntax“), Schritte laufen nacheinander. PLAN.mdangelegt, Lizenz auf GPL-3.0 umgestellt.- Nächste Schritte: offene Fragen in
PLAN.mdklären, dann Phase 0 (Sync-Skript, Engine, Assets). - Noch fehlend: offizielle Jam-Regeln (
/rules).
Diese Datei bei neuen Arbeitsregeln und Entscheidungen aktualisieren.