A powerful data extraction and statistics generation library designed to work natively with the raw GameConfigDto from Dragon City, sourced via the official @dchighs/dc-config package.
You can install the library via npm, yarn, or pnpm:
npm install @dchighs/dc-statisticsTo parse the metrics properly, your project must have the core DTOs installed:
npm install @dchighs/dc-configThe main exported function is generateStatistics(configDto). By passing the raw game configuration, it computes the entire metrics tree on-demand and returns an optimized object structure.
import { Config } from "@dchighs/dc-config";
import { generateStatistics } from "@dchighs/dc-statistics";
async function main() {
// 1. Fetch the config using the native dc-config tools
const dcData = await Config.fetchRaw({ url: "https://dc-config.vercel.app/api/raw" });
// 2. Generate statistics easily
const stats = generateStatistics(dcData);
console.log(`Global chests in the game: ${stats.chestsCount}`);
console.log(`Number of Rare Dragons: ${stats.dragons.rareCount}`);
}
main();The codebase is split into specific domain modules (src/dragons.ts, src/islands.ts, etc.) to extract individual statistics efficiently. Currently, the following metrics are processed and returned:
Iterates through all game items natively and categorizes them by group_type. Returns metrics like dragonsCount, buildingsCount, habitatsCount, obstaclesCount, farmsCount, and more out-of-the-box.
totalCount: Total number of dragons available.commonCount,rareCount,heroicCount...: Breakdown of dragon totals based on Rarities.elements: Provides deep element topology statistics such asdragonsWith3Elementsand accurate top-lists (like the occurrences per specific element viadragonCountsPerElement).breedableCountandinStoreCount: Direct counter of specific static tags.
Uses native timestamps (availability and start_ts) mapped to events to check their respective timelines against the realtime server prediction.
It creates variables such as activesCount (currently ongoing), upcomingsCount (future scheduled events), and pastsCount (ended events). It tracks specific subcategories out of the box:
maze,tower,fog,grid,heroicRaces,runner, andpuzzle.
Global disconnected numeric keys are grouped here for convenience:
maxLevelfor the current game season limit.chestsCountunique chests modeled.dragonCollectionsCount.dragonSkinsCount.
The library includes an awesome built-in script with QuickChart that allows you to develop and test using PNG charts generated locally! This is super useful to visualize crossed data natively avoiding thousands of console logs.
Run it pointing to a dummy/mock setup (included in repo):
npm run test:chartsOr pass any local raw JSON dump of the game to perform the scan:
npm run test:charts -- ./path-to-your-local-gameconfig.jsonIt will render visualization stacked chunks (chart-rarity, chart-islands, chart-general, etc) right inside the root directory. They are already automatically ignored in your .gitignore.
⚡ By DC Highs
This project is licensed under the terms of the MIT license.