Eight building families, each with a version at every rank on one ground plan, shown in the Cities Yard #143
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "task/3787-eight-building-families-each-with-a-vers"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Tracker: #3787
Step 1 of plan #3561 (a growing building keeps its style and grows taller in place). It adds the eight Boomtown building families of D2, written by D3, beside main's 159 looks. The game keeps drawing main's looks:
lookOfdoes not change, so nothing the game draws changes in this step. The changelog and the help come in step 6, which writes them for the whole plan.What it delivers
FAMILIES(src/client/render/boomtown/looks.ts): each family is a name, its wall tone in each palette, its roof shape and its version at each rank 1–20 as aCityLook. A version's parts are built once per palette on first use, from looks.ts's own helpers (gable,bands,tree,blades,look) and palettes (BRICK, PLASTER, GLASS, STONE, CONC).Mount.Sail, pivotsail) on Wind tower and a flag (Mount.Flag, pivotflag) on Round at every rank. Plaster balconies and Pagoda carry no life. No family carries a rotor or a dish.familyKey(family, rank, palette)names each version and palette, after the trees, so every existing key keeps its number. They build through the samemodelOf/cityGeometrypath as the looks.familyHeight,familyExtentandfamilyFootprintgive a version's body height, body extent (the x/z bounds of its parts at least BODY_WIDTH wide, on their rest geometry) and whole footprint, each measured once.bodyHeightand the newbodyExtentsharerestBoxandbodyWide.Tests
paintattribute) reach within one cube of its version below's on every x/z bound, wherever that version draws any.262e376, before the eaves, this case failed on Pagoda alone: Pagoda 2, 5 and 18 at Full, and Pagoda 2 and 3 at Mid.vitest runsuites they took up to 2.6 s and 13.1–14.1 s at42f8173. That load was not re-run on the eaves.{ looks: 159, families: 160, streets: 36, life: 8, monuments: 18, wide: 1 }in every finish and tier.The families' cost against main's looks (D10's bound)
A whole-tree copy of the head, outside the checkout, whose
lookOfgiveshash(x, y, 11) % 8into the families (withlookKey,lookHeightandlookFootprintmapped to the family's), set beside maind3604f1.The reference cities (layer.test.ts's
grown(300)andgrown(600)), triangles per finish and tier, main → families (BUDGETS), measured at the final head:The Map Yard (mock/map.html built from each tree,
?bench, Playwright WebKit, iPhone 15 landscape), one load per finish, view and growth, 36 loads, at the final head, all under reduced motion (reducedMotion: 'reduce'). Calls main / families, triangles main / families:With motion, as src/bench/map.ts loads the yard (its page context sets no
reducedMotion): the same 18 loads per arm, at the final head, with no page or console error. Calls main / families, triangles main / families:The bound holds, as D10 reads it: the families' own art batches draw main's calls in every load, with and without motion, and the copy draws at most 1.015× main's triangles (Toybox 0.25× full; it was 1.001× before the eaves, which Far keeps as roof parts). The Puffs mesh is life's, shared by every building that smokes, which D2 asks of Brick gable. So it lies outside the families' bound and counts against D10's + 2. Step 2's bench, which loads with motion, should show main + 1 call at 1× default. Plan #3561's D10 records this reading. Each reference city draws at most 0.962× main's triangles per finish and tier, within BUDGETS. No trim was needed against these loads. The first draft drew windows on every floor and cost 1.5–2.7× main's looks per rank in Die-cast and Toybox, so the families were trimmed to wall-high window strips and leaner dressing before any load ran.
Draw checks: the game draws as before
d3604f1and from the final head4bd6436(git archivetrees outside the checkout, vitebuild(),preview()), loaded once per view (1×, 0.5×, 0.25×) in the four finishes at default growth and withgrown=full, under reduced motion: all 24 pairs draw identical calls and triangles, with no page or console error.lookOfand every key the game uses are unchanged (the family keys come after the trees), and the head draws the base's calls in every load, with and without motion. The families' own cost is held to D10's bound above, before step 2's bench.Renders for the Reviewer
The Cities Yard's Families section,
mock/cities.html?finish=<1|2|3>&detail=<0|1|2>, viewport 2560 × 1400 at device scale 2, reduced motion, one image per family row through ranks 1–20:42f8173: Die-cast, Toybox and Micro-voxel at Full, in the neutral roofs and in player 1's colour (48 rows), and Wind tower at Mid and at Far in each of the three finishes (6 rows). Every row shows one ground plan through ranks 1–20, the walls climbing under the same roof, the ground dressing unchanged, and the dressing above the base growing with rank.262e376: the same positions, normals, colours and paint in every finish, tier and palette, and in Classic's geometry.262e376) and at the final head, in Die-cast, Toybox and Micro-voxel at Full, Mid and Far, in the neutral roofs and in player 1's colour (36 rows):Play
npm run benchare not run.npm run towns -- --part monument --jsonprints byte-identical rows on main and on the final head (5 rows, 5.8 s each), which showslookOfunchanged.Gates
sak-gate fast#1 (tracker gate run 318) on42f8173: passed,npm test984/984 in 30.4 s.sak-gate full#2 (tracker gate run 322) on262e376: passed,npm test984/984 in 33.8 s andnpm run test:phone180/180 in 199.5 s.sak-gate fast#1 (tracker gate run 324) onc34772b: passed,npm test985/985 in 30.9 s.sak-gate full#2 (tracker gate run 329) on4bd6436, the final head: passed,npm test985/985 in 30.4 s andnpm run test:phone180/180 in 202.2 s.sak-gate full#1 (tracker gate run 334) on4bd6436again, in this run: passed,npm test985/985 in 30.8 s andnpm run test:phone180/180 in 199.9 s.