Skip to the content.

Conventions

← Back to index

Following the base game’s own conventions makes your pages indistinguishable from vanilla ones and keeps links predictable for other mods.


Categories

Fourteen categories ship with the game. Prefer one of these over creating your own — a furniture item belongs in Furniture next to the other 522 pieces, not in a category named after your mod.

Constant Heading Base-game pages Use for
HelpCategories.General General 9 Movement, energy, happiness, the phone
HelpCategories.Finance Finance 3 Loans, taxes, accounting
HelpCategories.BuildingManagement Building Management 10 Renting, layouts, cleanliness
HelpCategories.BusinessTypes Business Types 24 A new business type
HelpCategories.EmployeeTypes Employee Types 21 A new employee role
HelpCategories.EmployeeManagement Employee Management 7 Hiring, shifts, wages
HelpCategories.GoodsAndServices Goods and Services 76 A sellable product
HelpCategories.WholesaleAndImport Wholesale / Import 17 Suppliers, import contracts
HelpCategories.Furniture Furniture 522 A placeable item
HelpCategories.Rivals Rivals 4 Competing businesses
HelpCategories.FactoryRecipes Factory Recipes 62 A production recipe
HelpCategories.FactoryMachines Factory Machines 17 A factory machine
HelpCategories.FactoryIngredients Factory Ingredients 61 A production input
HelpCategories.Vehicles Vehicles 19 A drivable vehicle

Creating your own category

Only worth it for something that genuinely does not fit — a large mod with its own systems, say. Pass any other key as categoryKey and localise that key yourself:

HelpApi.RegisterPage("MyMod", "mymod:help_category", "mymod-overview", "mymod:help_overview");
{ "mymod:help_category": "My Mod" }

The library warns in the log if a non-vanilla category key has no localisation, because the heading would otherwise show the raw key.


Slugs

A slug is a page’s permanent id. Links target it, so treat it as public API of your mod — other mods may link to your pages, and changing a slug breaks those links.

The base game uses a category prefix followed by a name with no separators inside it:

businesstypes-giftshop
furniture-acousticpanel01
furniture-roundedshelf
products-cheapgift

Prefix the name part with your mod id so it cannot collide:

furniture-laundromatwasher      ✅  clearly namespaced
furniture-washer                ❌  likely to collide
laundromat_washer               ❌  wrong prefix, breaks category convention

HelpSlugPrefixes provides the four common prefixes as constants.


Page key prefixes

The pageKeyPrefix is a localisation key prefix, not a slug. The clean pattern is to reuse a key your mod already has:

HelpApi.RegisterPage("Laundromat", HelpCategories.Furniture,
    slug: "furniture-laundromatwasher",
    pageKeyPrefix: "laundromat:itemname_washer");   // ← the item's own name key

The page title is then automatically the item’s localised name, in every language your mod supports, with nothing to keep in sync. You only add the body:

{ "help_laundromat:itemname_washer_content": "..." }

This is what the base game does — its furniture pages use ba:itemname_* prefixes.


Where a page should go

A quick decision guide for a typical content mod:

You added Category Slug
A business type BusinessTypes businesstypes-<mod><name>
Furniture the player places Furniture furniture-<mod><name>
A product sold to customers GoodsAndServices products-<mod><name>
A vehicle Vehicles vehicles-<mod><name>

A business-type page conventionally lists the furniture it requires, linking to each furniture page; each furniture page links back and says where it can be bought. See Localisation for the exact link syntax.


← API reference · Localisation →