A powerful procedural content generation system for dynamic, context aware narratives and interactive experiences. Perfect for games, simulations, and creative applications.
If RPG Event Generator has been helpful to your project, consider buying me a coffee!
npm install rpg-event-generator
const { RPGEventGenerator, generateRPGEvent } = require('rpg-event-generator');
// Simple event generation
const event = generateRPGEvent({
age: 25,
gold: 500,
influence: 15,
career: 'merchant'
});
console.log(event.title); // "Golden Opportunity"
console.log(event.description); // Procedurally generated narrative
console.log(event.choices); // Array of meaningful choices
const generator = new RPGEventGenerator({
theme: 'fantasy'
});
// Generate context aware event
const event = generator.generateEvent({
level: 15,
gold: 2500,
class: 'wizard'
});
console.log(event.title);
console.log(event.description);
console.log(event.choices);
// Generate complete game world
const world = await generator.generateWorld();
console.log(`World: ${world.regions.length} regions, ${world.factions.length} factions`);
// Simulate history
await generator.simulateWorldYears(50);
const history = generator.getHistoricalEvents();
// Register conditional template
generator.registerTemplate('merchant', {
title: "Merchant Encounter",
conditional_choices: [{
condition: { player_gold: { gt: 1000 } },
choice: { text: "Buy rare artifact", effect: { gold: -500 } }
}]
});
const aiGenerator = new RPGEventGenerator({
aiEnhancement: {
provider: 'openai',
apiKey: process.env.OPENAI_API_KEY
}
});
const config = {
theme: 'fantasy',
enableAI: false,
enableDatabase: false,
enableCaching: true,
maxParallelGeneration: 4,
aiEnhancement: {
provider: 'openai',
apiKey: 'your-key'
}
};
generateEvent(context) - Generate single eventgenerateEvents(context, count) - Generate multiple eventsgenerateWorld() - Create game worldregisterTemplate(id, template) - Add custom templateexportTemplates(format, path) - Export to game enginesFull API docs: Documentation
MIT License - see LICENSE file.
// RPG Character Interactions
const generator = new RPGEventGenerator({ theme: 'fantasy' });
const playerState = {
level: 15,
class: 'wizard',
gold: 2500,
reputation: 75
};
const event = generator.generateEvent(playerState);
// Result: "The ancient tome pulses with magical energy..."
// Customer Service Scenarios
const businessGenerator = new RPGEventGenerator({
trainingData: [
'Customer reports billing discrepancy',
'Technical support ticket resolved',
'Product feedback received and processed'
]
});
const scenario = businessGenerator.generateEvent({
department: 'support',
priority: 'high',
customerValue: 85
});
// Interactive Learning Scenarios
const educationGenerator = new RPGEventGenerator({
theme: 'historical',
culture: 'educational'
});
const lesson = educationGenerator.generateEvent({
subject: 'history',
difficulty: 'intermediate',
learningObjectives: ['critical_thinking', 'decision_making']
});
// User Behavior Modeling
const researchGenerator = new RPGEventGenerator({
enableRelationships: true,
enableModifiers: true
});
const simulation = researchGenerator.generateEvent({
userType: 'research_subject',
conditions: ['experimental', 'controlled'],
variables: ['time_pressure', 'cognitive_load']
});
Store and retrieve templates from databases for large-scale applications:
const generator = new RPGEventGenerator({ enableDatabase: true });
await generator.storeTemplateInDatabase(customTemplate);
const retrieved = await generator.getTemplateFromDatabase('template_id');
const searchResults = await generator.searchTemplatesInDatabase({ type: 'combat' });
Generate entire game worlds with factions, regions, and historical events:
const world = await generator.generateWorld();
await generator.simulateWorldYears(50); // Advance world history
const factionPower = generator.getFactionPowerRanking();
Create complex, conditional templates with inheritance and composition:
// Conditional templates
const conditionalTemplate = {
id: 'level_based_event',
conditions: [{ type: 'stat_requirement', field: 'level', operator: 'gte', value: 10 }],
conditional_choices: [{
condition: { type: 'has_item', item: 'magic_sword' },
choice: { text: 'Use magic sword', effect: { damage: 50 } }
}]
};
// Template composition
const composedTemplate = {
id: 'weather_merchant',
composition: [{
template_id: 'merchant_base',
merge_strategy: 'append_narrative'
}, {
template_id: 'weather_effects',
conditions: [{ type: 'random_chance', probability: 0.6 }]
}]
};
Handle large-scale generation with advanced caching and parallel processing:
const generator = new RPGEventGenerator({
enableTemplateCaching: true,
enableEventCaching: true
});
// Generate events in parallel
const events = await generator.generateEventsParallel(100, context, 4); // 4 threads
// Generate in batches for memory efficiency
const batchedEvents = generator.generateEventsBatched(1000, context, 50); // 50 events per batch
Run the included demo to explore all features:
# Using npm script (recommended)
npm run demo
# Direct script call
node demo.js
This will demonstrate event generation, chains, time progression, customization, and more.
npm run demo to see all 30+ features in actionnpm run docs to regenerate API documentationnpm test to execute the comprehensive test suitedemo.js file for interactive examplestest/ directory for usage examplessrc/ - Modular TypeScript source codedocs/ - Complete documentation and guidestemplates/ - Built-in event templatestest/ - Comprehensive test suitescripts/ - Build and export scriptsWe welcome contributions! Please feel free to submit issues, feature requests, and pull requests.
# Clone the repository
git clone https://github.com/ContextWeaver/context-weaver.git
cd context-weaver
# Install dependencies
npm install
# Run tests
npm test
# Run demo
npm run demo
# Build for distribution
npm run build
MIT License - see LICENSE file for details.
Generate infinite possibilities with RPG Event Generator! 🎲✨