{
"path": "/posts/2026-04-30-this-rpg-thing-i-thought-up/",
"site": "https://mike.puddingtime.org",
"tags": [
"games",
"rpg",
"claude",
"cairn"
],
"$type": "site.standard.document",
"title": "This RPG thing I thought up",
"description": "After a little research, I picked an RPG engine ([Cairn](https://cairnrpg.com)) because it has an open license and there's plenty of creature and loot content out there. The game is pretty simple, but I picked two things to customize/make customizable: First, the game content (creatures, trea...",
"publishedAt": "2026-04-30T19:50:48.335Z",
"textContent": "\nAfter a little research, I picked an RPG engine ([Cairn](https://cairnrpg.com)) because it has an open license and there's plenty of creature and loot content out there. \n\nThe game is pretty simple, but I picked two things to customize/make customizable:\n\nFirst, the game content (creatures, treasures, settings) are all defined in YAML files:\n\n```\n- id: root_goblin\n name: Root Goblin\n str: 8\n dex: 14\n wil: 8\n hp: 4\n armor: 0\n attack: { name: \"spear\", die: \"d6\" }\n special: null\n tier: weak\n weaknesses: [poison]\n\n- id: hooded_thief\n name: Hooded Thief\n str: 10\n dex: 12\n wil: 6\n hp: 4\n armor: 0\n attack: { name: \"dagger\", die: \"d6\" }\n special: null\n tier: weak\n weaknesses: [greed]\n ```\n\nOnce I've got it working with the initial data, I want to make the data files interchangeable and write a Claude Skill that lets the player answer some simple questions about atmosphere and setting that generates a custom YAML file. \n\nNote the `weaknesses` field: That helps drive the next feature:\n\nThe first thing I noted trying to playthroughs using stock Cairn rules is that it is a super unforgiving system. The game requires you to get through 13 rooms, and I couldn't make it past four without fleeing a lot. I considered nerfing things, or buffing the characters, but I was also just finding the game itself pretty boring. \n\nSo I've added an AI GM (a Haiku API call). When you encounter a creature, you can do the usual attack or flee, but you can also improv using anything in your inventory: \n\n\n\n... and Haiku ajudicates:\n\n\n\nFor v1, I'm just kicking the tires on the virtual GM. Eventually, the same way I want settings, creatures, and loot to be user-definable, I want to be able to define the GM's temperament: Everything from the classic by-the-book realism killjoy to what I'm calling \"failed improv class instructor.\" \n\nYou may have also noted with that Hooded Thief creature up there that there's a ` weaknesses: [greed]` field: The GM uses that to help it judge the effectiveness of your gambit: If you're holding a coin purse and come across the hooded thief, it'll get distracted if you just drop your money and run away. \n\nI still want the game system to be a little tough, and still want to make getting to that 13th room hard, but it might as well be more fun along the way. \n\n\n"
}