Skip to content

Tune economy and progression

This tutorial changes how fast players earn currency, gain XP, unlock buildings, and advance the day/night simulation.

flowchart LR
  Place[Place building] --> Cost[ConsumeCurrency]
  Cost --> Construct[ConstructionTime]
  Construct --> Operate[Residential or Commercial]
  Operate --> Income[CollectIncome / AddPopulation]
  Income --> XP[OnXpChanged]
  XP --> Level[OnLevelUp]
  Level --> Unlock[UnlockLevel gates]

Open each in-game building under Blueprints/Buildings/InGameBuildings/:

BlueprintProperties to edit
BP_CBT_HouseBuildingCost_Currency, BuildingCost_PremiumCash, ConstructionTime
BP_CBT_ApartmentSame + higher UnlockLevel
BP_CBT_ShopCosts + Revenue Per Worker, Profit Delay, Worker Max Limit, Currency Collect XP
BP_CBT_OfficeBuildingHigher tier costs, Revenue Per Worker 1240, Profit Delay 120 s

Example — cheaper starter house

  1. Open BP_CBT_HouseClass Defaults.
  2. Note current BuildingCost_Currency (read in editor).
  3. Multiply by 0.75 for a 25% discount.
  4. Compile, save, play DemoMap, place one house, confirm HasEnoughCurrencyToConstruct still validates correctly.

On BP_CBT_Shop and BP_CBT_OfficeBuilding, income is workers × Revenue Per Worker per Profit Delay tick (not a flat class-default Generated Income — that field is computed at runtime).

PropertyShipped default (shop)Effect
Worker Max Limit10Cap on workers per building
Worker Add Delay1.5 sTime between hiring workers after construction
Revenue Per Worker268Currency earned per worker per tick
Profit Delay60 sCooldown between income generation ticks
bAutoCollectIncomefalsetrue = passive income; false = requires WBP_CollectCurrency
bGetXpWhenCollectingCurrencytrueAwards Currency Collect XP (3) on collect

Example — passive shop

  1. Open BP_CBT_Shop → set bAutoCollectIncome = true.
  2. Lower Revenue Per Worker ~30% to compensate for automation.
  3. Play and confirm OnCurrencyUpdated fires without clicking the collect widget.

BP_CBT_PlayerController → Internal_GetExperienceForLevel defines XP thresholds.

BP_CBT_Singleton broadcasts:

  • OnXpChangedWBP_PlayerHUD XP bar
  • OnLevelUpWBP_LevelUpNotification + AddLeveledUpElements

Example — faster early levels

  1. Open BP_CBT_PlayerController → find Internal_GetExperienceForLevel.
  2. Reduce returned XP for levels 13 by ~20%.
  3. Set BP_CBT_Apartment → UnlockLevel = 2 so players see a unlock on first level-up.
BlueprintPropertyShipped defaultEffect
BP_CBT_GameStateSimulation StateNormalSpeedESimulationState — pause / normal / double
BP_CBT_TimeOfDaySun Speed10How fast the sun rotates at normal simulation
BP_CBT_TimeOfDayNight Threshold0Sun angle when IsNight becomes true
BFL_CBT_GlobalFunctionsSetSimulationSpeedCalled from HUD speed buttons

Example — faster day cycle for testing

  1. Open BP_CBT_TimeOfDay → raise Sun Speed (e.g. 20) for quicker day/night transitions.
  2. Use DoubleSpeed on the HUD and confirm vehicles pause/hide correctly at night (BP_Vehicle → Internal_OnNightStarted).

BuildingCost_PremiumCash on buildings and AddPremiumCash / ConsumePremiumCash in BFL_CBT_GlobalFunctions support a secondary currency.

To disable premium requirements for a building type, set BuildingCost_PremiumCash = 0 on that child Blueprint.

PresetChangesResult
SandboxAll BuildingCost_Currency × 0.5; bAutoCollectIncome = true on shopsFast iteration
Hard modeAll costs × 1.5; Revenue Per Worker × 0.8Slower expansion
XP rushDouble CurrencyCollectXP; lower level thresholds 25%Frequent OnLevelUp
  1. Place one residential and one commercial building after each change.
  2. Confirm EStartConstructionResult still returns NotEnoughMoney when wallet is empty.
  3. Save → load → verify BP_CBT_SaveGame currency and level fields restore.
  4. Watch ST_CityBuilderTemplate strings on level-up UI for correct building names.