Rules reference
This section states every rule of the Harrison Homestead prototype (v16). It was written by reading the prototype’s source, not by trusting earlier notes. Where older notes and the code disagree, these pages follow the code.
Constants in the tables are generated from src/data/rules.json, which is extracted from the running game. They cannot drift from it. Formulas are written by hand from the named functions, and each page ends with a source note listing them.
Currency and units
Section titled “Currency and units”The currency is board feet of lumber, written bd ft. Lumber is one number, S.lumber. Every cost, price, fee and payout in the game is in bd ft. Logs are a separate stock: they are held in decks, one count per species, and become lumber only when a mill pays for them.
Time is real time. The game reads the wall clock (Date.now()) and has no pause. Hours in this reference are real hours unless a page says “growth hours”. Growth hours are real hours multiplied by a species growth factor, and they apply only to timber.
Rounding is Math.round (halves round up) unless a formula says otherwise. Log counts that come from a cut are whole numbers. Logs bought from neighbors and cedar consumed by a shake shed can be fractional.
How to read a page
Section titled “How to read a page”Each system page gives the constants, then the formulas in plain-text pseudo-code, then four short statements: inputs, outputs, the time-based state the system keeps, and a paragraph titled “For the shared game”. That paragraph says what a server would have to own to make the system work with more than one player.
Pseudo-code uses r for row (0 to 7, shown as 1 to 8) and c for column (0 to 7, shown as A to H). A parcel is written as a column letter and a row number, for example B8.
| Page | What it fixes |
|---|---|
| Map and terrain | The 8 by 8 claim, zones, steep ground, meadow, the landing, new-claim seeding |
| Timber and growth | Species, growth stages, replanting |
| Crew, cutting and saws | Crew-days, the cut procedure, skidding loss, saw sharpness |
| Town mills | Bids, log yards, hauling, the wagon |
| Your sawmill | Levels, neighbor logs, your bid, milling |
| Buildings and roads | Costs, placement, what each structure does |
| Farming and the Mercantile | Crops, fertility, shelves, prices |
| Town and markets | Settlers, milestones, six markets, competitors |
| Forest Reserve | Stands, scarcity price, buying |
| Deed and proving up | The five goals, the appraisal, the listing |
| Leaderboards | Six boards, simulated neighbors |
| Valley map | Block layout, neighbor claims, camera |
| Game state | Every saved field, persistence, catch-up steps |
What the prototype is
Section titled “What the prototype is”The whole game runs in one browser page. Every player simulates their own town, mills, Reserve and neighbors from a stored timestamp, and the client decides every outcome. Nothing in the prototype is shared between players except a table of leaderboard scores. The “For the shared game” paragraphs exist because of that.
Source: prototype/index.html · constants all keys in rules.json · logic whole script