@reldens/game-data-generator 0.19.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/CLAUDE.md +97 -0
  2. package/README.md +219 -4
  3. package/package.json +3 -3
package/CLAUDE.md ADDED
@@ -0,0 +1,97 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Package Overview
6
+
7
+ **@reldens/game-data-generator** is a game data generation package for Reldens. It provides utilities to generate balanced game data for RPG systems including:
8
+ - Player experience progression curves
9
+ - Monster/NPC experience reward tables
10
+ - Character attributes and stats scaling per level
11
+ - Configurable generation with validation
12
+ - JSON output for easy integration
13
+
14
+ ## Key Commands
15
+
16
+ ```bash
17
+ # Install dependencies
18
+ npm install
19
+
20
+ # Run tests (if configured)
21
+ npm test
22
+ ```
23
+
24
+ ## Architecture
25
+
26
+ ### Core Classes
27
+
28
+ **GameDataGenerator** (lib/generator/game-data-generator.js):
29
+ - Abstract base class for all generators
30
+ - Handles options validation through validators
31
+ - Manages file output using FileHandler
32
+ - Provides timestamped file naming
33
+ - Core methods: `setReady()`, `setOptions()`, `validate()`, `generate()`
34
+
35
+ **PlayersExperiencePerLevel** (lib/generator/players-experience-per-level.js):
36
+ - Generates player level progression data
37
+ - Calculates experience requirements per level
38
+ - Supports dynamic growth factors
39
+ - Required options: `startExp`, `baseGrowthFactor`, `maxLevel`
40
+ - Optional: `growthIncrease`, `baseGrowthFactorPerLevel`, `jsonFileName`, `generateFolderPath`
41
+ - Output includes: required exp, total exp, growth factor per level
42
+
43
+ **MonstersExperiencePerLevel** (lib/generator/monsters-experience-per-level.js):
44
+ - Generates monster/enemy experience reward tables
45
+ - Supports multiple variations (weak, normal, strong, etc.)
46
+ - Validates experience progression to prevent decreasing values
47
+ - Required options: `levelsExperienceByKey`, `variations`, `decrementProportionPerLevel`
48
+ - Optional: `jsonFileName`, `generateFolderPath`
49
+ - Output includes: exp per kill, kills required, variation factors
50
+
51
+ **AttributesPerLevel** (lib/generator/attributes-per-level.js):
52
+ - Generates character stats/attributes per level
53
+ - Supports multiple entity types with templates
54
+ - Applies scaling factors and variations
55
+ - Required options: `templateBase`, `typeTemplates`, `typesVariations`
56
+ - Optional: `setBaseAsInitialLevel`, `maxLevel`, `typeScaleFactorRandom`, `scaleDivisor`, `levelDivisor`, `jsonFileName`, `generateFolderPath`
57
+ - Output includes: stats by variation and level
58
+
59
+ ### Validators
60
+
61
+ **PlayersExperiencePerLevelValidator** (lib/validator/players-experience-per-level-validator.js):
62
+ - Validates `startExp`, `baseGrowthFactor`, `maxLevel` are provided
63
+
64
+ **MonstersExperiencePerLevelValidator** (lib/validator/monsters-experience-per-level-validator.js):
65
+ - Validates `levelsExperienceByKey`, `variations`, `decrementProportionPerLevel` are provided
66
+
67
+ **AttributesPerLevelValidator** (lib/validator/attributes-per-level-validator.js):
68
+ - Validates `templateBase`, `typeTemplates`, `typesVariations` are provided
69
+
70
+ ## Usage Pattern
71
+
72
+ ```javascript
73
+ const { PlayersExperiencePerLevel } = require('@reldens/game-data-generator');
74
+
75
+ let generator = new PlayersExperiencePerLevel({
76
+ startExp: 100,
77
+ baseGrowthFactor: 1.15,
78
+ maxLevel: 100
79
+ });
80
+
81
+ generator.generate();
82
+ ```
83
+
84
+ ## Dependencies
85
+
86
+ - `@reldens/utils`: Provides Logger and sc (Shortcuts) for safe property access
87
+ - `@reldens/server-utils`: Provides FileHandler for file operations
88
+
89
+ ## Important Notes
90
+
91
+ - All generators validate options before execution
92
+ - Generated files are timestamped to avoid overwriting
93
+ - Output folder defaults to `generated` in current directory
94
+ - All generators use FileHandler for safe file operations
95
+ - Logging uses Logger from @reldens/utils
96
+ - Property access uses sc.get() for safe defaults
97
+ - Follows Reldens coding standards (no else, Yoda conditions, let over const, etc.)
package/README.md CHANGED
@@ -2,18 +2,233 @@
2
2
 
3
3
  # Reldens - Game Data Generator
4
4
 
5
- A tool to create all types of random game data, like levels, experience, attributes, etc.
5
+ A comprehensive tool to generate balanced game data for RPG systems, including player progression, monster rewards, and attribute scaling.
6
6
 
7
- Need some specific feature?
7
+ ## Features
8
8
 
9
- [Request a feature here: https://www.reldens.com/features-request](https://www.reldens.com/features-request)
9
+ - Player experience curve generation with dynamic growth factors
10
+ - Monster/NPC experience reward tables with variations
11
+ - Character attributes and stats scaling per level
12
+ - Configurable templates and variations
13
+ - JSON output for easy integration
14
+ - Validation of all generator options
15
+ - Timestamped output files to prevent overwriting
10
16
 
11
- ---
17
+ ## Installation
18
+
19
+ ```bash
20
+ npm install @reldens/game-data-generator
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ ### PlayersExperiencePerLevel
26
+
27
+ Generates player level progression data with experience requirements.
28
+
29
+ ```javascript
30
+ const { PlayersExperiencePerLevel } = require('@reldens/game-data-generator');
31
+
32
+ let generator = new PlayersExperiencePerLevel({
33
+ startExp: 100,
34
+ baseGrowthFactor: 1.15,
35
+ maxLevel: 100,
36
+ growthIncrease: 0.01,
37
+ jsonFileName: 'player-levels.json',
38
+ generateFolderPath: 'generated'
39
+ });
40
+
41
+ generator.generate();
42
+ ```
43
+
44
+ **Required Options:**
45
+ - `startExp`: Experience required to reach level 2 from level 1
46
+ - `baseGrowthFactor`: Initial growth factor per level (e.g., 1.15 = 15% increase)
47
+ - `maxLevel`: Maximum level to calculate
48
+
49
+ **Optional Options:**
50
+ - `growthIncrease`: Increase in growth factor per level (default: 0)
51
+ - `baseGrowthFactorPerLevel`: Object with specific growth factors per level
52
+ - `jsonFileName`: Output filename (default: auto-generated with timestamp)
53
+ - `generateFolderPath`: Output folder path (default: 'generated')
54
+
55
+ **Output Format:**
56
+ ```json
57
+ {
58
+ "1": {"req": 100, "total": 100, "growthFactor": 1.15},
59
+ "2": {"diff": 15, "req": 115, "total": 215, "growthFactor": 1.16},
60
+ ...
61
+ }
62
+ ```
63
+
64
+ ### MonstersExperiencePerLevel
65
+
66
+ Generates monster/enemy experience reward tables with variations.
67
+
68
+ ```javascript
69
+ const { MonstersExperiencePerLevel } = require('@reldens/game-data-generator');
70
+
71
+ let generator = new MonstersExperiencePerLevel({
72
+ levelsExperienceByKey: {
73
+ "1": {"req": 100},
74
+ "2": {"req": 115},
75
+ ...
76
+ },
77
+ variations: {
78
+ "weak": 0.5,
79
+ "normal": 1.0,
80
+ "strong": 1.5
81
+ },
82
+ decrementProportionPerLevel: {
83
+ "1": 0.1,
84
+ "2": 0.12,
85
+ ...
86
+ },
87
+ jsonFileName: 'monster-rewards.json',
88
+ generateFolderPath: 'generated'
89
+ });
90
+
91
+ generator.generate();
92
+ ```
93
+
94
+ **Required Options:**
95
+ - `levelsExperienceByKey`: Object with experience requirements per level
96
+ - `variations`: Object with variation multipliers (e.g., weak, normal, strong)
97
+ - `decrementProportionPerLevel`: Object with decrement proportions per level
98
+
99
+ **Optional Options:**
100
+ - `jsonFileName`: Output filename (default: auto-generated with timestamp)
101
+ - `generateFolderPath`: Output folder path (default: 'generated')
102
+
103
+ **Output Format:**
104
+ ```json
105
+ {
106
+ "1": {
107
+ "req": 100,
108
+ "weak": {"decrementProportion": 0.1, "randomVariation": 0.5, "exp": 50, "kills": 2},
109
+ "normal": {"decrementProportion": 0.1, "randomVariation": 1.0, "exp": 100, "kills": 1}
110
+ },
111
+ ...
112
+ }
113
+ ```
114
+
115
+ ### AttributesPerLevel
116
+
117
+ Generates character stats/attributes per level with type templates and variations.
118
+
119
+ ```javascript
120
+ const { AttributesPerLevel } = require('@reldens/game-data-generator');
121
+
122
+ let generator = new AttributesPerLevel({
123
+ templateBase: {
124
+ "hp": 100,
125
+ "mp": 50,
126
+ "atk": 10,
127
+ "def": 8
128
+ },
129
+ typeTemplates: {
130
+ "warrior": {
131
+ "hp": 2.0,
132
+ "atk": 1.5,
133
+ "def": 1.8
134
+ },
135
+ "mage": {
136
+ "mp": 2.5,
137
+ "atk": 1.2,
138
+ "def": 0.8
139
+ }
140
+ },
141
+ typesVariations: {
142
+ "common": {"min": 0.8, "max": 1.0},
143
+ "rare": {"min": 1.2, "max": 1.5}
144
+ },
145
+ maxLevel: 50,
146
+ setBaseAsInitialLevel: true,
147
+ jsonFileName: 'attributes.json',
148
+ generateFolderPath: 'generated'
149
+ });
150
+
151
+ generator.generate();
152
+ ```
153
+
154
+ **Required Options:**
155
+ - `templateBase`: Base stats object with initial values
156
+ - `typeTemplates`: Object with stat multipliers per entity type
157
+ - `typesVariations`: Object with variation ranges (min/max)
158
+
159
+ **Optional Options:**
160
+ - `setBaseAsInitialLevel`: Use base stats for level 1 (default: false)
161
+ - `maxLevel`: Maximum level to generate (default: 100)
162
+ - `typeScaleFactorRandom`: Random seed for scaling (default: Math.random())
163
+ - `scaleDivisor`: Divisor for scale calculation (default: 10)
164
+ - `levelDivisor`: Divisor for level calculation (default: 10)
165
+ - `jsonFileName`: Output filename (default: auto-generated with timestamp)
166
+ - `generateFolderPath`: Output folder path (default: 'generated')
167
+
168
+ **Output Format:**
169
+ ```json
170
+ {
171
+ "statsByVariation": {
172
+ "common": {
173
+ "1": {"hp": 100, "mp": 50, "atk": 10, "def": 8},
174
+ "2": {"hp": 112, "mp": 56, "atk": 11, "def": 9},
175
+ ...
176
+ },
177
+ "rare": {
178
+ ...
179
+ }
180
+ },
181
+ "typeScaleFactorRandom": 0.6234567
182
+ }
183
+ ```
184
+
185
+ ## API Reference
186
+
187
+ ### GameDataGenerator (Base Class)
188
+
189
+ Base class for all generators. Not used directly.
190
+
191
+ **Methods:**
192
+ - `setReady(props)`: Initializes generator with options and validates
193
+ - `setOptions(options)`: Sets generator options (implemented by subclasses)
194
+ - `validate()`: Validates options using validator
195
+ - `generate()`: Generates data and saves to file (implemented by subclasses)
196
+
197
+ **Properties:**
198
+ - `currentDate`: Timestamp for file naming
199
+ - `optionsValidator`: Validator instance
200
+ - `fileHandler`: FileHandler from @reldens/server-utils
201
+ - `isReady`: Boolean indicating if generator is ready
202
+
203
+ ### Validators
204
+
205
+ Each generator has a corresponding validator that checks required options:
206
+
207
+ - `PlayersExperiencePerLevelValidator`
208
+ - `MonstersExperiencePerLevelValidator`
209
+ - `AttributesPerLevelValidator`
210
+
211
+ All validators have a `validate(options)` method that returns `true` if valid, `false` otherwise.
212
+
213
+ ## Dependencies
214
+
215
+ - `@reldens/utils`: Logger and Shortcuts utilities
216
+ - `@reldens/server-utils`: FileHandler for file operations
217
+
218
+ ## Output
219
+
220
+ All generators save JSON files to the `generated` folder by default. Files are timestamped to prevent overwriting previous generations.
221
+
222
+ Example output filename: `players-experience-per-level-2025-11-20-14-30-45.json`
12
223
 
13
224
  ## Documentation
14
225
 
15
226
  [https://www.reldens.com/documentation/game-data-generator/](https://www.reldens.com/documentation/game-data-generator/)
16
227
 
228
+ ## Need a Feature?
229
+
230
+ [Request a feature here: https://www.reldens.com/features-request](https://www.reldens.com/features-request)
231
+
17
232
  ---
18
233
 
19
234
  ### [Reldens](https://github.com/damian-pastorini/reldens/ "Reldens")
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@reldens/game-data-generator",
3
3
  "scope": "@reldens",
4
- "version": "0.19.0",
4
+ "version": "0.21.0",
5
5
  "description": "Reldens - Game Data Generator",
6
6
  "author": "Damian A. Pastorini",
7
7
  "license": "MIT",
@@ -37,7 +37,7 @@
37
37
  "url": "https://github.com/damian-pastorini/game-data-generator/issues"
38
38
  },
39
39
  "dependencies": {
40
- "@reldens/utils": "^0.53.0",
41
- "@reldens/server-utils": "^0.39.0"
40
+ "@reldens/utils": "^0.54.0",
41
+ "@reldens/server-utils": "^0.41.0"
42
42
  }
43
43
  }