
๐ค AI Character Engine
Transform NPCs from Scripted Robots into Memorable Characters
Consistent, personality-driven AI characters with memory and evolving relationships
GITHUB - https://github.com/Luciferjimmy/ai-character-engine
ITCH.IO - https://abhinaw-m4.itch.io/ai-character-engine-npc-dialogue-system
๐ฌ Quick Demo
See it in action! Watch your NPCs come alive with real personalities:
from character_engine import Character, Conversation # Create characters that feel real knight = Character( name="Sir Galadon", personality={"bravery": 9, "loyalty": 8, "wisdom": 6}, goals=["Protect the kingdom", "Find the lost artifact"], speaking_style="formal, honorable, slightly poetic" ) merchant = Character( name="Baron Von Trader", personality={"friendliness": 7, "greed": 8, "cunning": 6}, goals=["Make profit", "Expand business", "Stay safe"], speaking_style="charming, persuasive, money-focused" ) # Watch them interact naturally characters = {"knight": knight, "merchant": merchant} conversation = Conversation(characters, "Medieval marketplace") responses = conversation.run_round("The knight approaches the merchant's stall") for name, response in responses.items(): print(f"{name}: {response}")
Output:
knight: "Good morrow, merchant. Your wares are most exquisite this day." merchant: "Ah, noble knight! For you, a special price on this fine blade..."
โจ Why This Beats Everything Else
Feature | โ Other AI NPCs | โ Our Engine |
---|---|---|
Personality Consistency | Break character after 3-4 exchanges | Perfect consistency across 100+ conversations |
Memory | Goldfish memory, forgets everything | Remembers relationships and past interactions |
Relationships | Static, never change | Evolve naturally based on interactions |
Setup Time | Hours of configuration | 5 minutes to create complex characters |
Cost | $1000+/month for APIs | Free & local with Ollama |
๐ Installation
- Install Ollama
curl -fsSL https://ollama.ai/install.sh | sh
- Pull the AI Model
ollama pull phi3
- Install the Engine
git clone https://github.com/Luciferjimmy/ai-character-engine.git cd ai-character-engine pip install -e .
โ Done! You're ready to create amazing characters.
๐ฎ Use Cases
๐น๏ธ Game Development
shopkeeper = Character( name="Old Man Jenkins", personality={"friendliness": 8, "greed": 6, "wisdom": 7}, goals=["Make money", "Protect his shop", "Help adventurers"], speaking_style="folksy, wise, slightly greedy" ) # NPCs remember player choices! if player_saved_village: response = shopkeeper.think("Player returns after saving the village") # "Hero! The people sing songs of your bravery!"
๐ Educational Tools
einstein = Character( name="Albert Einstein", personality={"intelligence": 10, "creativity": 9, "humor": 7}, goals=["Explain physics simply", "Inspire curiosity"], speaking_style="thoughtful, metaphorical, wise" ) response = einstein.think("Student asks: What is the most beautiful thing about the universe?")
๐ฅ Therapeutic Simulations
therapist = Character( name="Dr. Evans", personality={"empathy": 9, "patience": 8, "insight": 7}, goals=["Help patients", "Provide support", "Guide growth"], speaking_style="compassionate, professional, supportive" )
๐ญ Interactive Stories
characters = {"detective": detective, "suspect": suspect, "witness": witness} story = Conversation(characters, "Murder mystery scene")
๐ Comprehensive Examples
- ๐ฏ Basic Demo
python examples/simple_demo.py
- ๐ฎ Game NPC Demo
python examples/game_npc_demo.py
- ๐ Educational Demo
python examples/educational_demo.py
๐ง API Reference
Character Class
Character( name: str, personality: Dict[str, Any], goals: List[str], speaking_style: str, relationships: Dict[str, int] = None )
Core Methods
response = character.think("Situation description") character.update_relationship("other_character", +2) history = character.get_conversation_history(limit=10)
Conversation Management
conversation = Conversation(characters, "Scenario description") responses = conversation.run_round("Current situation") summary = conversation.get_conversation_summary()
๐ Real Results
Game NPC Demo Output:
Blacksmith: "Hearing strange tales around these parts ain't uncommon..." Tavern Keeper: "Oh dear, I see whispers swirling through the tavern..." Mysterious Stranger: "The stranger's eyes glinted with peculiar curiosity..."
Relationship Evolution:
Blacksmith โ Tavern Keeper: 7/10 (Trusting) Blacksmith โ Stranger: 3/10 (Distrustful)
Natural, believable character dynamics!
๐ ๏ธ Technical Details
- Error Handling
try: response = character.think(situation) except Exception: response = "I need a moment to think about this..."
- Performance
- Response Time: 8โ12s per character
- Memory Efficient: Local only
- Scalable: Unlimited characters
- Requirements
- Python 3.8+
- Ollama (phi3 model)
- RAM: 4GB+
- Storage: 2GB
๐ค Contributing
We love contributors! Bug fixes, features, docs—all welcome. Email - abhinaw00singh@gmail.com
๐ License
MIT License โ free for personal & commercial use. See LICENSE for details.
โ FAQ
Q: How is this different from Character.AI? A: Consistency, local processing, relationship memory, dev-ready.
Q: Is this really free? A: Yes! Only consulting costs extra.
Q: Can I use this in my commercial game? A: Absolutely. MIT = no restrictions.
Q: What if I need help? A: Open an issue or contact us for consulting.
๐ Getting Help
- ๐ Examples:
examples/
folder - ๐ Issues: GitHub tracker
- ๐ก Ideas: Discussions
- ๐ ๏ธ Consulting: Email support
๐ If you love this project, please give it a โญ๏ธ on GitHub!
"Finally, NPCs that don't sound like robots!" โ Abhinaw Singh EMAIL - abhinaw00singh@gmail.com
GITHUB - https://github.com/Luciferjimmy/ai-character-engine