@dchighs/dc-statistics
v0.1.0
Published
Powerful data extraction and statistical generation utilities for Dragon City configurations.
Maintainers
Readme
@dchighs/dc-statistics 📊🐉
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.
📦 Installation
You can install the library via npm, yarn, or pnpm:
npm install @dchighs/dc-statistics⚠️ Peer Dependencies
To parse the metrics properly, your project must have the core DTOs installed:
npm install @dchighs/dc-config🚀 Usage
The 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();📈 Extracted Data Structure
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:
1. items (Item Types Statistics)
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.
2. dragons (Dragon Statistics)
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.
3. islands (Active Events / Islands Metrics)
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.
4. Extracted Global Variables
Global disconnected numeric keys are grouped here for convenience:
maxLevelfor the current game season limit.chestsCountunique chests modeled.dragonCollectionsCount.dragonSkinsCount.
🛠️ Chart Tests Locally
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
License
This project is licensed under the terms of the MIT license.
