ainpcengine
v1.0.0
Published
Node.js SDK for AINPCEngine - AI-powered NPC engine for games
Maintainers
Readme
AINPCEngine Node.js SDK
Official Node.js SDK for AINPCEngine - AI-powered NPC engine for games.
Create NPCs with real personalities, memories, and dynamic dialogue. Every NPC remembers, gossips, and reacts.
Install
npm install @ainpcengine/nodejs-sdkQuick Start
const AINPCEngine = require('@ainpcengine/nodejs-sdk');
const client = new AINPCEngine({
baseUrl: 'https://ainpcengine.com',
apiKey: 'YOUR_API_KEY', // Get one at https://ainpcengine.com
gameId: 'your-game-id',
});
// Talk to an NPC
const result = await client.say(npcId, 'player_1', 'I need a sword', {
location: 'blacksmith_shop',
timeOfDay: 'evening',
});
console.log(result.response.dialogue);NPC CRUD
// Create
const npc = await client.createNPC({
name: 'Grok the Blacksmith',
personality: {
traits: ['gruff', 'honest'],
speechStyle: 'direct, no-nonsense',
backstory: 'Former soldier turned smith...',
values: ['family', 'hard work'],
},
role: 'merchant',
faction: 'ironforge',
});
// List all NPCs for your game
const npcs = await client.listNPCs();
// Get single NPC
const grok = await client.getNPC(npcId);
// Update
await client.updateNPC(npcId, {
location: 'market_square',
mood: { emotion: 'happy', intensity: 0.8 },
});
// Delete
await client.deleteNPC(npcId);Generate NPCs
// Generate single NPC with full persona (OCEAN, schedule, psychology)
const npc = await client.generateNPC({ role: 'merchant' });
// Generate batch with social relationships
const { npcs, socialLinks } = await client.generateBatch({ count: 5 });Events
// Player dialogue
const result = await client.say(npcId, playerId, message, context);
// Player approaches NPC
const result = await client.approach(npcId, playerId, context);
// Player leaves NPC
const result = await client.leave(npcId, playerId, context);
// Trade request
const result = await client.requestTrade(npcId, playerId, context);
// NPC autonomy tick (hourly world simulation)
const result = await client.ambientTick(npcId, context);
// NPC gossip
const result = await client.gossip(npcId, context);
// Generic event (21 event types supported)
const result = await client.sendEvent(npcId, {
type: 'combat_started',
playerId,
context,
});Game Context
const context = {
location: 'blacksmith_shop',
timeOfDay: 'evening',
weather: 'rain',
nearbyNPCs: ['merchant_1'],
playerReputation: 75,
playerLevel: 5,
activeQuests: ['find_sword'],
recentEvents: ['helped_village'],
};Also Available
Get an API Key
Sign up at ainpcengine.com to get your API key.
License
MIT - Copyright (c) 2026 Joe Wee / Tyga.Cloud Ltd.
