# Petar Penović

- **Event:** [Meta Global AI Developer Hackathon](https://cerebralvalley.ai/e/meta-ai-developer-hackathon)
- **When:** Oct 26, 12:00 PM – Nov 4, 9:00 PM (EST)
- **Where:** Online
- **Team:** [Petar Penovic](https://cerebralvalley.ai/u/perelele)
- **GitHub:** https://github.com/petar227p/npc-workshop
- **Demo video:** https://youtu.be/cr5qHfXWg8o
- **Gallery:** https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery
- **Page:** https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/1189

NPC Workshop lets game developers build LLM-driven characters that can’t break their game’s rules.

AI NPCs make great demos, but they are hard to ship: a persuasive player can talk a shopkeeper into free gear, and a model can promise trades the game can’t honor. NPC Workshop solves this by splitting the job. The model plays the character: it talks, haggles and proposes actions. A deterministic ledger owns gold, stock, prices and timers, checks every proposal against code-owned rules and logs every verdict. World state is rebuilt from that event log, so every session can be replayed and audited.

Developers create a character in a visual editor, set its abilities and limits, test it in an isolated session and export a portable .npc.json file that any engine can run over HTTP. A playable demo village shows the full loop: haggle with Brann the blacksmith, accept a checked offer, collect the finished item and watch villagers pass on only what they saw or were told. An experimental Skyrim adapter takes it into a real game, where a checked trade moved actual gold and items in the player’s inventory.

Meta models power every step: Muse Spark runs negotiation, open-weight Muse Spark Open runs villagers and gossip, Muse Image renders delivered items as sprites, and Muse Voice Transcribe handles spoken input.

In live testing, more than 100 attacks, including prompt injection and fake system messages, produced zero rule violations, and a separate model-free proof confirms the ledger refuses invalid actions.

## More from Meta Global AI Developer Hackathon

- [Shule Web](https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/1186)
- [Cirak Agent](https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/1187)
- [Darko Stojchev](https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/1188)
- [Keywatch](https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/1190)
- [GODMODE](https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/1191)
- [Adrian Gajewski](https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/1192)

---

Markdown version of https://cerebralvalley.ai/e/meta-ai-developer-hackathon/hackathon/gallery/1189. Site index for agents: https://cerebralvalley.ai/llms.txt · full text: https://cerebralvalley.ai/llms-full.txt
