<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>hi, it&#39;s mike</title>
    <link>https://mike.puddingtime.org/tags/rpg/</link>
    <description>Recent content on hi, it&#39;s mike</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>mike@puddingtime.org (mike)</managingEditor>
    <webMaster>mike@puddingtime.org (mike)</webMaster>
    <copyright>© 2026, mike</copyright>
    <lastBuildDate>Sun, 03 May 2026 02:00:50 +0000</lastBuildDate>
    <atom:link href="https://mike.puddingtime.org/tags/rpg/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>tinycrawl - a rogue-y crawler based on Cairn</title>
      <link>https://mike.puddingtime.org/posts/2026-05-03-tinycrawl-a-rogue-y-crawler-based-on-cairn/</link>
      <pubDate>Sun, 03 May 2026 02:00:50 +0000</pubDate><author>mike@puddingtime.org (mike)</author>
      <guid>https://mike.puddingtime.org/posts/2026-05-03-tinycrawl-a-rogue-y-crawler-based-on-cairn/</guid>
      <description>There&amp;rsquo;s more stuff to do, but I got to a sort of MVP on tinycrawl.
It&amp;rsquo;s a text-based rogue-like where you just try to get to the 13th room of a dungeon. There are creatures, loot, and limited options. It&amp;rsquo;s still pretty hard to win and there&amp;rsquo;s still not a lot of room for skill.</description>
      <content:encoded><![CDATA[<p>There are two things about it that are a little novel:</p>
<ol>
<li>
<p>You can make &ldquo;dungeon packs&rdquo; with a Claude Skill that asks a few questions about setting/tone/forgivingness before generating all the loot, creatures, and settings. The dungeon packs are saveable to your device storage.</p>
</li>
<li>
<p>It has an AI GM for when you&rsquo;re in combat and want to try something silly,  stupid, or resourceful.</p>
</li>
</ol>
<p>The GM is user-tunable as part of dungeon pack creation, so if you want a real stickler for the rules, you can have that, and your attempts to <code>Do Something Creative</code> in combat will be adjudicated straight down the middle; or you can make one with theater kid energy who&rsquo;s forgiving of just about any gambit.</p>
<p>During an encounter where you decide to <code>Do Something Creative</code> you get 500 characters to describe it, and the GM makes a ruling.</p>
<p>I extended the Cairn system a little bit to give each piece of loot a characteristic, and each monster a weakness. So if you encounter some undead thing, and have a holy item, you can use the holy item when you <code>Do Something Creative</code> to work against the monster&rsquo;s weakness. If you encounter a hooded thief, you can try to bribe it or convince it a piece of junk is actually a treasure to distract it.</p>
<p>When you first visit the game, you get assigned a passphrase — something like <code>dark-meadow-jagged-39</code> — and that&rsquo;s it for the user account system. You can drag that passphrase around from devisaveablece to device if you want to keep a common ledge of runs.</p>
<p>I need to improve the directions on the dungeon pack system: They get stored on your device and can be loaded from a URL (e.g. a gist) or uploaded from disk. The game comes with several: A classical dark fantasy dungeon crawl, a sort of silly &ldquo;playroom gone wrong,&rdquo; an ice-age barbarian survival thing, and a haunted spaceship. If you click &ldquo;Dungeons&rdquo; in the bottom nav you can pick which ones to install and use.</p>
<p>I just added darkness system: Borrowing the idea from <a href="https://www.thearcanelibrary.com/pages/shadowdark">Shadowdark</a>, light slowly ticks down, replenishable by torches and lanterns as you find them. As the light decreases, you&rsquo;ll be more susceptible to traps, you&rsquo;ll know less about your enemies, and it&rsquo;ll be harder to do stuff. Using the medium itself, the visual treatment of the game dims and details leave the UI as you lose light.</p>
<p><a href="https://photos.smugmug.com/photos/i-fFbLTkL/0/MjzT7Wg33dptpMFV4z5R8XM2CrwwXBxSzjZ4jrBXx/L/i-fFbLTkL-L.jpg" class="glightbox" data-gallery="post-ef7d73ff9d0b190d21157d19e05df8ed"><img src="https://photos.smugmug.com/photos/i-fFbLTkL/0/MjzT7Wg33dptpMFV4z5R8XM2CrwwXBxSzjZ4jrBXx/L/i-fFbLTkL-L.jpg" alt="Light is running low in tiny crawl" loading="lazy"></a></p>
<p>Next up? Not sure. Maybe make it less linear. Right now it is doing what I wanted to do, which is give me a simple little game to play in idle moments.</p>
]]></content:encoded>
    </item>
    <item>
      <title>This RPG thing I thought up</title>
      <link>https://mike.puddingtime.org/posts/2026-04-30-this-rpg-thing-i-thought-up/</link>
      <pubDate>Thu, 30 Apr 2026 19:50:48 +0000</pubDate><author>mike@puddingtime.org (mike)</author>
      <guid>https://mike.puddingtime.org/posts/2026-04-30-this-rpg-thing-i-thought-up/</guid>
      <description>I like Rogue.  I loved old dungeon crawlers in the 8-bit era because they couldn&amp;rsquo;t do that much. So I was sitting around thinking about something fun to do and decided to make a very simple web-based RPG.</description>
      <content:encoded><![CDATA[<p>I like Rogue.  I loved old dungeon crawlers in the 8-bit era because they couldn&rsquo;t do that much. So I was sitting around thinking about something fun to do and decided to make a very simple web-based RPG.</p>
<p>After a little research, I picked an RPG engine (<a href="https://cairnrpg.com">Cairn</a>) because it has an open license and there&rsquo;s plenty of creature and loot content out there.</p>
<p>The game is pretty simple, but I picked two things to customize/make customizable:</p>
<p>First, the game content (creatures, treasures, settings) are all defined in YAML files:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">- id: root_goblin
</span></span><span class="line"><span class="cl">  name: Root Goblin
</span></span><span class="line"><span class="cl">  str: 8
</span></span><span class="line"><span class="cl">  dex: 14
</span></span><span class="line"><span class="cl">  wil: 8
</span></span><span class="line"><span class="cl">  hp: 4
</span></span><span class="line"><span class="cl">  armor: 0
</span></span><span class="line"><span class="cl">  attack: { name: &#34;spear&#34;, die: &#34;d6&#34; }
</span></span><span class="line"><span class="cl">  special: null
</span></span><span class="line"><span class="cl">  tier: weak
</span></span><span class="line"><span class="cl">  weaknesses: [poison]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">- id: hooded_thief
</span></span><span class="line"><span class="cl">  name: Hooded Thief
</span></span><span class="line"><span class="cl">  str: 10
</span></span><span class="line"><span class="cl">  dex: 12
</span></span><span class="line"><span class="cl">  wil: 6
</span></span><span class="line"><span class="cl">  hp: 4
</span></span><span class="line"><span class="cl">  armor: 0
</span></span><span class="line"><span class="cl">  attack: { name: &#34;dagger&#34;, die: &#34;d6&#34; }
</span></span><span class="line"><span class="cl">  special: null
</span></span><span class="line"><span class="cl">  tier: weak
</span></span><span class="line"><span class="cl">  weaknesses: [greed]</span></span></code></pre></div>
<p>Once I&rsquo;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.</p>
<p>Note the <code>weaknesses</code> field: That helps drive the next feature:</p>
<p>The 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&rsquo;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.</p>
<p>So I&rsquo;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:</p>
<p><a href="https://photos.smugmug.com/photos/i-j8VbJgR/0/KcHSkBbnStLxqdW2fsjbSLxJMC5R4dHmp5z4kZnL8/L/i-j8VbJgR-L.png" class="glightbox" data-gallery="post-7163014aee0f266aea69ad0b0a739ed0"><img src="https://photos.smugmug.com/photos/i-j8VbJgR/0/KcHSkBbnStLxqdW2fsjbSLxJMC5R4dHmp5z4kZnL8/L/i-j8VbJgR-L.png" alt="Getting creative with a mirror" loading="lazy"></a></p>
<p>&hellip; and Haiku ajudicates:</p>
<p><a href="https://photos.smugmug.com/photos/i-wMXGDRj/0/LwbJ9fM4pHXbddDqKhcKHBCKP32TpgkNwSXmLwwSb/L/i-wMXGDRj-L.png" class="glightbox" data-gallery="post-7163014aee0f266aea69ad0b0a739ed0"><img src="https://photos.smugmug.com/photos/i-wMXGDRj/0/LwbJ9fM4pHXbddDqKhcKHBCKP32TpgkNwSXmLwwSb/L/i-wMXGDRj-L.png" alt="No luck. The GM is a little uinforgiving. " loading="lazy"></a></p>
<p>For v1, I&rsquo;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&rsquo;s temperament: Everything from the classic by-the-book realism killjoy to what I&rsquo;m calling &ldquo;failed improv class instructor.&rdquo;</p>
<p>You may have also noted with that Hooded Thief creature up there that there&rsquo;s a <code>  weaknesses: [greed]</code> field: The GM uses that to help it judge the effectiveness of your gambit: If you&rsquo;re holding a coin purse and come across the hooded thief, it&rsquo;ll get distracted if you just drop your money and run away.</p>
<p>I 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.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
