How this site is built
Every number is generated from Core Keeper's own files. This page says exactly how, including what we could not establish.
The source
Core Keeper's dedicated server is a free download requiring no account
(Steam AppID 1963720). Inside it, StreamingAssets/Conf/ holds plain JSON that the
developer documents in its own README.txt: loot tables with real weights, spawn tables,
all 12 talent trees, fishing behaviour and factions. That is a sanctioned modding surface, not
datamining.
Item and creature statistics are not in that JSON. They sit on Unity DOTS prefabs named
<Name>Entity. Their type information is stripped from the build, so we recover
the field layout from the game's own .NET metadata and walk each component's bytes in order.
The damage number we withdrew
This site published a "damage at its level" figure on every weapon page until 2026-09-07. It was wrong, and the way it was wrong is worth writing down.
It came from a formula, base × 21 ÷ (level + 1), fitted against thirty weapons whose
displayed values one other site publishes. The fit was genuinely close — largest error 1.5 across
all thirty — and that closeness is what made it convincing.
The fit was real and the conclusion was wrong. The expression is near-constant
along a tier ladder. It gave the Copper Sword (level 2) 350.0 and the Solarite Sword (level 16)
345.9 — telling a reader the starting weapon out-damages the endgame one. What the expression
actually measures is that stored damage rises roughly linearly with level + 1;
dividing that back out collapses every weapon onto the same number. Thirty agreeing values could
not catch that, because agreeing with one source is not the same as being right.
Before withdrawing it we checked the game's own code rather than another wiki.
Pug.ECS.Authoring contains
LevelToDamage(a, b) = round(max(1, a) × 20 × b) — real, and read from the compiled
assembly, not recalled. But the stored damage values do not fall out of it with clean multipliers
(4% land on quarter steps), so it is not the weapon-display formula and we are not going to claim
it is.
So the site publishes base damage, and no longer claims to know the tooltip number. Base damage is read straight from the files and rises monotonically across every tier ladder, which is what makes it the right figure for comparing weapons. DPS is base damage over cooldown — both read, the division ours. If you want the exact number the game prints in a live world, we cannot give it to you honestly yet, and that is a better answer than the one we had.
Three kinds of number, and how to tell them apart
Every figure on this site is one of these. The badge appears next to the value itself, not buried in a footnote, because the distinction is the point.
The checks every number passes
- Exact-length check. A component must consume its payload exactly. Any component that does not is discarded, not published — 2,419 of 2,419 object records now decode exactly.
- Monotonicity. Weapon damage must rise across a known tier ladder. It does: 33 → 50 → 132 → 163 → 214 → 248 → 280 for the sword line.
- Cross-provenance. Values are compared against an independent public source that shares no input with the game files. Boss health matched on 18 of 18 bosses; Copper Sword durability (250) and cooldown (0.4s) matched exactly.
Two things we corrected rather than shipped
An early read put health at the wrong offset and returned 0 for every entity. A uniform result is a broken measurement, not a discovery, so it was fixed before publication. Separately, a guess that a stored float was durability ÷ 350 predicted 0.2514 where the file says 0.2500; the guess was dropped and the field left unlabelled rather than dressed up.
What we could not establish
- Whether drills run in unloaded chunks is answered from strong evidence, not proof — see the automation page, which states the difference.
- In-game display names. Localized text ships only with the client, so names here are derived from the game's internal identifiers. Boss names come from matching our extracted health values against a public index — the join was exact, but it is a join, and we say so.
- Whether the guaranteed group consumes one of the draws. The developer's README says one item from the guaranteed group always drops, but not whether that pick uses up one of the table's unique draws. Our per-kill figures come from the draw model alone, so for guaranteed-group entries the true number is at least what we show. Everything else is exact.
- Ghorm's composing entities — the candidates are obvious but unconfirmed.
Version
Generated 2026-09-07 from Core Keeper 1.2.1.5, build 23543502, released 2026-06-08.