Skip to content

PC-ANIM-FIX + PC-BEARD: Stories 18-19 + merge uncommitted assets#165

Closed
MithrynMarious wants to merge 29 commits intopablodelucca:mainfrom
MithrynMarious:feature/pc-anim-beard-s18-s19
Closed

PC-ANIM-FIX + PC-BEARD: Stories 18-19 + merge uncommitted assets#165
MithrynMarious wants to merge 29 commits intopablodelucca:mainfrom
MithrynMarious:feature/pc-anim-beard-s18-s19

Conversation

@MithrynMarious
Copy link

Summary

  • S-18: Walk animation mirror fix — Pixelwood Side sprite sheet faces LEFT, not RIGHT as assumed. Swapped LEFT/RIGHT direction assignment so walking left shows left-facing sprite.
  • S-19: Player beard — Added beard overlay to player character. Face-anchored (tracks walk bob), tuned for both front and side views. Only player gets beard, NPCs unaffected.
  • Merged feature/pc-uncommitted-assets — tileset.json with proper sprite coordinates, town memory data, and Pixelwood PNG assets that were never merged to main. Without this, the game falls back to programmatic sprites.
  • Fixed 3 pre-existing unused variable warnings (isDoorAnimating, SpriteData import, NPC_ROWS)

Test plan

  • Walk in all 4 directions — LEFT/RIGHT no longer mirrored
  • Beard visible on front view (down-facing), tracks with walk bob
  • Beard visible on side views, aligned to chin
  • Beard NOT visible from back (up-facing)
  • NPCs have no beard
  • Pixelwood Valley sprites render correctly (buildings, trees, water, characters)
  • tsc --noEmit clean
  • vite build clean

🤖 Generated with Claude Code

MithrynMarious and others added 29 commits February 27, 2026 20:44
…ey town

- Rewrite CLAUDE.md for town concept: player character, NPC dialogue, town memory
- Add Express server scaffolding (town memory API, town data API, WebSocket)
- Add hand-crafted town tilemap v1 (12 buildings, paths, gates, 40x30 grid)
- Update Vite config for standalone browser app with backend proxy
- Architecture shift: VS Code extension → Vite browser app + Express backend

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Re-scope PixelCity to Stardew Valley interactive town
…ement

Decouple from VS Code extension for standalone browser mode:
- Stub vscodeApi.ts (no-op postMessage)
- Replace useExtensionMessages with useTownInit (standalone game initializer)
- Add usePlayerInput hook (tile-to-tile WASD/arrow key movement)
- Add isPlayer flag to Character type; skip wander AI for player
- Create 20x15 default town layout (grass, paths, 5 buildings)
- Simplify App.tsx: remove editor/toolbar/debug UI, wire town hooks

Verified: canvas renders, player sprite visible, movement works with
collision detection, camera follows player with smooth lerp.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ment

PC-FORK: Player character movement + VS Code decoupling
Replaces the 20x15 proof-of-concept grid with the full Crystalline City
town layout: 40 columns x 30 rows, 12 named buildings with door positions,
path network (main N-S and E-W roads, town square ring around Town Hall),
and branch paths to each building entrance.

Buildings: Town Hall (Mark95), Origin Hall (LoreForged), Athena's Chambers,
Lena's Cathedral, Keeper's Archive, Resonance Chamber (Echolumen),
The Foundry (CORE), Pyrosage's Hearth, Chancellor's Office (Cadence),
Venture's Office, Quill's Desk (Swiftquill), Glass Workshop (Glasswright).

Player spawn moved to (19,18) on the main east-west road in front of
Town Hall. No engine changes needed — same renderer, same movement.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PC-TOWN: 40x30 town layout with 12 Construct buildings
Registry-driven NPC system: townNpcs.ts defines construct→building→palette
mapping. Adding a new NPC = adding one entry. Scales from 10 to 40+ as
the Forge grows (6 palettes × 316 hue shifts = 1,896 visual variants).

10 NPCs: LoreForged, Athena, Lena, Keeper, Echolumen, Cadence, Pyrosage,
Venture, Swiftquill, Glasswright. Each spawns at their building door and
wanders the town using the existing BFS pathfinding + wander AI.

Excluded: Mark95 (player's building), CORE (no walking sprite per spec).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…andering

PC-NPCS: 10 Construct NPCs with wander AI
E key opens dialogue when within 2 tiles of an NPC, ESC closes it.
Template-based speech from MOUNT_HEADER.md (role + greeting) — zero LLM cost.
Proximity hint shown when near an NPC but not in dialogue.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PC-DIALOGUE: Proximity trigger + dialogue box UI
Wires frontend to existing /api/memory backend. Greeting tiers based on
visit count and recency: first_meeting → return_recent → return_long → familiar.
Interactions logged on dialogue close (fire-and-forget POST).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…, building glow

Adds the ability to replay past EAM sessions as visual animations in the town.
Server parses EAM markdown files for construct names, then the client pathfinds
those NPCs to their buildings with a pulsing glow overlay during the work phase.

New files:
- server/src/api/eamParser.ts — EAM markdown parser
- server/src/api/replay.ts — REST API (GET /api/replay/sessions)
- webview-ui/src/hooks/useReplay.ts — replay controller hook
- webview-ui/src/components/ReplayPanel.tsx — replay control UI

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PC-REPLAY: EAM session replay system
Server-side Chokidar watcher reads Claude Code JSONL transcripts
incrementally, parses tool activity, and broadcasts over WebSocket.
Client merges live glow with replay glow so Town Hall pulses blue
when Mark is actively using tools. ReplayPanel gets a "Live" section
for JSONL path configuration; HUD shows green dot + current tool.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add PNG tileset loading system that converts sprite sheet tiles to the
existing SpriteData format, enabling zero renderer changes. Floor tiles
check tileset mode first with deterministic variant selection per grid
position, falling back to programmatic grayscale rendering when no
assets are present. Town layout gains decorative tile types (trees,
water, fences, flowers). Tileset metadata JSON committed; PNGs gitignored
as privately licensed assets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Updated placeholder coordinates to actual tile positions in Tiles/Tile.png
(15x12 grid). Grass, path, dirt, water, tree, fence, flower tiles mapped
from pixel color analysis of the purchased asset pack.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Load 12 Pixelwood Valley building PNGs as standalone sprites, bottom-aligned
at footprint edges with roofs extending above. Z-sorted with characters so
they walk behind/in-front correctly. Covered wall tiles render grass instead
of solid color, and wall auto-tile pieces are filtered to prevent double-draw.
Graceful fallback — missing PNGs still render as colored rectangles.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…imation

Trees render as z-sorted sprite instances (not floor tiles) so characters
correctly occlude behind canopy. Water tiles show 5-frame ripple animation.
Lena's hand-placed design elements: sentinel rocks, flower patch, focal tree
at cathedral. Water and tree tiles are now non-walkable.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ammatic 16x24

Load hand-drawn 59x49 character art from Pixelwood Valley asset pack. Player gets
Walk/Idle sheets (3 directions × 4 frames each). 8 NPC sprite sheets provide
distinct appearances. Graceful fallback to programmatic sprites if PNGs missing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Players can now enter any of the 12 Construct buildings by pressing E at the door.
Each interior is a 10x8 room with warm wood walls, personality-matched Pixelwood
furniture sprites, and the building's Construct NPC inside for dialogue. Walking
to the south door auto-exits back to town with position preserved.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… minimap

Final story in EPIC-PIXELCITY-25. Adds four visual polish features:
- Day/night tint cycle (5-min ambient: day→sunset→night→dawn)
- Chimney smoke animation (8-frame loop on Pyrosage, Foundry, Town Hall)
- Door open animation (4-frame one-shot on building entry, 500ms delay)
- Minimap (120×90px bottom-right, tile colors, pulsing player dot, NPC dots)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PC-CHARS: Story 12 — Pixelwood Valley character sprites
PC-POLISH: Story 14 — Day/night, smoke, door animation, minimap
- 928 Pixelwood tileset PNGs (Beach, Caves, Farm, Houses, NPCs, etc.)
- 9 construct town memory JSONs (Athena, Cadence, Echolumen, etc.)
- SwiftQuill custom sprite improvement spec
- server package-lock.json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… beard

S-18: Pixelwood Side sprite sheet faces LEFT, not RIGHT as assumed.
Swapped LEFT/RIGHT direction assignment in spriteData.ts so walking
left shows left-facing sprite and vice versa.

S-19: Added beard overlay to player character. addBeardDown() and
addBeardSide() paint beard-colored pixels in chin/jaw area of
59x49 Pixelwood frames. Only player gets beard (NPCs unaffected).
Also added beard template key to programmatic fallback sprites.

Also fixed 3 pre-existing unused variable warnings that blocked
the build (isDoorAnimating, SpriteData import, NPC_ROWS).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Beard now anchored to headStart + 16 rows (tracks walk bob).
Side-view beard shifted to match left-facing chin position.
Removed scan-based neck detection (Pixelwood sprites have no
visible neck in pixel data — head/body is continuous block).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant