Running a play-by-email game is not very difficult. This document describes what I do to run PBEM games, in a naked, shameless attempt to encourage more people to run PBEM games.
The basic principle is simple: you instruct players to send mail to you telling you what they do; on the basis of their mail, you decide what actually happens, and announce those results for all the players.
There are some complexities to that; you have to resolve timing issues, and some cards can't work quite the same way. I've described many of those things in Procedures for Playing PBEM Games, so I won't reiterate them here. In this document, I am focusing on the tools that I use to facilitate running games:
If you have the ability to do so, it's very handy to create a web page that reflects the publicly visible state of the game. (See my example.) I use this web page as the primary record of the public state of the game; when I want to record that one player has spent an action token, I change that file, and all the players can see just what I see (as long as I remember to save the file.)
It's handy for the web page to include the history of the current turn or so. It makes it easier to remember what's going on, what the current attack is, and what the OMCLs have been used on this turn.
For each player, then, I maintain a file with four sections: their plot and group hands, and their plot and group decks. Each of these is represented as a list of cards, one per line. This makes it easy to handle card draws with a simple cut-and-paste, to tell someone their hand with a copy-and-paste into an e-mail message, and to count the cards in someone's Plot hand.
To shuffle decks (represented as a list of cards, one per line), I use the following little perl script, which I call 'shuffle':
#!/usr/local/bin/perl @foo =; srand(time + $$ * 40000); print splice(@foo, rand(@foo), 1) while @foo;
On almost any computer, this is sufficient to shuffle far more cards than you're likely to encounter in any deck.
Since it's so easy to use this to shuffle a list, I use the same script to shuffle the list of players to determine the starting order.
I use this script for rolling dice. It's pretty trivial; see the 'usage' subroutine for details on how to use it. If for some reason you can't run perl, you could use real dice to generate die rolls. The important thing is that the GM must roll the dice, to avoid bias.
#!/usr/local/bin/perl srand(time + $$ * 40000); if (scalar(@ARGV) > 2) { &usage(); } $num = defined($ARGV[0]) ? $ARGV[0] : 2; $sides = defined($ARGV[1]) ? $ARGV[1] : 6; if ($num <= 0 || $sides <= 1) { &usage(); } $sum = 0; for ($i = 0; $i < $num; $i++) { $sum += int(rand($sides)+1); } printf "%d\n",$sum; exit; sub usage { warn "Usage: $0 num sides\n"; warn "(Rolls a die (default 6 sides) num times (default 2).)\n"; exit -1; }
I am not providing the source for the anonymous remailer that I've written, for a few reasons:
However, lou don't need an anonymous remailer to run a PBEM game--I ran a full game and played in a full game without any such remailer. If you do want to make a remailer of your own, I'd be more than happy to help you.
This is all the secrets of running PBEM games that I can think of offhand. If you choose to run a PBEM game of your own, I'd love it if you would drop me a line to mention it to me. If you have any questions about running a PBEM game, I'd be more than happy to answer them.
Last modified: Wed Jul 1 00:35:26 EDT 1998
Ralph Melton <ralph+@cs.cmu.edu>