How leveling actually works: XP is quest-shaped

From logic/root-progression.json (the extracted BlueprintRoot progression tables) and logic/core-mechanics.json#experienceCR (Kingmaker.Blueprints.Classes.Experience/{Experience, ExperienceHelper}.cs) — build 20212986, patch 2.7.0x.

Kill every mob in act 1 and you'll still lag behind the player who mainlined quests. That's not feel — it's arithmetic. The XP formula is

XP = CRTable[CR] × encounterTypeModifier × modifier × count

and the type multipliers are wildly unequal.

The seven encounter types

| Type | Multiplier | |---|---:| | Skill check | ×0.375 | | Mob | ×0.75 | | Challenge (minor) | ×1.5 | | Boss | ×3 | | Challenge (major) | ×4 | | Normal quest | ×5 | | Main quest | ×10 |

A main quest pays thirteen times what a mob of the same challenge rating does. Combat is the slow lane; the story is the highway.

The raw numbers

Base CR values (CRTable): CR 1 = 25 XP, CR 5 = 53, CR 10 = 140, CR 20 = 3,456, CR 30 = 92,160. Cumulative level thresholds:

| Level | Total XP | |---|---:| | 5 | 15,000 | | 10 | 105,000 | | 15 | 635,000 | | 20 | 3,600,000 |

Dialog rewards have their own quality tiers in the shipped DialogXPTable: low ×0.4, normal ×1.0, high ×2.5. The same conversation can pay six times more depending on how well you played it.

The second XP table nobody mentions

BlueprintRoot ships two experience tables: m_XPTable and m_LegendXPTable. The Legend one is dramatically cheaper — reaching level 20 costs 3,600,000 XP on the standard curve but just 200,000 on the Legend curve, which then runs out to level 40 at 4,700,000. The Legend path's "twenty extra mortal levels" ride this compressed track; that's how the game makes a level-40 character reachable inside one campaign.

BAB and saves are spreadsheets, not code

Class attack and save progressions are BlueprintStatProgression assets — plain integer arrays indexed by level, referenced per class. There is no progression formula to reverse; every class's full BAB/Fort/Ref/Will track is printed on its page in our Classes section, straight from the data.

Sources

  • logic/root-progression.json — xpTable, legendXpTable, crToXp, xpToCr, dcToCr, dialogXpModifiers (guid + path pinned).
  • logic/core-mechanics.json#experienceCR — formula and encounter-type multipliers, source-attributed to Experience.cs.
  • Build: 20212986 (patch 2.7.0x).

Related database section: Classes — e.g. Dragon.