Where to from here?

Saturday, October 3rd, 2015 | Uncategorized | No Comments

Closing speech at the end of PyConZA 2015.

We’ve reached the end of another PyConZA and I’ve found myself wondering: Where to from here? Conferences generate good idea, but it’s so easy for daily life to intrude and for ideas to fade and eventually be lost.

We’ve heard about many good things and many bad things during the conference. I’m going to focus on the bad for a moment.

We’ve heard about imposter syndrome, about a need for more diversity, about Django’s flaws as a web framework, about Python’s lack of good concurrency solutions when data needs to be shared, about how much civic information is locked up in scanned PDFs, about how many scientists need to be taught coding, about the difficulty of importing CSV files, about cars being stolen in Johannesburg.

The world is full of things that need fixing.

Do we care enough to fix them?

Ten years ago I’d never coded Python professionally. I’d never been to a Python software conference, or even a user group meeting.

But, I got a bit lucky and took a job at which there were a few pretty good Python developers and some time to spend learning things.

I worked through the Python tutorial. All of it. Then a few years later I worked through all of it again. I read the Python Quick Reference. All of it. It wasn’t that quick.

I started work on a personal Python project. With a friend. I’m still working on it. At first it just read text files
into a database. Slowly, it grew a UI. And then DSLs and programmatically generated SQL queries with tens of joins. Then a tiny HTML rendering engine. It’s not finished. We haven’t even released version 1.0. I’m quietly proud of it.

I wrote some games. With friends. The first one was terrible. We knew nothing. But it was about chickens. The second was better. For the third we bit off more than we could chew. The fourth was pretty awesome. The fifth wasn’t too bad.

I changed jobs. I re-learned Java. I changed again and learned Javascript. I thought I was smart enough to handle
threading and tons of mutable state. I was wrong. I learned Twisted. I couldn’t figure out what deferreds did. I wrote my own deferred class. Then I threw it away.

I asked the PSF for money to port a library to Python 3. They said yes. The money was enough to pay for pizza. But it was exciting anyway.

We ported another library to Python 3. This one was harder. We fixed bugs in Python. That was hard too. Our patches were accepted. Slowly. Very slowly. In one case, it took three years.

Someone suggested I run PyConZA. I had no idea how little I knew about running conferences, so I said yes. I asked the PSF for permission. They didn’t know how little I knew either, so they said yes too. Luckily, I got guidance and support from people who did. None of them were developers. Somehow, it worked. I suspect mostly because everyone was so excited.

We got amazing international speakers, but the best talk was by a local developer who wasn’t convinced his talk would interest anyone.

I ran PyConZA three more times, because I wasn’t sure how to hand it over to others and I didn’t want it to not happen.

This is my Python journey so far.

All of you are at different places in your own journeys, and if I were to share some advice from mine, it might go as follows:

  • Find people you can learn from
    • … and make time to learn yourself
  • Take the time to master the basics
    • … so few people do
  • Start a project
    • … with a friend(s)
  • Keep learning new things
    • … even if they’re not Python
  • Failure is not going to go away
    • … keep building things anyway
  • Don’t be scared to ask for money
    • … or for support
    • … even from people who aren’t developers
  • Sometimes amazing things come from one clueless person saying, “How hard can it be?”
  • Often success relies mostly on how excited other people are
  • Stuff doesn’t stop being hard
    • … so you’re going to have to care
    • … although what you care about might surprise you.

Who can say where in this complicated journey I changed from novice, to apprentice, to developer, to senior
developer? Up close, it’s just a blur of coding and relationships. Of building and learning, and of success and

We are all unique imposters on our separate journeys — our paths not directly comparable — and often wisdom seems largely about shutting up when one doesn’t know the answer.

If all of the broken things are going to get fixed — from diversity to removing the GIL — it’s us that will have to fix them, and it seems unlikely that anyone is going to give us permission or declare us worthy.

Go build something.

So what is this roleplaying thing anyway?

Sunday, August 16th, 2015 | Roleplaying | No Comments

I ran a roleplaying module [1] for some friends from work and after initially neglecting to explaining what roleplay is, I wrote this:

Roleplaying is a form of collaborative storytelling — a group of people gathering to tell a story together. This broad definition covers quite a range of things — one can tell very different kinds of stories and collaborate in very different ways.

What I’m planning to run is called “tabletop roleplaying” [2]. The stories told centre around a group of characters (the protagonists in a movie). Each person playing is in charge of one of these main characters, except for one person who has no character and instead handles everything that isn’t one of the main characters (they are a bit like the director of a movie).

Tabletop roleplaying is a little like a radio drama — almost everything is done by narrating or speaking in character. You’ll be saying things you want your character to say and describing the actions you want your character to take. Light acting, such as putting on accents or changing tone of voice or changing posture, can be quite fun, but is by no means a requirement.

The “director”, also called the “storyteller” or “DM” [3], describes the situations the main characters find themselves in, decides on the consequences of their actions and takes on the role of minor supporting characters and antagonists (often villains, because they’re exciting). The storyteller is also an arbitrator and a facilitator and attempts to maintain consensus and suitable pacing of the story.

Often you’ll want to have your character attempt an action that might not succeed [4]. For example, they might want to shoot a villain, charm their way past a bouncer, pick a lock or run across a burning bridge. In some cases success will be more likely than others. A character who is good looking or persuasive might find charming the bouncer easy. A character who has never picked up a gun might find shooting the villain hard.

The set of rules used to determine success or failure is called “the system”. The rules might be as simple as “flip a coin” or they might take up a whole book [5]. Dice are a commonly used way of randomly determining results with high numbers typically indicating more successful outcomes and lower numbers less successful ones.

Since the real world is very very complicated, the rules usually model different aspects of it in varying degrees of detail and this often sets the tone of the story to some extent. For example, a system for telling stories about bank robbers in the 1920s might have very detailed rules on vault locks, while a system for telling fantasy stories will likely have special rules for elves and dwarves.

All systems have shortcomings, and when these are encountered it’s usually the storyteller’s job to apply common sense and tweak the outcome accordingly.

The system I’m planning to use is an extremely simplified version of Dungeons & Dragons, 3rd Edition. The full rules run to many books. I’m hoping to explain the few rules we’ll be using in 10-15 minutes.

The story I’m planning to run focuses on a down-on-their-luck rock band about to enter a battle of the bands contest. The twist is that it’s a fantasy setting so there are elves and dwarves and, of course, in the hands of suitably skilled musicians, music is literally magical.

Some practical considerations

Someone has to supply the table to sit around. This is the person hosting the game. Ke can be a player or the storyteller or even uninvolved [6]. Traditionally the host also supplies a kettle and tea or coffee.

Everyone needs to show up and sit at the table, preferably roughly at the same time. This is surprisingly hard.

In order to remain at the table for prolonged periods, one needs things to nibble on. Traditionally people who are not the host bring snacks and drinks of various kinds. Roleplayers seem to take a perverse delight in bringing the unhealthiest snacks they can find, but this is perhaps a tradition best improved on.

Remembering the details of the story can be tricky, so it’s often useful to scribble short notes for oneself. A pen and paper come in handy.

I’ll give each player a couple of pages of information about their character. These are called the “character sheet”. The primary role of the character sheet is to supply margins to scribble notes and doodles in (see above).

It’s likely that time will fly remarkably quickly. If there are six of us, each person will get on average less than ten minutes of “screen time” per hour and probably a lot less given that the storyteller usually uses more than their fair share and there are always distractions and side tracks like discussing the rules or office gossip [7]. If we run out of time, we can always continue the story another day if we’re excited enough.

Lastly, the point is to have fun and tell an interesting story [8].


Host: Person who supplies the table, and usually warm beverages like tea and coffee.

Table: Thing one plays at.

Storyteller: The person managing the world the story takes place in, the consequences of players actions and playing the minor characters and antagonists.

Players: The people who are not the storyteller.

Player character: One of the protagonists of the story. Each player has their own player character to narrate.

NPC: Non-player character. All the characters in the story who are not player characters.

RPG: Roleplaying Game. Also rocket-propelled grenade.

System: The rules used to determine the outcomes of risky actions.

Dice: Things one rolls. Usually because one is required to do so by the rules, but often just for fun.

Fun: The point. :)


[1] The module was This is Vörpal Mace. If you’re keen to play it, you can download it from Locustforge.

[2] So called because it usually takes place around a table.

[3] “DM” stands for “Dungeon Master” and is a silly legacy term from the earliest tabletop roleplaying games which mostly focused on a group of heroes running around vast dungeons full of traps and monsters. The storyteller’s role was mostly to invent traps and monsters, hence the title.

[4] Because otherwise the story would be very boring. :)

[5] A whole book is far more common. :P

[6] Although letting six people invade your house for an evening for an activity you’re not involved in requires a special kind of friendship.

[7] One can avoid this time-divided-by-number-of-people limit by having multiple scenes running concurrently. This is a lot of fun, but hell on the storyteller. :)

[8] And it’s easy to lose track of this amongst all the details of playing your character, keeping track of what’s happening and figuring out the rules.

[9] This footnote is not related to anything.

Character Creation 3000W

Thursday, August 21st, 2014 | Roleplaying | No Comments

by Simon Cross, Mike Dewar and Adrianna Pińska

Your character creation skills have progressed far beyond writing
numbers on paper. Your characters have deftly crafted manerisms and
epic length backgrounds. They breathe emotion and seem more life-like
than many of your friends.

Yet, somehow, when you sit down at a table to play your beautiful
creations, things don’t quite work out.

Perhaps the story heads in an unexpected direction, leaving your
creation out of place and struggling to fit in? Or maybe they’re fun
to play initially but their actions begin to feel repetitive and

If any of this sounds familiar, read on.

Reacting to failure

It’s easy to spend all your time imagining a character’s successes —

their victories and their crowning moments — but what happens when
they fail? How do they respond to minor setbacks? And big ones?

Maybe they’re stoic about it? Perhaps it’s likely to cause a crisis of
faith? Maybe they react by doubling down and uping the stakes? Maybe
they see failure as an opportunity to learn and grow? Perhaps they’re
accustomed to failure? Perhaps they see failure as a sign that they’re
challenging themselves and pushing their abilities?

The dice and the DM are going to screw you. Make sure you have a plan
for how to roleplay your character when they do.


A character’s goals are things strongly tied to specific events. A
philosophy colours every situation. The two are often aligned, but a
philosophy is more broadly useful. It gives you a handle on how your
character might behave in circumstances where it is not otherwise
obvious what they would do.

To take a hackneyed example: your backstory might involve punishing an
old partner who screwed you. This goal could feed a number of
rather different philosophies:

  • “I always keep my word, and I promised Jimmy I’d get him back.”
  • “Any situation can be solved with enough violence.”
  • “Karma controls the universe. What goes around comes around.”

The goal is the same, but each philosophy implies very different
day-to-day behaviour.

There are going to be times when other characters’ plots and goals are
centre-stage, and it behooves us as roleplayers to have a plan for
these awkward (and hopefully brief) moments. A philosophy allows your
character to participate in others’ plots as a unique and distinct
individual, rather than as a bored bystander.

Your character’s philosophy becomes vitally important when paradigm
shifts occur in-game. Setting changes erode the importance of lesser
goals and past history and create a strong need for a philosophy that
guides your character’s immediate responses and further development.

It may be interesting to construct characters with goals that
contradict their philosophy. For example, a pacifist might wish to
exact revenge on the person who killed their brother. This creates an
interesting conflict that will need to be resolved.

Randomly fucking with people is not a philosophy.

Interacting with colleagues

Your character is going to spend a lot of time interacting with their

colleagues — the other player characters — so it’s worthwhile
thinking about how they do that.

It’s tempting (and a bit lazy) to think of characters as relating to
everyone else the same way. This leads to loners and overly friendly
Energizer bunnies, both of which get old very quickly.

Avoid homogenous party dynamics.

If your character’s interactions with the other player characters are
all the same, you have failed.

Varied interactions also help make party disagreements more
interesting. Without varied interactions, you have to resolve all
disagreements by beating each other over the head with the logic stick
until consensus (or boredom) is reached. Unique relationships and
loose factions make disagreements more interesting to roleplay and
help the party find plausible lines along which to unite for a given

If your character is part of a command structure, spend some time
thinking about how they respond to orders they disagree with. Remember
that the orders are likely issued by someone your character knows and
has an existing relationship with. What is that relationship?

Also keep in mind that your character has likely been given such
orders before, and since they appear to still be part of the command
structure, they’ve probably come to terms with this in some way that
both they and their immediate superiors can live with.

Obviously everyone has their limits, though — where are your
character’s? How much does it take for other player characters or
NPCs to cross the line?


Sometimes even if you do everything right you find yourself in a
situation where your character is no longer fun to play. Maybe the
campaign took an unexpected turn or you’ve just run out of ideas for
them as they are. It’s time for your character to change — to embark
on a new personal story arc.

Great characters aren’t static. They grow and react to events around
them. Perhaps a crushing defeat has made them re-consider their
philosophy — or made them more committed to it? Or maybe frustration
with their current situation has made them reconsider their options?

It helps to think broadly about how your character might develop while
you’re creating them. Make sure you’d still find the character
interesting to play even if their stance on some important issues
shifted. Don’t become too invested in your character remaining as they
are. Be flexible — don’t have only one plan for character

Your character’s philosophy and general outlook can be one of the most
interesting things to tweak. Small changes can often have big
ramifications for how they interact with others.

Don’t feel you have to leave character development for later in the
campaign! The start of a campaign is often when character changes are
most needed to make a character work well and it sets the stage for
further character development later on.


Think about how you convey who your character is to the other
players. They’re probably not going to get to read your epic
backstory, so they’re going to have to learn about who your character
is in other ways.

Likely the first thing people will hear about your character is his or
her name — so make it a good one. It’s going to be repeated a lot so
make sure it conveys something about who your character is. If they’re
an Italian mobster, make sure their name sounds like they’re an
Italian mobster. That way whenever the DM or another player says your
character’s name, it reminds everyone who your character is.

The second thing people hear will probably be a description of your
character. Take some time to write one. Don’t rely on dry statistics
and descriptions. Stick to what people would see and remember about
your character if they met him or her for a few minutes. Don’t mention
hair colour unless hair is an important feature.

After introductions are done, you probably won’t get another
invitation to monologue about your character. So do it in character
instead. Tell the NPC about that time in ‘Nam. Regale the party with
tales from your epic backstory. As in real life, try not to ramble on,
but equally, don’t shy away from putting your character in the
spotlight for a few moments. Continually remind the others at the
table who your character is.

Last but not least, remember that the most epic backstory is pointless
if no one finds out about it. The point of dark secrets is for them to
be uncovered and for your character to confront them.


Don’t fear failure. Have a philosophy. Have varied interactions with
others. Embrace change. Share who you are.


  • Kululaa dot COMMMM!
  • Mefridus von Utrecht (for a philosophy that involves others)
  • Attelat Vool (for starting life after failure)

This article was also published in the CLAWmarks 2014 Dragonfire edition.

Using a Telkom Huawei modem under Ubuntu

Sunday, July 8th, 2012 | Uncategorized | No Comments

Telkom sell a wireless land-line phone build on the Huawei ETS6630 chipset. Under the hood it’s essentially a cellphone in a land-line form factor and it has a USB connector on the side that allows it to function as a USB GSM modem. However, there are a couple of obstacles to getting it running under Linux (specifically Precise):

  • When first plugged into a USB port, it’s just a USB storage device (containing the Windows drivers). It needs to be sent a special command to make its GSM modem available.
  • There is a utility for doing this (usb_modeswitch) but the version in Precise doesn’t pick up Telkom’s phone by default.

To help usb_modeswitch along, create /etc/usb_modeswitch.d/12d1:1011 containing the configuration needed for the Telkom phone:

# /etc/usb_modeswitch.d/12d1:1011
# Huawei ETS6630

The “12d1″ and “1011” are the vendor and product code that identify the device. The TargetClass tells usb_modeswitch how to recognize when the GSM modem has been activated. HuaweiMode specifies the command to send to activate the device.

Then edit /lib/udev/rules.d/40-usb_modeswitch.rules to add:

# /lib/udev/rules.d/40-usb_modeswitch.rules
# Huawei ETS6630
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1011", RUN+="usb_modeswitch '%b/%k'"

This tells udev to call usb_modeswitch when the Telkom phone is connected. Unfortunately these rules can’t just be put into /etc/udev/rules.d/ because 40-usb_modeswitch.rules includes additional actions needed to help recognize the device as a GSM modem.

If everything is working, you should now be able to restart NetworkManager and add a new Mobile Broadband connection via NetworkManager’s GUI. If things go wrong you can watch what is happening by tailing /var/log/syslog and watching what happens when you plug the Telkom phone into the USB port. Using “lsusb” and “lsusb -v” to look at what interfaces the Telkom phone is currently providing and poking the phone directly with “usb_modeswitch -v 12d1 -p 1011 -H” can also help. Note that running “usb_modeswitch” from the command-line won’t be enough to get the phone picked up as a USB serial device (that’s what all the additional rules in 40-usb_modeswitch.rules are for).

Hopefully I can get these fed back to the maintainer of the usb-modeswitch-data package and this blog post will become irrelevant. :)

Addendum: You might need to `modprobe options` and `modprobe usbserial` to get this to work (it looks like usb_modeswitch is meant to do this but my hacky additions don’t appear to get those steps to happen).

Where is my parcel going?

Monday, November 8th, 2010 | Uncategorized | No Comments

Darth Pixie

Monday, January 18th, 2010 | Photos | No Comments

Darth Pixie

[Currently sitting on desk in study.]

Apocalypse Pony Confronts the Carebears

Monday, January 18th, 2010 | Photos | No Comments

Apocalypse Pony Confronts the Carebears

[Given to Anna and Ollie at their wedding.]

Drow Casts Fireball Before Leaving

Monday, January 18th, 2010 | Photos | No Comments

My mom gave me a sand art kit for my birthday. Result 1/3.

Drow Casts Fireball Before Leaving

[Given to confluence on the occasion of her 28th birthday.]

The Rinkhals has Eclectic Tastes (PyWeek 9)

Monday, September 7th, 2009 | Uncategorized | No Comments

This past week Confluence, Jerith, Nitwit, David and I took part in PyWeek 9 — an online challenge to write a computer game in one week. The result is Operation Fox Assault. It’s a bit like what Warcraft would have been if the protagonists were chickens and the game had been written in a week. Mac, Windows and Linux downloads are available on our team page.

Now for some general musings on the PyWeek that was.

Each PyWeek begins with the entrants voting on a theme. The result is announced at midnight (GMT) on a Saturday and this is the starting gun for the one week of development. Final submissions must be uploaded before midnight the following Saturday, although there is a twenty-four hour grace period after that to allow developers to fix critical bugs or sort out problems with packaging and uploading their entries.

This PyWeek’s theme was ‘Feather’. The Sunday morning after the announcement the core Rinkhals team gathered at the Yola offices to brainstorm game ideas and strategise. I think it was Jerith that came up with the spark that resulted in the Operation Fox Assault concept but even before the idea was fully formed the entire team was running with it.  A few whiteboard sketches later and we were stuck in to game development. Initially Confluence was doing artwork, Jerith was creating the tile map and Nitwit and I were running around putting general architecture such as the game engine in place.

Based on discussions overheard on th #pyweek channel it seems we were one of the few teams to get off to a rapid start. Many of those represented on the channel were still hunting around for basic game concepts on the second day of the competition.

Looking back at that first session there were two things that were to aid us greatly in the week ahead:

  • We had a good concept that the entire team was enthusiastic about.
  • We were realistic about what was achievable. Nitwit pointed out that we each had about twenty hours of development time available and although we did extend that a bit by working long evenings during the week, I think it was a solid estimate of the subjective time available.

At the end of the first day we had something that ran and displayed the game board.

The rest of the week was a frenzy of development (except for Tuesday evening which was spent playing V:tES). On Wednesday Jerith came round to our place to code. Sometime in the middle of the week David joined the team and added sound. Stubbed code written by one developer was suddenly leapt on by other developers and turned into fully fledged features.

From a programming perspective the tight deadline was surprisingly liberating. Gone was agonizing over how best to structure code or long-term maintainability. Grabbing low-hanging fruit and rapid development were the order of the day.

Team Rinkhals is almost certainly the most talented development team I’ve had the privilege to be part of and I have a newfound appreciation for what a difference a talented team makes. Not once did I have to explain basic Python or programming concepts, or show someone how to use svn merge or dive into the internals of a library to debug something for someone else. I felt I could trust the code committed by my fellow team members — which given that there was very little time to read it was helpful.

By the time the final Saturday arrived we were in pretty good spirits. Operation Fox Assault was in good shape and although there were a reasonable number of items left on the to-do list most of them were minor enhancements and polishing. The big outstanding items were packaging the game for Windows (using py2exe) and Mac (using py2app). I got stuck into the py2exe work in the early evening. There were some scary moments when the py2exe build was segfaulting but eventually at around ten o’clock the Windows packaging was sorted out and we headed out to Roxy’s for a leisurely dinner. We returned shortly before midnight. Jerith put the finishing touches on the py2app packaging and the rest of us cleaned up minor bugs before submitting our entry a few minutes after 2:00am.

Now all that’s left is to take part in the judging which runs until the end of this week. I’m anxious to see Fox Assault do well, but I’m already satisfied that we ended up with a pretty cool little game — the three hours I spent playing it in unlimited mode last night are testament to this.

If you’re wondering about the rinkhals’ tastes, see the Wikipedia entry.

P.S. Also see Nitwit’s post about our team’s PyWeek experiences.

DMs’ Dinner II

Monday, May 25th, 2009 | Roleplaying | No Comments

a.k.a. This Time We Won’t Bitch About Our Players (Much)

This was the second of our (so far) two DMs’ Dinners. For the benefit of those unfamiliar with the concept, it’s an evening where DMs gather to talk shop. Each DM brings something to drink, a plate of eats and a topic for the agenda. The agenda isn’t prescriptive — it’s just a pool of topics to draw from to keep the discussion flowing and prevent interesting talking points being forgotten.

Both dinners have been quite successful. On each occasion we covered a lot of ground, generated a pile of new (to me) ideas and managed not to womble too far from the subject of running roleplaying games. While I’d like to attribute this to our mad organisational skills and the quality of guests, I think the success stems mostly from the nature of DMing itself.

Present: Simon, Adrianna, Mike, Beth, Dave S, Matthew, Garrick, Ian, Oliver, Anna, Dave M, Dan, Karl and Chris.

Topics we didn’t get to: Game days; Season 2 always sucks; Fudging the dice; Use of red herrings


As is now customary we kicked off with each person briefly introducing themselves and saying something about their roleplaying background. I didn’t minute any of this but I did write down the name of a system every time one was mentioned:

WoD, Ars Magica, Old WoD, DnD, Underwater DnD, L5R, The Window, Aberrant, Psion, Trinity, Unknown Armies, Deadlands, GURPS, MERP, Call of Cthulhu, Dark Heresy, DnD 2nd Ed to 3.5 Ed, DnD 4th Ed, DnD, DnD, Old WoD, Unknown Armies, Masquerade, Requiem, Hunter, Mage: the Awakening, DnD, New WoD, AD&D.

Party Cohesion

The first topic select was Party Cohesion — how to avoid running a separate game for each player:

  • Vetting character players and including inter-party bonds at character creation. Lots of people indicating that this didn’t often guarantee cohesion.
  • Keep side plots on the side. Have a firm idea of which plots the party are currently working on together and keep those central.
  • Make sure that plots intended to be central are ones the party feel they can play together.

Alternatives to Victory

So many plots and scenes end in victory for the players. How do we help parties deal with failure, accept defeat and move on?

  • Some Call of Cthulhu and Unknown Armies players have the opposite problem — a mindset of failure. In this cases the problem is more one of getting the party to act like there is some chance of success.
  • If the players are forced to retreat, it helps to quickly give the party a direction to retreat in — nearby fortifications, a place of safety, allies or reinforcements. This then replaces the old goal of outright victory, allowing the group to stay focused.
  • Defeat can often lead to players being too cautious.
  • Beware of the limbo where the players aren’t sure what you expect of them in a scene. Make sure that they as players have some idea of the risks involved in continuing the fight and consequences of retreating.
  • In-game ways for the characters to assess the difficulty and risk of a situation.
  • Practice killing PCs.
  • Provide the option of a negotiated settlement.
  • Death is not the only form of failure.
  • Help players get over the defeat by having an NPC their characters respect, especially a powerful NPC, congratulate them. Have some response from the winning side — let the PCs know their enemy has at least felt the blow.
  • Possibility of gaining allies as result of defeat.
  • If your party is too gung-ho, use in-game means to let them know not everyone likes they way they operate. Perhaps have a neutral NPC become an enemy.
  • If there is a negotiated settlement, it helps to have the PCs take the initiative otherwise they’re left feeling that they have simply done what their enemies asked.
  • NPCs are your way of showing the PCs what the world thinks of them. In a more general sense, the community the PCs inhabit can also fulfill this role.
  • Make use of creative consequences.
  • Sometimes it’s nice to win.
  • Closure is often more important than winning.

Climactic Combats

Do they work? Are they just dicefests? Are there ways to make them better? What are the alternatives for climactic scenes?

  • Break up your fight scene in multiple stages. Wear the PCs down rather than hitting them hard in one go. Make it less of a winner-takes-all scenario.
  • Introduce alternative objectives such as taking the villain alive.
  • Have a twist in the plot in the middle of the climactic combat. Some factor the PCs didn’t account for in their plans which forces them to reevaluate things.
  • Build tension with small random elements — the guard who almost spots them, the weapon which jams and has to have the chamber cleared, etc.
  • Make the location interesting.
  • Put a time limit on the combat (the bomb explodes in sixty seconds, that kind of thing).
  • Sync game time with real time. It adds urgency and tension and prevents the scene dragging out. But if you do this, give the PCs ample time to plan.
  • Try having the rewards or aftermath be the real climax.
  • Maps: Good for planning and ensuring a coherent view of the combat situation. Bad as it encourages detailed round-to-round strategizing and slows down combat.
  • Have perception checks in combat but create minor penalties to rolling them (-5 to attack, that sort of thing). Make sure there are occasionally things to see (the hidden sniper or tripwire, the enemy leader sneaking out the back door).

Building Cities

Cities are big and it’s impossible to fully experience even the cities we live in. How to we make cities in our games feel realistic and detailed?

  • Each character coming up with their own location, three per PC — where they live, where they work, where they socialise.
  • Comprehensiveness trap: don’t try to map the whole thing. The game city is a big morass the players reach into for smaller locations. Flesh out the locations the party know well. Remember the NPCs who frequent each location.
  • Opening up cities district by district.
  • Leave space in your city for the things you forget when initially designing it.
  • Take a modern city and use it as an source of ideas and locations for your game city, even if your game city is in a wildly different setting.

A follow-up question was how to deal with NPC and location creep — as a campaign runs, one tends to accrue more and more NPCs and locations until they become unmanageable.

  • If players are staying interested in a character you feel you have played out, have them leave the campaign in an interesting way. Maybe they leave the city for elsewhere, or perhaps they are killed — either way, make it interesting.
  • Only actually need ten to fifteen NPCs. This is what the PCs can realistically care about.
  • Have NPCs come to PCs for help if you need to have PCs care more about an NPC.
  • Watch movies in a similar setting to keep the game setting firmly in your mind (and hopefully exciting to you).
  • Have NPCs use locations the PCs frequent for their own meeting, dodgy dealings, etc.
  • Tie ad-libbed locations to existing structures.

Illusion of Free Will

How to reliably create the “ah-ha!” moment when a player realises something about a scene or scenario? How to get players to make the intuitive leap? Specifically when writing a convention module (where one is a DM-once-removed).

  • Shut down other options, but try not to be too obvious.
  • What is obvious varies a lot from person to person. Take a leaf out of the comedian’s book and lay down lots of clues in quick succession in the hopes that one of them will spark with the player.
  • Stack things in your favour — mitigate the risk to the module or campaign by making it work without the “ah-ha” moment (even if it is much cooler with it).
  • Avoid foreshadowing — rather slowly proceed to an inevitable conclusion.

PCs as Bad Guys

When PCs are too bad and cross the moral event horizon into the realm where you no longer empathise with them, how ones one trade off having the good guys win with having a satisfying roleplaying experience for the players?

  • Have a hierarchy of bad NPCs — bigger bad guys can balance things out.
  • Have players define morals — what their PCs won’t do.
  • Foreshadow player characters’ destruction. Run a fatalistic tragedy where success is going out in spectacular fashion, rather than winning.
  • Reiteration of importance of a moral framework of some sort for the bad PCs.
  • Ensure all player characters on the same moral page.
  • A loyal bodyguard PC can make an interesting contrast to the other PCs.
  • How does your PC sleep at night? What is her or her noble stimulus?
  • No character views themselves as bad.
  • Restricted is interesting — bad PCs need to be restricted by something other than the societal moral code (perhaps by their own code of honour, or by society’s backlash against their behaviour).

The One Dubious Character

How to handle moral conflict between player characters.

  • Handle maturely.
  • Discuss likely interactions as players up front, before they become a problem in-game.
  • Be considerate of the group dynamics.
  • Remember that multiple *players* can believe their character is in the right.
  • Have some PCs act as in-game intermediaries between the warring PCs.
  • Often explosive problems occur after a build-up of tension over smaller issues.
  • Sort out minor problems before the explosions occur.
  • Beware of the players playing their characters close to their chests — if there’s going to be an inter-PC attack, at the very least the DM needs warning.
  • Easier if players are friends.
  • Don’t sweat the small things — but don’t let them build up either.


Dealing with a situation where the DM and a player have very different understandings of some aspect of reality that impacts the game world. For example, a player who is a medieval history nut being DMed in an Ars Magica campaign by a DM who is not. Another common situation this arises in is realism in combat — how much is desired varies a lot from player to player.

  • Have to balance one person’s disbelief against disbelief of the party as a group.
  • Suit the amount of realism and detail you give to the player you’re interacting with.
  • Use realism as flavour but avoid making it mandatory.
  • Depends on what the DM and player want.
  • Keep a firm handle on what is player knowledge and what is character knowledge.
  • The consensus reality of the group is important.
  • If you have a PC with charisma 20 played by a player who isn’t, use dice to handle all the non-verbal parts of interactions — body language, tells, etc.

Players and Rules

How much of the rules should the players know?

  • Players should know the rules applicable to their characters.
  • Trust your players.
  • Write core rules down for yourself.
  • Farm out rules-lawyering and look-ups to players — the DM has the least time to do this.
  • Players must know enough of the rules to decide their character’s actions quickly. Especially true of combat rules.
  • Document house rules.
  • If a player is uninterested in the rules, try tying the rules to character traits and how their character actually does what they do. Reduce combat and other rules-heavy aspects to the character’s schticks — a few signature moves they do often that the player knows what dice to roll for.
  • Photocopy things players need to refer to regularly — spells, crit tables, etc.
  • Adjust how rules -heavy you are for each player — some appreciate more, other appreciate less.
  • Can’t be a half-assed rules lawyer.
  • Discussion contentious rules issues out of session — make snap decisions and then read up and discuss them later.

Involvement Outside Game Sessions

How to get players to be interested and generate backgrounds, plot hooks, etc?

  • Give XP rewards, perhaps only usable on backgrounds and dump merits (things which are cool but which players never buy because they have little mechanical effect).
  • Give them allies related to the content they generate.
  • Not always a problem if some people give detailed backgrounds and others don’t. The player sending all the email isn’t necessarily the only person having fun or even the one having the most fun.
  • Try ensure that every session has one thing for each player to run with or one moment for them to shine in.
  • Having questionnaires to fill out can make it easier for players to contribute. Answering questions is easier than generating content from nothing.
  • Character creation via a job application form to a weird agency.
  • Ten things your character does on a daily basis.
  • Six things I hate about you.
  • Danger of the DM giving all the attention to more active players.
  • Give quiet players scene time.
  • Structure of going around the table asking everyone what they want to do helps and avoids accidentally skipping people.
  • Which time slice is being narrated?

Players not Pitching

How to handle it?

  • Need commitment from players!
  • Consider formal leave of absence.
  • Make PC less and less central to the plot. Have a subplot to occupy them off screen.
  • Catch up on what’s been happening out of session (general recap for all players at start of session is still useful).
  • When a player does return from a leave of absence, bring them back in an interesting way. Bring back with a bit of a boom. Have first session back be about the returning character — don’t fade them in gently. Perhaps they’re back but trouble is hot on their heels?

Messing with LARPs

This really belonged in a LARP writers’ dinner, but we threw it in anyway.

What are the effects one can use to steer or introduce pacing to a LARP? How does one do it well?

  • Provide out-of-character encouragement to players.
  • Use in-character talking provided by NPCs or objects that talk or can be interacted with.
  • The NPC who came in from the cold.
  • Bit players or NPCs.
  • You really want an extra DM for each object or NPC or other point of interaction since a DM fulfilling one of these roles isn’t available for other tasks.
  • Events that happen, especially timed events.

We also briefly discussed the use of mini-LARPs as special sessions for campaigns. Perhaps to highlight some meeting or negotiation.


People who love one system and hate all others. Players considering themselves above certain campaigns or systems. Are they right? How common is it?

  • Moving between campaigns and systems is often a big investment.
  • DnD is good for newbies — can be played almost like a boardgame if needed and thus is easy to get into.
  • System choice and genre choice are not orthogonal.
  • “Because it’s indie, it’s better” — attitude observed
  • Try out systems as modules.
  • Group telling a story, system a tool.
  • Often it’s just trash talk — building yourself up by tearing others down.
  • DnD is the Microsoft of roleplaying — sometimes it gets flack just for being the default.

Killing PCs

By this point we were down to just a few diehard DMs.

  • Kill PCs if necessary.
  • Magical healing makes it hard to punish players for mistakes.
  • Introduce other consequences for actions.


What to do about players who intentionally make useless characters or refuse to use their character’s skills effectively?

  • This is basically a character who is all flavour; often they provide comic relief. Comedy is difficult and such characters are often annoying rather than funny.
  • Need to bear in mind to what extent the party is accepting of dead weight.

Tags: ,