Logos and icons

How a bridged AI business gets its shopfront logo: where the game looks, what BusinessBridge generates, and what happens when a logo is missing or unreadable.

You do not have to supply anything. BusinessBridge generates a logo for every template it creates, and a missing logo is never fatal — the store falls back to the game's own “not found” texture and everything else keeps working.

How the game finds an AI logo

Vanilla looks AI business logos up by business name, not by business type or mod. For a given name it checks, in order:

  1. The modded-logo folder on disk:

    <StreamingAssets>/BusinessLogos/<safe name>/<size>.jpg

    from the game's own LogoHelper.GetModdedBusinessLogosFolder(), with <safe name> produced by LogoHelper.GetBusinessNamePathSafe().
  2. Addressables, under the key BusinessLogos/<safe name>/<size>, accepting either .jpg or .png.
  3. Neither: the game logs “Couldn't find AI business logo” and uses the ? texture.

File names and formats

WhatValue
Folder<StreamingAssets>/BusinessLogos/<safe business name>/
FilesSquareSign.jpg, WideSign.jpg, Billboard.jpg
Format on diskJPEG. The generator writes .jpg; Addressables also accepts .png.
All three required?Yes, for the folder to count as complete — BusinessBridge only treats a name as already handled when all three exist and are non-empty.
DimensionsNot imposed by BusinessBridge. The game's own BusinessLogoGenerator decides the size for each of the three sign types; if you ship your own, match what the generator produces for a comparable business rather than guessing a number.

The name is the key, so names must be unique

Because logo lookup is by business name, two AI businesses that share a name would share a logo — which is one more reason BusinessName must be unique game-wide. Registration already drops a duplicate name with a message.

What BusinessBridge does for you

For each template it creates, BusinessBridge generates the three JPGs into the folder the game already searches, using the game's own BusinessLogoGenerator and the LogoSettings taken from your donor business type — which is where the logo font and colours come from — plus the logo shapes declared on your business type.

  • Existing files are reused, never regenerated. If the three files are already there and non-empty, nothing is written.
  • A shipped logo always wins. If an Addressables logo exists for that name, BusinessBridge leaves it alone and generates nothing.
  • The folder is proved writable first. An exception inside the generator's coroutine would wedge the game's logo queue, so BusinessBridge writes and deletes a probe file before asking the generator to do anything.

Missing or invalid logo behaviour

Logo generation is non-critical. Every one of these is logged and then ignored: the folder cannot be created, the folder is not writable, the generator is missing or throws, the files are not written, or the sign refresh fails. In all of them the store shows the game's normal not-found logo and the AI integration is unaffected.

It can never fail a registration. If you see stores with a ? sign, the integration is working and only the logo is not.

A miss is not cached by the game, so a logo that appears later is picked up by the next lookup — you do not have to restart to see a logo you have just added. Note that verifying the game files through Steam can delete the modded-logo folder; BusinessBridge simply regenerates on the next run.

Shipping your own logos

Put three correctly named JPEGs in the folder above, keyed by the exact business name, and BusinessBridge will leave them alone. There is no registration field for logos and none is needed.

Custom logo shapes are not in this contract

A bridged AI business borrows a logo shape from the game's own set. Creator-supplied shapes were investigated and are feasible, but are not implemented at contract stage beta-2. Do not build against them yet.

Not the same thing: item icons

Product and item icons are a separate game system — Addressables under ItemIcons/<id> — and are nothing to do with the BusinessBridge contract. Registering with BusinessBridge neither provides nor requires them.

{# 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. #}