Exact source used by this build. SHA-256: 316ee2072f6bb8fd1b54c87604e4ee2d3f67007570634c67c346ed555c9c480d.
1 # World scale and maps report
2
3 The eight original blockouts now use the requested dimensions: farm 80×65,
4 town 120×110, river valley/woods 120×120, mountain 80×60, beach 100×50,
5 and rainforest/canyon/bog 80×80 each. `woods` remains the combined river
6 valley and woods area so existing references and the eight-area registry survive.
7
8 All maps contain ground, decor/back, buildings, front, always-front, collision,
9 tillable and named-object layers. There are 164 POIs, including twelve town
10 households, accessible doors/interiors, beds, counters, benches and fishing
11 positions. Required landmarks and wide connecting paths are present. The farm
12 has 345 static debris tiles across five fields, plus a woodlot. Existing starter
13 crop positions, nine functional debris nodes, shop counters and shipping bin
14 coordinates are preserved. [maps.md](maps.md) lists every POI and warp.
15
16 The camera uses 4× integer zoom at 1920×1080 (30×16.875 tiles) and 2× at
17 852×393 (26.625×12.28125 tiles). Portrait retains 2× zoom. Follow uses a small,
18 frame-time-based interpolation, clamps to map bounds and aligns the final
19 transform to screen pixels. Area replacement snaps the camera beneath a 180 ms
20 fade reveal. Separate foreground layers cover players appropriately. Nearby
21 labels are measured, bounded and deduplicated, including “Repairs needed”. The
22 existing area/season appearance hook remains in use.
23
24 ## Validation
25
26 Final commands run by the coordinator:
27
28 ```text
29 $ bun run check
30 144 pass
31 0 fail
32 5514 expect() calls
33 Ran 144 tests across 32 files. [54.87s]
34 Validated 12 content domains: 12 crops, 57 items, and 8 Tiled areas.
35
36 $ bun run --cwd apps/client build
37 209 modules transformed
38 built in 565ms
39 JS 2,559.25 kB / gzip 449.76 kB
40
41 $ git diff --check
42 (no errors)
43 ```
44
45 The full check includes the new real TCP two-client test against production
46 `FarmWorld`, authentication, intent dispatch and SQLite persistence. Only
47 Cloudflare socket/storage adapters and elapsed wall-clock time are substituted.
48 Both players walk actual map routes and enter opposite ends of wide warp
49 segments, arrive on matching sides, return to the farm, share planted soil,
50 retain independent inventories and receive only same-area state/presence. The
51 test also tours the open neighboring areas and verifies locked canyon feedback.
52 The unchanged real workerd/WebSocket suite passes too. Its independent run was
53 2 tests, 746 assertions, 53.20 seconds.
54
55 Content tests verify every destination exists, is walkable and is outside other
56 warp triggers; whole entry rectangles and approaches are reachable; documented
57 POIs exist; furniture and fishing anchors are reachable; optional layers and
58 manifest slots validate. Migration tests preserve crop plans, soil, placed
59 objects, inventory, wallet and unknown system fields when row widths change.
60 Client tests cover camera dimensions, odd viewport edge alignment, labels,
61 layer order, transition lifecycle, resource cleanup and seasonal appearances.
62 The three new client test files also passed an explicit TypeScript check using
63 a temporary configuration, since the existing client tsconfig includes src only.
64
65 ## Shared changes
66
67 - `packages/content/data/farm/farm.json`: dimensions and default spawns must
68 agree with the Tiled sources, as required by the existing farm validator.
69 - `apps/client/src/systems/movement/index.ts`: camera ownership already lives
70 in this renderer. Only rendering/camera code changed; movement input and
71 authoritative movement rules did not change.
72 - `apps/server/src/migration.ts`: remap the existing crop-plan tile indexes
73 with the resized soil grid. Without this, widening a saved farm would attach
74 growth plans to the wrong coordinates. No crop-growth or other game rules changed.
75 - Existing map and migration tests were updated for new dimensions, POIs,
76 pond geometry and the now-accessible home interior.
77
78 No shared registry, protocol, items, inventory, tools, skills, shops, shipping,
79 forage or farming implementation changes were required. No dependencies added.
80
81 ## Known gaps and TBD slots
82
83 - The additional 345 debris tiles are static blockout decoration. Only the
84 existing nine debris nodes are removable through the current tools system.
85 - Buildings are accessible cutaway blockouts; the mine/cave do not add an
86 interior simulation. Expansion routes remain locked as before.
87 - Creative map and POI name/description properties remain `TBD`. Functional
88 identifiers and labels identify schedule targets without adding lore or dialogue.
89 Tile, POI, warp and legacy landmark art slots have manifest keys; visuals use
90 original procedural placeholders covered by the existing CC0 asset credits.
91 - Headless Chrome aborted under the macOS sandbox. Native Chrome previews were
92 attempted at desktop, 393×852 and 852×393, but another wave concurrently
93 controlled the same browser and final visual verification was inconclusive.
94 Automated geometry/rendering checks and the production build passed.
95 - Vite still reports a JavaScript chunk larger than 500 kB; the build succeeds.
96
97 ## Files changed
98
99 ```text
100 apps/
101 ├── client/
102 │ ├── src/systems/
103 │ │ ├── areas/{index,camera,labels,placeholders}.ts
104 │ │ └── movement/index.ts
105 │ └── test/maps-{camera,labels,renderer}.test.ts
106 └── server/
107 ├── src/migration.ts
108 └── test/
109 ├── migration.test.ts
110 ├── maps-migration.test.ts
111 └── maps-world.test.ts
112 packages/content/
113 ├── data/
114 │ ├── farm/farm.json
115 │ └── maps/{farm,town,woods,mountain,beach,rainforest,canyon,bog}.json
116 ├── src/domains/maps/{loader,schema}.ts
117 └── test/{maps,maps-scale}.test.ts
118 docs/
119 ├── maps.md
120 └── maps-report.md
121 ```
122
123 Changes remain uncommitted under the project policy. Nothing was deployed,
124 pushed, authenticated or history-rewritten. Task preview processes were stopped
125 and their disposable preview state removed. The pre-existing ignored
126 `apps/server/.wrangler/test-state` namespace is approximately 727 MB after
127 validation; it was retained because files predating this task must not be deleted.
128 The pre-existing local world state (9.3 MB) was preserved. The latest ignored
129 client build is 2.5 MB.
130
131 The concurrently added, untracked `docs/stardew-feel.md` was left untouched and
132 is not part of this change set. The explicit task request for slight camera
133 interpolation takes precedence over that document's unsmoothed-camera suggestion.
134