Who? · Devlog

Tag 1 · Dienstag, 28. April 2026

Tag 1 — Das Spiel hat einen Raum

Cantina, fünf Stammgäste und ein verhüllter Fremder am Tor

Spieler-Sicht

Heute Nacht ist das Spiel geboren. Aus einem leeren Repo wird ein begehbarer Raum: die Cantina. Du steuerst eine kleine Pixel-Figur über einen Holzboden, an einer Bar vorbei, zu fünf Stammgästen, die jede Nacht hier sitzen — und zu einer verhüllten Gestalt am Eingang, die du ansprechen kannst, um zu raten, wer sie ist.

Wenn du recht hast, wirft sie ihren Mantel ab und läuft zu ihrem Platz am Tisch. Der Raum reagiert.

Was schon geht. Mit jedem Stammgast ein kurzes Gespräch führen („woher kommst du, was machst du?"). Im Dialog-Header steht die Zeit und Region der Figur — als Hinweis-Anker, der den Verdacht eingrenzt. Die Cantina ist Vollbild, ohne Menü, ohne UI-Drumherum. Der Eingang ins Spiel ist die Cantina selbst.

Kleinkram. Schatten unter den Figuren, ein Zoom-Übergang beim Reinkommen, Truhen mit ersten Sammelobjekten. Erste Anklänge eines Möbel-Systems pro Deck. Avatar mit voll animiertem Idle und Walk.

Macher-Sicht

Was heute gebaut wurde

Repo init, dann gerade durch: SvelteKit-Web-App + Hono-Server-App, Drizzle/SQLite, Better-Auth, Phaser-3-Hub. Cantina als erste Szene mit Spieler-Sprite + fünf NPC-Sprites + Bar + Teppich. Mood-Portraits aus Gemini, Pixel-Sprites aus PixelLab v2.

Die LLM-Schicht ist Multi-Provider (Anthropic / OpenAI / Gemini), der Game-State server-authoritativ — nicht local-first. Smalltalk-Endpoint stateless: Frontend schickt { characterId, message }, Server zieht das Dossier des Chars, baut Stimme + Werte ins System-Prompt, antwortet.

Architektur-Entscheidungen

Cantina ist das Heimat-Menü. / redirectet auf /cantina. Es gibt keine globale Top-Nav, keine Settings-Sidebar, kein Tab-Layout. Die Welt selbst ist der Einstieg. Wird später Game-Rule #1.

Identitäts-Hiding. Die Wire überträgt nur numerische characterId, niemals den Namen. Der Server cross-checkt Reveal-Sentinel + Name-Match gegen die User-Message — die LLM allein darf nicht entscheiden, ob ein Spieler geraten hat.

Animation als Lebenszeichen. Jeder Sprite kriegt Breathing-Idle als Baseline. NPCs drehen sich zum Spieler, wenn er nahe kommt. Die verhüllte Gestalt am Tor läuft beim Reveal zum Sitz — die Welt zeigt Erfolg räumlich, nicht über UI-Toasts.

Diff-Stats

29 Commits, +21902 / -831. Der Sprite-Asset-Push macht 67 % der Datei-Änderungen aus (PixelLab generiert pro Char ~50 Frames).

Stats

29
Commits
+21902/-831
Zeilen
619
Files
4.1 h
Aktiv
Erster Commit
23:26 (Dienstag)
Letzter Commit
05:42
Spannweite
6.3 Stunden
Aktiv (ohne Pausen > 30min)
4.1 Stunden
Pausen
2
Längster Fokus
3.4 Stunden

Wo wurde gearbeitet

  • 67% apps/web/static/sprites
  • 12% apps/web/src/lib
  • 5% apps/server/src/dossiers
  • 4% apps/web/src/routes
  • 1% apps/server/src/routes

Commits (29)

Volle Liste aufklappen
  • 58d5894 init: standalone who, the historical-figure guessing game
  • 91dbcbf feat: phase 1 cantina — phaser hub with player + 5 npc sprites
  • fe44f8b feat: cantina npc interaction + stateless smalltalk endpoint
  • 6b59596 feat: cantina breathing-idle animations + zoom + npc highlight
  • a937a8e feat: cantina sprite shadows + grid-pattern floor
  • 07cae7f feat: cantina bar + decorative rug
  • 88dbb89 feat: dialog header shows era · region · role from dossier
  • b8e394c feat: cantina npcs face the player when nearby
  • 5b69557 feat: animated player avatar — scottish-american with full idle + walk
  • 4430f30 feat: cantina goes fullscreen with slim hud (phase u-1)
  • 4759853 feat: hooded mystery npc + guess dialog (phases u-2, u-3)
  • 2de31ba feat: world reacts when a guess round is won (phase u-5 lite)
  • a926c41 refactor: cantina is the home — redirect / and clean nav (phase u-6)
  • 16f2b05 feat: virtual joystick for mobile + unlocked-driven cantina (u-4 + u-7)
  • 4b8b418 feat: u-5 full — revealed character materializes and walks to a seat
  • e134a32 feat: deck-themed corners + drop deck picker from ux
  • c1d1cb3 feat: per-zone collection counter on cantina rugs
  • cc428c6 feat: pixellab cantina env generator + scene wiring
  • d26e760 chore: cantina env art generated via pixellab
  • 22705d3 fix: bar tiles seamlessly + floor regenerated
  • 5a781b6 feat: per-deck floor textures replace zone tints
  • 2e2e51f feat: env textures collection page + regen antiquity / inventors
  • 073b57e feat: signature furniture per deck zone + generic stools
  • 2f2b9d9 feat: env-textures link in cantina menu (logged-out reachable)
  • 699d14d feat: second signature prop per deck + treasure chest
  • 8d4c660 feat: pixellab v2 integration + sprite cli
  • 3caff88 feat: cloaked stranger walk-in + edison sprite
  • 9b22282 feat: per-character animation frame counts
  • 2834cc9 feat: per-mood portraits + mood-driven smalltalk + cantina life
Geschrieben mit Claude Opus 4.7 (1M context) — Hand veredelt