One thousand lightbulbs

Personal principles for story gaming

Plenty of games will tell you what you need to do as a GM, but one thing Vincent and Meguey Baker’s Apocalypse World does really well, is codify those tasks into your agenda and your principles.

Apocalypse World says this about your agenda:

Everything you say, you should do it to accomplish [your agenda], and no other.

Your agenda is a set of a few (in this case, three) things that direct your play. The agenda in Apocalypse World is:

  • Make Apocalypse World seem real.
  • Make the players’ characters’ lives not boring.
  • Play to find out what happens.

Under this, you have a set of principles, whose purpose is to direct play at that mid-level. The book says:

Whenever someone turns and looks to you to say something, always say what the principles demand.

Your principles are a set of broad play techniques and patterns that you can use to make the game run a certain way, in pursuit of the agenda. For example, one of your principles is ask provocative questions and build on the answers. Which will obviously make the world seem real, and also is part of that whole playing-to-find-out thing we’re all interested in these days.

Now this is a pretty cool tool: it means you can tell the GM what they should be doing at a high level (the agenda), and then tie that to mid- to low-level actions they should take to ensure that the game flows in that direction (the principles)1. You can see its influence in a lot of modern story-games - see for example Blades in the Dark and its derivatives, which take a lot of that guidance even as they diverge from move-based play.

Sublime Text basic plugins

The hard drive on my laptop recently ate itself, and while I was able to recover most of my important data through the magic of regular backup, I did lose a few files. Among them: my directory of custom SublimeText plugins. It’d been a good while since I had to make a Sublime Text plugin, so this was a good refresher course.

While I’ve built a few plugins over the course of time, the two main ones I miss were:


It’s coming up to holiday time (and I haven’t updated this thing in ages!). I ended up falling into a second-hand bookstore on Friday, both to pick up a secret Santa present and also to see what else caught my eye. I came across a copy of The Cloudspotter’s Guide, which seemed suitably whimsical for a present (while also being somewhat interesting), and completely separately, a copy of the selected works of Percy Bysshe Shelley.

It wasn’t until later that I realised the two were inextricably linked:


Paul Beakley, over at the Indie Game Reading Club, posted about a little ‘zine game called Goblinville:

Goblinville is a very clever mash-up of several of my favorite games. There’s a very strong thread of Blades in the Dark in defining position (good/normal/bad), you spread your pool of dice and evaluate them on boxed elements of your task a la Psi-Run, your bedraggled antiheroes shuttle back and forth between dungeons and Goblinville a la Torchbearer, grind through light and food and conditions on an oppressive action schedule (Torchbearer again), hexcrawling a la Forbidden Lands (and other OSR games) to get to the dungeon. It’s a best-of anthology of the best RPG tech of the past several years, sitting innocuously atop a trivial-looking OSR-adjacent dungeon delving game.

A small piece of work

The writer Austin Kleon called his blog a refrigerator:

I make something, or I clip out something I like, and I put it on the refrigerator. The next day, I go and find something else to put on the fridge.

Shifting to netlify

A quick housekeeping note - this blog is now hosted on netlify. Netlify is a hosting company who focus on static site hosting, which is pretty exciting given how this thing was previous hosted on an Amazon S3 instance whose approach to static sites was pretty much: “Eh, I guess you can do it here.”

In contrast, Netlify is built not just to accept static site hosting, but to encourage it. No longer do I have to produce every single html page locally and push it to the host: instead, I can git push the whole thing to my remote repo, and Netlify does the whole compilation/rendering thing for me.

The case of the missing zero index

R is 1-indexed. Some people probably get unreasonable riled up about this.

arr <- c("first entry", "second entry", "third entry")
arr[1] # => [1] "first entry"

But what happens if you try to use 0 as an index?