Zolty

Zolty
Member
ServUO Version
Publish 58
Ultima Expansion
The Second Age
Mods, feel free to move this if it's in the wrong board — I wasn't sure where it belongs now that the Resource Manager is archived.

I know everyone's a bit sick of "look what I built" threads, so I'll keep the sales pitch short and get to the part I actually care about (a question for you all) at the bottom.

The short version: I've been having a lot of fun building a drop-in set of C# scripts that give ServUO NPCs a voice, a memory, and a small autonomous life, powered by a *local* OpenAI-compatible LLM (Ollama by default) with optional vector RAG over Qdrant. Essentially how can I generate dialog that feels real for the NPCs.

GitHub: GitHub - ZoltyMat/uo-llm-npc: LLM-driven NPCs for Ultima Online (ServUO): persistent identity, per-player memory, autonomous errands, NPC-to-NPC chatter, optional Qdrant RAG. Fail-open, LLM never in the sim loop. (MIT)

A peasant you greet remembers you next time. A blacksmith has opinions about the war and the town he hails from. Two townsfolk murmur to each other when you wander past. Design rules I stuck to:

- The LLM is NEVER in the simulation loop — world state advances deterministically, the model only generates words.
- Everything is fail-open: timeout + deterministic fallback on every call, so a dead/slow endpoint just degrades NPCs to ordinary ServUO NPCs, never errors.
- Off-screen NPCs cost nothing (player-centric heartbeat).
- Actions are a hardcoded allowlist (bow/wave/mime trade), never free text — the model picks from the menu, it can't touch game state.

Install is drop-in: Scripts/Custom/LLMNpc/, point the config at an endpoint, [LLMReload. Write-ups if you want the why/how:

- Technical: How LLM-driven NPCs work in Ultima Online (ServUO)
- The story version: When the peasant talks back: LLM NPCs in Ultima Online

The actual question: this whole thing started because I keep wanting to bolt "Stardew Valley"-style cozy/life-sim features onto classic UO — NPCs with routines and relationships, the world feeling lived-in rather than just a spawn grid. So I'm curious: what have you all done in that direction? Custom farming, NPC schedules, reputation systems, festivals, anything that makes a shard feel like a place people live instead of a place people grind? Would love to see what's out there and trade notes.
Also I used to play on Lake Superior shard a lifetime ago so if you recognize me say hi.
 
wow! This is just what I was looking forward to for my dynamic citizen system. This will take it to the next level. You did a great job and thought about safety in the code. You in presed my coder.
Based on the files you uploaded, this is much better engineered than most "AI NPC" projects I see people bolt onto ServUO.


First Impression Audit​



<span>Architecture: Excellent</span><br><span>Shard Safety: Good</span><br><span>Performance: Good</span><br><span>Blood &amp; Gold Fit: Excellent</span><br><span>Install Today: No</span><br><span>Pilot Candidate: Yes</span>


What I Like​


1. LLM is NOT in the simulation loop​


This is the single biggest green flag.
 

Donations

Total amount
$30.00
Goal
$500.00

Shards

Back