Commit Graph

49 Commits

Author SHA1 Message Date
root 5f5bf24d64 feat: add prompt template system for LLM variable substitution
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 16:17:56 +00:00
root 98ec288caf feat: add LLM config module for OpenRouter API settings
Reads API key and model from environment variables. LLM is disabled by
default and auto-enables when OPENROUTER_API_KEY is set.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 16:15:10 +00:00
root a778bee58d fix: round cycleTicks to prevent float precision drift
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 03:08:05 +00:00
root f5857f72d8 feat: server tracks and broadcasts game time
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 03:04:08 +00:00
root 17621fbd59 feat: switch to LPC tileset with layered autotiling
Replace the 16x16 tileset with LPC Base Assets (32x32 tiles, 1.5x scale).
Uses a 4-layer rendering approach:
- Layer 0: solid grass base (grass.png)
- Layer 1: water transitions (watergrass.png) with LPC autotile edges
- Layer 2: dirt transitions (dirt.png) with LPC autotile edges
- Layer 3: tree canopy decorations (treetop.png)

LPC autotile format: 3x6 grid with inner/outer corners, edges, and fill
tiles. Edge tiles are selected based on 8-neighbor terrain analysis.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 23:40:15 +00:00
root 4a2819695b feat: procedural tilemap with river, ponds, dirt, and trees
Replace colored-rectangle world rendering with a proper tilemap system
using a 16x16 RPG tileset scaled 3x. Server generates terrain via seeded
procedural generation (river, ponds, dirt patches, tree decorations) and
sends it to clients. Client renders 3-layer Phaser tilemap with
8-neighbor autotiling for water/dirt edges.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 22:45:09 +00:00
root 03f837f95f feat: use bond-aware classification in state serializer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:34:22 +00:00
root 0bfeef7fa1 feat: add proposal interaction handling to social system
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:33:22 +00:00
root 66596fb96d feat: add proposal queuing and bond-aware despawn to relationship system
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:24:32 +00:00
root bf2a9817ab fix: update tests for new SocialState shape and Devoted tier
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:21:58 +00:00
root db808bca86 feat: initialize bond registry singleton and update spawner
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:21:54 +00:00
root f8ad3a6f0c feat: rename Partner tier to Devoted, add bond-aware classification
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:20:26 +00:00
root 7b70b9c8bf feat: add proposal system config values
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:18:40 +00:00
root 925f8a7494 feat: add bond registry with helpers for mutual relationships
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:16:33 +00:00
root 6b32e115b0 feat: add singleton support to World ECS
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:14:13 +00:00
root 97c2176b75 feat: wire relationship system into spawner, game loop, and serializer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 15:35:59 +00:00
root 4f5e4f34ba feat: add relationshipSystem with delta calculation and despawn handling
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 15:34:46 +00:00
root df0f036cf2 feat: emit lastOutcome from socialSystem for relationship processing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 15:31:47 +00:00
root cdfc35d5da feat: add relationship classification helpers with tests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 15:30:22 +00:00
root 87ab1b4c10 feat: add relationship config with tuning values
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 15:29:38 +00:00
root 7d196524d6 fix: clamp baseline drift both directions, make updateStats private
- Add Math.max(3, ...) to baseline drift in socialSystem to prevent
  stats drifting below minimum (was only clamping upward with Math.min)
- Make NpcInfoPanel.updateStats private (only called from updateInfo)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 14:31:29 +00:00
root 0fc186b4f3 feat: serialize effective stats in entity state broadcast
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 14:27:24 +00:00
root c7b998dbd0 feat: add event-based transient stat modifiers on social outcomes
Positive outcomes add +1 sociability modifier (100 ticks).
Negative outcomes add -1 sociability and -1 empathy modifiers (100 ticks).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 14:26:20 +00:00
root 78cede4b32 feat: add baseline stat drift on social interaction outcomes
Positive social outcomes drift sociability and empathy up (+0.05),
negative outcomes drift temperament up (+0.02), capped at 18.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 14:25:49 +00:00
root fbe06e9d79 feat: integrate perception, sociability, and empathy into social system
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 14:23:21 +00:00
root 42b574259f feat: integrate constitution into needs decay rates
High constitution slows hunger/energy decay, low constitution speeds it.
Uses getEffectiveStat helper which defaults to 10 for entities without
stats, preserving backward compatibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 14:22:09 +00:00
root c5d75fa0b0 feat: wire stats into NPC spawner and game loop
Add stats and statModifiers components to spawnNPC, and run
statModifierSystem as the first system in the GameLoop update cycle.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 14:20:43 +00:00
root e90e69ce35 feat: add statModifierSystem with needs-based modifiers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 14:19:26 +00:00
root aebfad07ce feat: add getEffectiveStat helper for computed stat values
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 14:17:49 +00:00
root 9c6834c05f feat: add 3d6 stat generation for NPCs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 14:15:29 +00:00
root 7e5f430204 feat: handle spawn-npc socket event with cap and position logic
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:37:36 +00:00
root 1576e6b717 feat: add optional positionHint to spawnNPC
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:36:37 +00:00
root fa02a6e93e feat: add findNearestWalkable method to GameMap
Adds a method that searches outward from a center position in Manhattan
distance rings to find the nearest walkable tile within a given radius.
Returns null if no walkable tile is found. Includes 5 tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:35:00 +00:00
root d011dcf183 fix: address code review - pair-based phase transitions and emoji animation lifecycle
- Process phase transitions per-pair instead of per-entity to avoid
  double-processing (latent bug for future side effects)
- Restore independent outcome rolls per NPC (as designed)
- Let emoji CSS animation finish before removing DOM element, preventing
  visual pop when server broadcast timing doesn't align with animation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:12:01 +00:00
root 8daecfaa3f feat: wire socialSystem into game loop, spawner, and state serializer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:06:08 +00:00
root 7cfc8c0537 feat: add social interaction guards to brain and movement systems
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:05:05 +00:00
root ac3f26a470 feat: implement socialSystem with proximity detection and phase state machine
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:02:31 +00:00
root d0a7bfc4bc test: add failing tests for social interaction system
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 13:00:34 +00:00
root 0cf48ded61 feat: add NPC name generator and broadcast names in entity state
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 04:33:42 +00:00
root d46677389f feat: generate portrait features (brows, eyes, mouths) for NPCs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 04:31:22 +00:00
andy b94ad32806 feat: viewport modes, configurable server URL, deployment docs
- Add follow mode (F key) to cycle camera between NPCs
- Make server URL configurable via VITE_SERVER_URL env var
- Add comprehensive README with Debian LXC deployment guide
- Add character sprite assets to repo
- Add design docs and implementation plans

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 22:25:53 -05:00
andy fc29bc204c fix: give player entities an appearance component for avatar mode rendering
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 20:21:05 -05:00
andy 8fee2faf1e feat: add Socket.io server with state broadcasting and player input handling
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 19:13:07 -05:00
andy ca05d36bc0 feat: add game loop with NPC spawning and system execution
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 18:53:19 -05:00
andy a8e18b9535 feat: add random appearance generator for NPC spawning
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 18:38:30 -05:00
andy 83660609fc feat: implement NPC systems (needs decay, brain, movement)
Add three ECS systems for NPC simulation:
- needsDecaySystem: decrements hunger/energy each tick, clamped at 0
- npcBrainSystem: goal selection based on need thresholds with pathfinding
- movementSystem: advances entities along computed paths

Includes 8 passing tests covering decay, goal prioritization, and movement.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 18:19:07 -05:00
andy 30ea2f42c2 feat: add GameMap and A* pathfinding with tests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 18:13:31 -05:00
andy 733d1eb795 feat: implement lightweight ECS core with tests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 18:12:48 -05:00
andy 39c19568c1 feat: scaffold monorepo with shared, server, and client packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 18:09:07 -05:00