Preston Choate
← CFB Data Mining

CFB 27 Player XP, Levels & Dev Traits

cfb27 xp

Patch 3 tuning (dynasty-tuning-binary.FTC) + save DYNASTY-2026OFFLINEFINAL.

Executive summary

  • There is no player Level field. Flow is: earn XP → hit XP threshold → gain Skill Points → spend SP on ratings.
  • Offseason training XP uses a random position/year range, the development trait multiplier, coach bonuses, and the facilities bonus.
  • Difficulty / Wear & Tear XP modifiers in tuning do not meaningfully change dynasty offseason XP (A/B tested).
  • Dev traits scale XP via a spline (%); higher traits progress faster.
  • Coach percent and flat XP talents: Coaching abilities: Player XP.

1. How is XP calculated?

Base XP comes from offseason progression, games, coach bonuses, and other progression events. Most grant logic is native code (IncreaseExperiencePoints) rather than readable FranTk.

What is readable and confirmed for dynasty:

Flat / percent add-ons

SourceEffect
Athletic facilities+0 to +20 XP by letter grade (A+ = 20)
Coach XP talentspercent (e.g. Everybody Eats up to +10%) or flat; see Player XP talents

Difficulty / Wear & Tear XP modifiers (not used for dynasty offseason)

PlayerProgressionTuning still contains:

FieldStored value
SkillLevelXPModifierFreshman0.50
SkillLevelXPModifierVarsity0.75
SkillLevelXPModifierAllAmerican1.00
SkillLevelXPModifierHeisman1.25
WearAndTearXPModifierOn1.00
WearAndTearXPModifierOff0.40

Native code null-checks skillLevelModRef / wearAndTear*ModRef near ProgressPlayers, so the fields are loaded. But in-game A/B testing across multiple dynasty players/positions showed no meaningful offseason XP difference when difficulty or Wear & Tear was changed. Treat these as unused for dynasty training-results XP (likely RTG / leftover shared tuning), not live dynasty multipliers.

Offseason training results (decoded)

Training-results XP is awarded by native PlayerProgressionEval::AwardOffSeasonXPToPlayer (also tied to IssuePostSeasonTrainingRequest). Each player gets one roll:

base = random(MinXP[year][pos], MaxXP[year][pos])
     // redshirt players use RedshirtMinXP / RedshirtMaxXP instead

xp   = base
     × DevTraitSpline / 100
     × (100 + coachPercent) / 100
     + facilitiesFlat

School years: Freshman=0, Sophomore=1, Junior=2, Senior=3.
Tables live in tuning PositionValueTable (rows 11–20 normal max/min, 22–31 redshirt max/min), referenced from save PlayerProgressionEval.MinXPTables / MaxXPTables / redshirt variants.

Base XP ranges (non-redshirt, before multipliers)

PosFRSOJRSR
QB35,150–52,25031,350–48,45027,550–44,65025,650–40,850
HB37,050–47,50033,250–43,70029,450–39,90025,650–36,100
FB15,600–31,20014,625–29,25012,675–25,35011,700–23,400
WR30,400–51,30029,450–46,55028,500–44,65027,550–42,750
TE25,350–40,95024,375–39,00022,425–35,10021,450–33,150
LT/RT33,150–52,65032,175–50,70031,200–48,75030,225–46,800
LG/C/RG32,175–50,70031,200–48,75030,225–46,80029,250–44,850
LE/RE30,225–44,85029,250–42,90027,300–39,00026,325–37,050
DT29,250–44,85028,275–42,90027,300–40,95025,350–37,050
LOLB/ROLB26,325–41,92524,375–39,97522,425–36,07520,475–32,175
MLB21,450–35,10019,500–33,15017,550–29,25016,575–25,350
CB31,350–49,40030,400–47,50028,500–45,60028,500–43,700
FS29,450–49,40028,500–47,50026,600–43,70025,650–41,800
SS29,450–45,60028,500–43,70026,600–39,90025,650–38,000
K/P4,750–9,5004,500–9,0004,250–8,5004,000–8,000
LS0000

Redshirt Min/Max bands are about 5–8% lower than the matching non-redshirt band.

Relevant coach % talents on this grant (stack additively; see Player XP talents):

TalentTypical max stack
Put in Work (offseason)+10%
Everybody Eats (all XP)+10%
Star Maker (starters)+17%
Whisperer (FR/SO)+17%

Worked examples (no coach talents)

PlayerApprox mid baseAfter trait
FR QB, Normal~43,700~43,700
FR QB, Elite~43,700~65,550
FR QB, Elite, max roll52,250~78,375
FR K, Normal~7,125~7,125

2. How do Dev Traits affect XP gain?

The live CFB offseason progression path uses PlayerDevTraitsSpline, divided by DevTraitDivisor = 100:

Dev traitXP multiplier
Normal (0)1.00x
Impact (1)1.20x
Star (2)1.35x
Elite (3)1.50x

Ghidra confirms AwardOffSeasonXPToPlayer reads a valid playerDevTraitInt, and startup validation requires mDevTraitSpline to be attached. The matching trait-indexed spline in the CFB data is:

X = [0,   1,   2,   3]
Y = [100, 120, 135, 150]

This confirms the modifiers for offseason progression XP. It does not prove that every other XP source applies the same trait multiplier.

Do not use the Madden weekly-goal values

PlayerWeeklyGoal.DevelopmentSpline contains 0.75x / 1.00x / 2.00x / 5.00x plus an AgeSpline. CFB dynasty’s PlayerGoalTable is empty for every position, so that weekly-goal path is not the live dynasty progression formula.


3. How much XP to earn a level?

Use PlayerSPThresholdSpline (OVR → XP needed). This is the only populated XP-cost curve for dynasty players. (PlayerXPLevelSpline is all zeros / unused.)

Player OVRXP to level
50–601500
65–701750
75–802000
85–902250
95–992500

Higher-OVR players need more XP per step.


4. How many Skill Points per level-up?

1 Skill Point per level-up in dynasty.

Evidence: PlayerProgressionTuning.IncrementAmount = 1.

(RTG is different: RTGPlayerSPPerLevel = 40. It does not apply to dynasty.)

You spend those SP on attribute/ability upgrades (AbilityProgressionTunable.UpgradeCostSpline). Cost scales with current rating (often 5 SP at low ratings, rising to 30–45+ near 90–95). Cap note: AbilityUpgradeCapPerSkillPoint = 5.


Quick examples

  • FR QB, Impact, mid roll (~43,700): ×1.20 → ~52,440 XP. At 60 OVR (1500 XP/level) that is ~35 SP before coach/facilities add-ons.
  • Difficulty / Wear & Tear: changing these does not move dynasty offseason training XP in A/B tests.
  • 90 OVR: still needs 2250 XP per level → 1 SP each time the threshold is hit.

Sources

QuestionPrimary field / table
Offseason base XPPlayerProgressionEval Min/Max/Redshirt XP tables → PositionValueTable
Coach XP add-onscoach Talent / TalentDataInt
Difficulty / W&T fieldspresent on PlayerProgressionTuning, not live for dynasty offseason (A/B tested)
XP to levelPlayerSPThresholdSpline
SP per levelIncrementAmount (= 1)
DevTrait offseason XPNative AwardOffSeasonXPToPlayer + PlayerDevTraitsSpline