# @reldens/game-data-generator

> Reldens - Game Data Generator

Latest version **0.34.0** (published 2026-09-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install @reldens/game-data-generator
pnpm add @reldens/game-data-generator
yarn add @reldens/game-data-generator
bun add @reldens/game-data-generator
```

## Health

**Score 55/100 (C)** — status: active.

Positive: no vulnerabilities; recently updated; high maintenance score.

Warnings: low downloads; no types; no esm support; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.34.0 |
| Published | 2026-09-07 |
| First published | 2024-03-11 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 360 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 5 |
| Author | Damian A. Pastorini |
| Maintainers | dpastorini |
| Keywords | reldens, game, data, generate, generator, random, nodejs, javascript, js, rpg, multiplayer, npc, player, enemy, enemies, level, experience, stats, attribute |

## Links

- npm: https://www.npmjs.com/package/@reldens/game-data-generator
- Repository: https://github.com/damian-pastorini/game-data-generator
- Issues: https://github.com/damian-pastorini/game-data-generator/issues
- npm.io page: https://npm.io/package/@reldens/game-data-generator

## Dependencies (2)

- [@reldens/utils](https://npm.io/package/@reldens/utils.md) ^0.58.0
- [@reldens/server-utils](https://npm.io/package/@reldens/server-utils.md) ^0.57.0

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 0.34.0 (latest) — 2026-09-07
- 0.33.0 — 2026-08-10
- 0.32.0 — 2026-07-24
- 0.31.0 — 2026-06-21
- 0.30.0 — 2026-05-27
- 0.29.0 — 2026-05-15
- 0.28.0 — 2026-05-08
- 0.27.0 — 2026-04-22
- 0.26.0 — 2026-03-10
- 0.25.0 — 2026-02-01
- 0.24.0 — 2026-01-15
- 0.23.0 — 2026-01-06
- 0.22.0 — 2025-12-31
- 0.21.0 — 2025-11-26
- 0.20.0 — 2025-11-20
- … 19 more at https://npm.io/package/@reldens/game-data-generator/versions

## README

[![Reldens - GitHub - Release](https://www.dwdeveloper.com/media/reldens/reldens-mmorpg-platform.png)](https://github.com/damian-pastorini/reldens)

# Reldens - Game Data Generator

A comprehensive tool to generate balanced game data for RPG systems, including player progression, monster rewards, and attribute scaling.

## Features

- Player experience curve generation with dynamic growth factors
- Monster/NPC experience reward tables with variations
- Character attributes and stats scaling per level
- Configurable templates and variations
- JSON output for easy integration
- Validation of all generator options
- Timestamped output files to prevent overwriting

## Installation

```bash
npm install @reldens/game-data-generator
```

## Usage

### PlayersExperiencePerLevel

Generates player level progression data with experience requirements.

```javascript
const { PlayersExperiencePerLevel } = require('@reldens/game-data-generator');

let generator = new PlayersExperiencePerLevel({
    startExp: 100,
    baseGrowthFactor: 1.15,
    maxLevel: 100,
    growthIncrease: 0.01,
    jsonFileName: 'player-levels.json',
    generateFolderPath: 'generated'
});

generator.generate();
```

**Required Options:**
- `startExp`: Experience required to reach level 2 from level 1
- `baseGrowthFactor`: Initial growth factor per level (e.g., 1.15 = 15% increase)
- `maxLevel`: Maximum level to calculate

**Optional Options:**
- `growthIncrease`: Increase in growth factor per level (default: 0)
- `baseGrowthFactorPerLevel`: Object with specific growth factors per level
- `jsonFileName`: Output filename (default: auto-generated with timestamp)
- `generateFolderPath`: Output folder path (default: 'generated')

**Output Format:**
```json
{
    "1": {"req": 100, "total": 100, "growthFactor": 1.15},
    "2": {"diff": 15, "req": 115, "total": 215, "growthFactor": 1.16},
    ...
}
```

### MonstersExperiencePerLevel

Generates monster/enemy experience reward tables with variations.

```javascript
const { MonstersExperiencePerLevel } = require('@reldens/game-data-generator');

let generator = new MonstersExperiencePerLevel({
    levelsExperienceByKey: {
        "1": {"req": 100},
        "2": {"req": 115},
        ...
    },
    variations: {
        "weak": 0.5,
        "normal": 1.0,
        "strong": 1.5
    },
    decrementProportionPerLevel: {
        "1": 0.1,
        "2": 0.12,
        ...
    },
    jsonFileName: 'monster-rewards.json',
    generateFolderPath: 'generated'
});

generator.generate();
```

**Required Options:**
- `levelsExperienceByKey`: Object with experience requirements per level
- `variations`: Object with variation multipliers (e.g., weak, normal, strong)
- `decrementProportionPerLevel`: Object with decrement proportions per level

**Optional Options:**
- `jsonFileName`: Output filename (default: auto-generated with timestamp)
- `generateFolderPath`: Output folder path (default: 'generated')

**Output Format:**
```json
{
    "1": {
        "req": 100,
        "weak": {"decrementProportion": 0.1, "randomVariation": 0.5, "exp": 50, "kills": 2},
        "normal": {"decrementProportion": 0.1, "randomVariation": 1.0, "exp": 100, "kills": 1}
    },
    ...
}
```

### AttributesPerLevel

Generates character stats/attributes per level with type templates and variations.

```javascript
const { AttributesPerLevel } = require('@reldens/game-data-generator');

let generator = new AttributesPerLevel({
    templateBase: {
        "hp": 100,
        "mp": 50,
        "atk": 10,
        "def": 8
    },
    typeTemplates: {
        "warrior": {
            "hp": 2.0,
            "atk": 1.5,
            "def": 1.8
        },
        "mage": {
            "mp": 2.5,
            "atk": 1.2,
            "def": 0.8
        }
    },
    typesVariations: {
        "common": {"min": 0.8, "max": 1.0},
        "rare": {"min": 1.2, "max": 1.5}
    },
    maxLevel: 50,
    setBaseAsInitialLevel: true,
    jsonFileName: 'attributes.json',
    generateFolderPath: 'generated'
});

generator.generate();
```

**Required Options:**
- `templateBase`: Base stats object with initial values
- `typeTemplates`: Object with stat multipliers per entity type
- `typesVariations`: Object with variation ranges (min/max)

**Optional Options:**
- `setBaseAsInitialLevel`: Use base stats for level 1 (default: false)
- `maxLevel`: Maximum level to generate (default: 100)
- `typeScaleFactorRandom`: Random seed for scaling (default: Math.random())
- `scaleDivisor`: Divisor for scale calculation (default: 10)
- `levelDivisor`: Divisor for level calculation (default: 10)
- `jsonFileName`: Output filename (default: auto-generated with timestamp)
- `generateFolderPath`: Output folder path (default: 'generated')

**Output Format:**
```json
{
    "statsByVariation": {
        "common": {
            "1": {"hp": 100, "mp": 50, "atk": 10, "def": 8},
            "2": {"hp": 112, "mp": 56, "atk": 11, "def": 9},
            ...
        },
        "rare": {
            ...
        }
    },
    "typeScaleFactorRandom": 0.6234567
}
```

## API Reference

### GameDataGenerator (Base Class)

Base class for all generators. Not used directly.

**Methods:**
- `setReady(props)`: Initializes generator with options and validates
- `setOptions(options)`: Sets generator options (implemented by subclasses)
- `validate()`: Validates options using validator
- `generate()`: Generates data and saves to file (implemented by subclasses)

**Properties:**
- `currentDate`: Timestamp for file naming
- `optionsValidator`: Validator instance
- `fileHandler`: FileHandler from @reldens/server-utils
- `isReady`: Boolean indicating if generator is ready

### Validators

Each generator has a corresponding validator that checks required options:

- `PlayersExperiencePerLevelValidator`
- `MonstersExperiencePerLevelValidator`
- `AttributesPerLevelValidator`

All validators have a `validate(options)` method that returns `true` if valid, `false` otherwise.

## Dependencies

- `@reldens/utils`: Logger and Shortcuts utilities
- `@reldens/server-utils`: FileHandler for file operations

## Output

All generators save JSON files to the `generated` folder by default. Files are timestamped to prevent overwriting previous generations.

Example output filename: `players-experience-per-level-2025-11-20-14-30-45.json`

## Documentation

[https://www.reldens.com/documentation/game-data-generator/](https://www.reldens.com/documentation/game-data-generator/)

## Need a Feature?

[Request a feature here: https://www.reldens.com/features-request](https://www.reldens.com/features-request)

---

### [Reldens](https://github.com/damian-pastorini/reldens/ "Reldens")

##### [By DwDeveloper](https://www.dwdeveloper.com/ "DwDeveloper")

---
_Source: https://npm.io/package/@reldens/game-data-generator · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
