Skip to main content
1,279 balance/config tables, each a data-only Lua module compiled from what is clearly a spreadsheet pipeline: positional row arrays, a column-index descriptor, and a string-interning pool for repeated values.

Table shape

Only 4 field types exist across the entire 1,279-table corpus: string, number, array, table. Compound values are packed strings, almost universally id;count pairs joined by |. Very large tables (world monster spawns, army data) are physically split across sibling files, resolved via the link range table.

Container & versioning

A plain ZIP, one flat-namespace entry per table name, the odd .data extension is misleading; unzip -l works on it directly. Local version manifest, one line: version,size,md5,timestamp, matching the filename table_{version}_{md5}.data. Table updates are tracked and patched (bsdiff) fully independently of the Lua bundle and asset bundles.

Categorized index (1,279 tables)

These rows sum to 1,230, not the full 1,279; they’re the dominant categories, not an exhaustive partition. The remaining ~49 tables (hero/troop/army data, resource/economy, rank/leaderboard, guide/novice-flow, item/artifact, and a few UI/language tables) weren’t individually bucketed.