workshop

← all creations

Hand-Me-Ups

games · created 2026-08-22

First-person vintage thrift store sim — price grandma's hand-me-downs, haggle at the register, make rent, and grow a bare storefront into the city's vintage institution.

simulationeconomygame-feel

You inherit seven boxes of old clothes and one month’s rent on a bare storefront. The loop: pull pieces from the crate, judge what each is worth from a fuzzy appraisal, price it, hang it, flip the sign — then work the register while shoppers with their own tastes and budgets browse the racks. Every evening rent comes due (and creeps up), and whatever’s left over buys racks, decor, better suppliers, or a fitting room. Reputation compounds: fair deals bring more walk-ins who tolerate higher prices, gouging and register queues bleed it away. Hit 90 rep and the shop becomes a Vintage Institution; miss rent once and the landlord wins.

How it plays

Structure

The sim (src/sim.js + src/items.js + src/layout.js) is framework-free and headlessly testable: day phases, the customer state machine (enter → browse → examine → queue → pay → leave) walking real 2D waypoint routes around the furniture, the pricing/haggling economy, rent, reputation, milestones, and upgrades. It’s deterministic under an injected seeded rng, and emits an event list the shell turns into audio and toasts. src/layout.js is the shared store geometry — the sim routes customers through it, the scene builds meshes from it, and the shell collides the player against it. src/scene3d.js takes an injected THREE and builds everything visual: canvas-drawn garments per category (tees, bombers, slip dresses, flares…) in era palettes, price-tag sprites, walk-in customers, and the upgrade decor that appears as you buy it.

test/run.test.mjs plays scripted days end to end: fire-sale prices sell out, $999 tags sell nothing, insisting on a haggle can lose the sale, upgrade prerequisites and spend, missing rent ends the run, the rep-90 win fires, and no items are created or destroyed by a trading day.

The demo is the committed prebuilt bundle per ADR-0002: demo/ carries its own copy of the modules plus three.js, no build step.

Gotchas