The Last Spike Online / 19 July 2026

USA and Canada should not become two separate games in the codebase

While refining tracks, rounds and the Canadian edition, the goal was to model edition differences as data instead of cloning rule branches for each country.

2 min read
The Last Spike Online
variantsgame-engineconfigurationarchitecture

Situation

Supporting multiple editions can quickly spread `if country === ...` checks throughout the application. That feels cheap at first, but later every fix must be repeated across branches and each new edition touches more components. The Last Spike's different boards and track rules could easily have created exactly that kind of divergence.

Approach

I separated shared game rules from edition-specific data. Rounds, track data and map characteristics came from configuration, while the engine continued to operate through a consistent set of actions. Separate behaviour remained only where the official edition genuinely defined a different rule.

Outcome

The Canadian refinement became another dataset for the same engine rather than a second application. That separation also prepared the later move to unified board geometry and artwork.