Compatibility, diagnostics and release

How to tell which contract you are building against, what BusinessBridge does on a game build it cannot verify, and what its diagnostics give you as a developer.

Contract and API version

Two values, and they answer different questions:

ValueWhat it tells you
BusinessBridgeApi.Version The build of BusinessBridge that is running. Changes for any release, including fixes that do not affect you.
BusinessBridgeApi.ContractStage The shape of the contract. Changes only when the shape of AiBusinessRegistration changes. This is the one to gate on.

The current stage is beta-2. Refuse to register against a stage you do not know:

if (BusinessBridgeApi.ContractStage != "beta-2") { /* warn and skip */ }

That is better than trying anyway: a changed contract means fields you are not setting, and failing loudly in your own log beats an AI that quietly never opens your business.

beta-1 → beta-2

beta-2 added LayoutContents, so layouts can be handed over in memory instead of as files on disk. The change is additive: a provider written against beta-1 needs no edit, because it only ever set LayoutFiles and the new list simply starts empty. The LayoutFiles path is unchanged and still supported, and both transports go through the same validation and registration. A provider that uses LayoutContents needs BusinessBridge at beta-2 or later, which is what the check above is for.

Game build compatibility

The supported game build is Big Ambitions Build 3680 (Patch 2). On a build where the game's AI template cache cannot be verified, BusinessBridge stays inactive: it rejects every registration with a clear message, shows the player a “needs an update” notification, and never touches the game's own AI.

Your registration will come back with Accepted = false and the AI template cache does not match this game build. That is the designed behaviour after a game patch, not a bug in your integration — and your own business type keeps working for the player throughout.

Diagnostics you can rely on

Every registration decision goes to BusinessBridge's own log and into any support bundle the player creates, so you can diagnose a creator problem from a player's report without asking them for Player.log. In a bundle:

FileWhat is in it for you
registrations.json Every registration: provider id, business type, layout name, layout sizes, donor type, each template with its active flag, and the validation messages.
cache-state.json Whether the cache adapter is available, how many templates are live, how many are BusinessBridge's, whether the live cache still holds everything that was applied, plus layouts owned and bridged businesses in the world.
environment.json BusinessBridge version, contract stage, game version and build, Unity version, OS, and the mods that were loaded.
recent-events.jsonl The last few hundred BusinessBridge events, with levels.
businessbridge.log The run's own log, anonymised.

Bundles are anonymised as they are written and re-scanned before they are zipped, so asking a player for one is a reasonable thing to do. The player-facing bundle instructions explain how they create one — send them that link rather than explaining it yourself.

Deliberately not in this contract

These are real ideas, not commitments, and none of them blocks the beta. Do not build against them yet:

  • Custom logo shapes — a bridged AI business borrows a shape from the game's own set. Feasible, investigated, not implemented.
  • AI Store Designer — generating layouts instead of shipping them.
  • Automatic layout generation from a player-built store.
  • Third-party adapters — anything that registers on another mod's behalf.
  • SmartSuite-specific compatibility.
  • Rival defense with custom types — blocked until a provider can supply every special-rival building size.

Which building sizes are available is decided by each provider mod, not by BusinessBridge. It imposes no list and never substitutes one size for another: a size you do not supply a layout for is a building the AI simply cannot use for your business type.

When you report an integration problem

Developer tickets use the same support system as player reports, with the audience set to Mod developer / creator. That switches the form to ask for the things that actually help here: your project name, which part of the integration is failing, the contract stage you build against, and a repository or gist if you have one.

Include the RegistrationResult messages. They name every decision BusinessBridge made, and they are usually the whole answer.

Open a developer ticket

{# GoatCounter's own count.js, served from this site rather than from a third-party host. The context processor decides whether this page may be counted at all; see core/context_processors.py. Both scripts are deferred, so the settings file below runs first and has set window.goatcounter.referrer before count.js reads it. #}