[PR] Autotiled walls, new character sprites & smooth pawn movement #55

Open
agent-claude wants to merge 0 commits from claude/54-walls-pawns-movement into main
Collaborator

Fixes #54

Why

  • Walls: every wall drew the same isolated four-log tile, so vertical runs and corners looked broken.
  • Pawns: they were tiny blobs with only idle, step and sleep frames and no facing.
  • Movement: each frame the sprite eased 28% toward its tile, covering a step in about 120 ms. It then stood still until the sim's next step (200–400 ms), which made motion stop-and-go.

What changed (client only)

  • Autotiled walls (pixel-art.ts, colony-renderer.ts):
    • A 4-neighbour mask means connected sides have no outline and the top surface runs through.
    • The 3/4 front face shows only where the wall's south side is open.
    • Walls link to doors and wall-mounted coolers, and doors orient to their run (face-on or edge-on).
    • Walls are drawn at the native 24 px tile size so seams line up exactly.
  • New characters:
    • 16×22 pixel art with auto-outline, four facings, and a four-frame walk cycle with arm swing and bob.
    • Per-colonist look (skin tone, hair colour and style, trait outfit), derived stably from the name.
    • Raiders get dark gear and a red mask, and there's a new sleeping sprite.
  • Smooth movement: pawns glide at constant speed matched to their measured step rate, so a walk is one continuous motion. They face their walking direction, or their target in combat, and are depth-sorted. Teleports (rescue carry, spawns) snap instead of sliding.
  • Blender assets: the pawn and wall PNGs are no longer loaded, but the files remain in public/sprites. The Blender script could be updated to emit directional sheets later, or the files deleted.

Testing

  • npm run typecheck is clean, npm test passes (91 sim-core, 5 server), and the client production build succeeds.
  • Played locally:
    • Built walls in the game and checked a sprite gallery showing timber and slate joins: room, U-shape, T-junction, door.
    • Viewed every character frame for three colonists and a raider.
    • Confirmed the new sprites and facings in the live colony.

🤖 Generated with Claude Code

Fixes #54 ## Why - **Walls:** every wall drew the same isolated four-log tile, so vertical runs and corners looked broken. - **Pawns:** they were tiny blobs with only idle, step and sleep frames and no facing. - **Movement:** each frame the sprite eased 28% toward its tile, covering a step in about 120 ms. It then stood still until the sim's next step (200–400 ms), which made motion stop-and-go. ## What changed (client only) - **Autotiled walls** (`pixel-art.ts`, `colony-renderer.ts`): - A 4-neighbour mask means connected sides have no outline and the top surface runs through. - The 3/4 front face shows only where the wall's south side is open. - Walls link to doors and wall-mounted coolers, and doors orient to their run (face-on or edge-on). - Walls are drawn at the native 24 px tile size so seams line up exactly. - **New characters:** - 16×22 pixel art with auto-outline, four facings, and a four-frame walk cycle with arm swing and bob. - Per-colonist look (skin tone, hair colour and style, trait outfit), derived stably from the name. - Raiders get dark gear and a red mask, and there's a new sleeping sprite. - **Smooth movement:** pawns glide at constant speed matched to their measured step rate, so a walk is one continuous motion. They face their walking direction, or their target in combat, and are depth-sorted. Teleports (rescue carry, spawns) snap instead of sliding. - **Blender assets:** the pawn and wall PNGs are no longer loaded, but the files remain in `public/sprites`. The Blender script could be updated to emit directional sheets later, or the files deleted. ## Testing - `npm run typecheck` is clean, `npm test` passes (91 sim-core, 5 server), and the client production build succeeds. - Played locally: - Built walls in the game and checked a sprite gallery showing timber and slate joins: room, U-shape, T-junction, door. - Viewed every character frame for three colonists and a raider. - Confirmed the new sprites and facings in the live colony. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
- Walls are autotiled from a 4-neighbour mask: connected sides join
  seamlessly, the top surface runs through, and a 3/4 front face appears
  only where the south side is open. Doors orient to their wall run.
  Drawn at native 24px tile resolution so seams line up exactly.
- New procedural characters (pixel-art.ts): proper proportions, four
  facings, 4-frame walk cycle with arm swing and bob, auto outline, and
  per-colonist appearance (skin, hair colour & style, trait outfit).
  Raiders wear dark gear and a red mask. New sleeping sprite.
- Pawns glide at constant speed matched to their measured step rate
  instead of easing to each tile and stopping; they face their walking
  direction (or their combat target) and are depth-sorted.
- Blender pawn/wall PNG overrides are no longer loaded.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Author
Collaborator

Merge approved by @johnw via Claude Code chat on 2026-10-20: "approve merge and get pushed to prd"

Merge approved by @johnw via Claude Code chat on 2026-10-20: "approve merge and get pushed to prd"
This branch is already included in the target branch. There is nothing to merge.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin claude/54-walls-pawns-movement:claude/54-walls-pawns-movement
git switch claude/54-walls-pawns-movement

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff claude/54-walls-pawns-movement
git switch claude/54-walls-pawns-movement
git rebase main
git switch main
git merge --ff-only claude/54-walls-pawns-movement
git switch claude/54-walls-pawns-movement
git rebase main
git switch main
git merge --no-ff claude/54-walls-pawns-movement
git switch main
git merge --squash claude/54-walls-pawns-movement
git switch main
git merge --ff-only claude/54-walls-pawns-movement
git switch main
git merge claude/54-walls-pawns-movement
git push origin main
Sign in to join this conversation.
No description provided.