Skip to content

Releases: timbermods/OptimizedLocalHousing

Optimized Local Housing v1.0.1

Choose a tag to compare

@kramsey458 kramsey458 released this 22 Sep 02:42

A fix release of Optimized Local Housing, a Timberborn 1.1 mod (built against 1.1.2.4) that re-houses adult beavers once a day so the colony's total home-to-workplace travel is as short as it can be, using an optimal assignment.

What changed since v1.0.0

A multiplayer peer that loads a save taken mid-pass now keeps step, tick for tick, with a peer that never reloaded. After a load, the solver rebuilt the rows it had already solved and charged that work to the same tick's operation budget. A peer that never reloaded paid nothing, so the two solved a different number of rows per tick and the pass could finish, and apply its moves, a tick apart on the two computers, which is a desync. The rebuild is no longer charged, so how many rows a tick solves depends on the saved state alone.

What the mod decides is unchanged: the same beavers end up in the same homes. A new automated check restores from a running pass at 23 points on a 300-adult colony and confirms each restored engine matches the uninterrupted one at every following tick; it failed before the fix.

BeaverBuddies MultiColony

The code was audited against BeaverBuddies MultiColony 1.4.0-alpha21: the mod ticks only inside the simulation, draws no random numbers, uses no wall-clock or frame time, never moves a beaver between districts (so colonies stay separate), and nothing it touches is patched by BeaverBuddies. In the alpha21 join model every player loads the same save, so the bug above could not trigger there yet; it would have with a mid-game join or reconnect. A live two-player session with alpha21 has not been played.

Install

  1. Close Timberborn and extract OptimizedLocalHousing-v1.0.1.zip into Documents/Timberborn/Mods.
  2. Launch Timberborn, enable Optimized Local Housing, and restart.
  3. Each pass logs one [OptimizedLocalHousing] line to Player.log.

Upgrading: delete the old Mods/OptimizedLocalHousing folder and extract the new one. Saves keep working, and the mod's saved data is compatible. In multiplayer, every player must update to 1.0.1 together; BeaverBuddies warns at join time when the mod lists differ.

Do not run it with Incremental Housing, Housing Optimize or Commute Balancer (it disables itself if one is enabled). Full guides, troubleshooting and FAQ: https://timbermods.github.io/OptimizedLocalHousing/

SHA-256 of the ZIP: 6d0925644570116a323726a98e3647800a84ce5882d8931eee847955ead7172c

Optimized Local Housing v1.0.0

Choose a tag to compare

@kramsey458 kramsey458 released this 19 Sep 23:41

The first stable release of Optimized Local Housing, a Timberborn 1.1 mod (built against 1.1.2.4) that re-houses adult beavers once a day so the colony's total home-to-workplace travel is as short as it can be, using an optimal assignment.

What changed since v0.1.0

No functional changes. The compiled logic is identical to v0.1.0. Only the version number (1.0.0), the startup log line ([OptimizedLocalHousing] 1.0.0 loaded.) and the README bundled in the ZIP changed. v0.1.0 stays available as a pre-release.

Why it is now stable

  • Live gameplay. The game logs of a real colony show 16 consecutive passes (numbers 23 to 38) completing with no errors, warnings or rollbacks, on about 350 adults, 104 homes and 167 workplaces. Each pass took about 183 ticks and about 5,350 route queries.
  • Live co-op. That included a hosted co-op session with a second player running the same mod version: about 11,000 ticks and 15 passes, with no desync reported in the host's log.
  • Automated checks. 25 checks pass, including brute-force optimality, identical state across two simulated peers at every tick, resuming from a save at every tick of a pass, per-tick work bounds, and the compiled mod against the game's own component rules.
  • Replay of a real colony: average commute 53.1 to 24.1 after one pass (true optimum 24.0); a second pass changed nothing.

What has not been measured

Frame-time impact (the per-tick work is bounded, but real path-query cost hasn't been timed), the Iron Teeth faction, operating systems other than Windows, and multiplayer beyond that one hosted session.

Install

  1. Close Timberborn and extract OptimizedLocalHousing-v1.0.0.zip into Documents/Timberborn/Mods.
  2. Launch Timberborn, enable Optimized Local Housing, and restart.
  3. Each pass logs one [OptimizedLocalHousing] line to Player.log.

Upgrading from v0.1.0: delete the old Mods/OptimizedLocalHousing folder and extract the new one. Saves keep working, and the mod's saved data is compatible. In multiplayer, every player must update to 1.0.0 together.

Do not run it with Incremental Housing, Housing Optimize or Commute Balancer (it disables itself if one is enabled). Full guides, troubleshooting and FAQ: https://kramsey458.github.io/OptimizedLocalHousing/

SHA-256 of the ZIP: f4de3a7eac21365bf692364e7d9cc9d6a41a81823bba23d916b15c8b07e9967d

Optimized Local Housing v0.1.0 (preview)

Choose a tag to compare

@kramsey458 kramsey458 released this 19 Sep 06:36

First preview of Optimized Local Housing, a Timberborn 1.1 mod (built against 1.1.2.4) that re-houses adult beavers once a day so the colony's total home-to-workplace travel is as short as possible, using an optimal assignment rather than incremental swapping.

Install

  1. Close Timberborn and extract OptimizedLocalHousing-v0.1.0.zip into Documents/Timberborn/Mods.
  2. Launch Timberborn, enable Optimized Local Housing, and restart.
  3. Load a copy of your save. Each pass logs one [OptimizedLocalHousing] line to Player.log.

Do not run it together with Incremental Housing (it disables itself if that mod is enabled). Multiplayer: every player must install this exact version.

What to expect

  • Every home keeps the same number of adults; children and beavers in unusable homes never move; nobody crosses districts.
  • Work is spread over ticks (at most 32 route queries per tick), and the whole pass state is saved, so reloads and multiplayer joins continue identically.
  • On a replay of a real 266-beaver colony with straight-line distance standing in for route cost, average commute went 53.1 to 24.1 in one pass (true optimum 24.0), and a second pass changed nothing.

Status: preview

All 25 automated checks pass, including brute-force optimality, determinism between peers, save/reload at every tick of a pass, and the compiled adapter against the game's component blacklist. Native in-game behavior and live two-player join/rehost have not been tested yet, and real path-query cost has not been measured. Please try it on a copy of a save and report anything odd.

The first pass on a badly housed colony moves most adults at once (parents may end up away from their children); later passes move only a few. See the README for the full list of rules and limits.

SHA-256 of the ZIP: 2e9b00b3e8c18e975968a699c2bfe4f77a6514a8104b1f7c9a4626d93d7475ad