GM Guide:Running a game of Olympia

Olympia is not exactly a user-friendly project if you're wanting to run a game, so here are some of my notes on how to get a local test game up and running:

First, get the source code. Head over to the Olympia project on Sourceforge and grab a copy. This guide will only cover running Olympia under linux/unix and siblings - if you want to run it under Windows I suggest you talk to Christophe!

Once you've got the code, change to the olympia directory and run "make" to create the main executable. You'll also need the g2rep executable from the g2rep directory, which doesn't have a makefile, but "gcc -o g2rep rep.c" is all you need there. You'll need both those executables in your path somewhere.

Olympia assumes that it has a bunch of data files to work with, so the next step is to get some world data. The easiest way is to copy the Dist/lib directory that comes with the source to a new location and use that as a base. There's also olygui/olygui/lib_orig.zip in the source distribution, but I haven't updated that with some of the skill changes in G4. If you were creating a new game you'd want to make a world of your own, but that's a whole different kettle of fish.

There's still the issue of how you actually run the game, which took me a bit of poking around to work out. Here's what I found worked:

Setup phase:

edit lib/system to set your game email addresses and other parameters

run "olympia -S" (that's a capital S) - this forces it to flesh out the map structure it was given

run "olympia -s" (that's a lower case S) - this extracts the starting cities from the map, so it can work out where to put new players

Add a faction: Create an "act/xxn/Join-g3" file (the act directory already exists; xxn should be a randomly allocated unique faction identifier, being two lower case letters and one digit; "Join-g3" is a hard-coded file name that the olympia code will look for) containing 5 lines:

Faction Name

First Noble's Name

Starting City (this should be the numeric index matching the desired starting city from the first column of lib/startloc, usually in the range 0-7. If it's not one of those (for example, if the line contains the text "random") then the faction will start in one of the first 6 cities listed in lib/startloc.  Since there are more than 6 cities in there (at least under the original Dist map), it may make sense to reorder startloc so that Golden City and Imperial City are at the end of the file, as they're inland and don't make such good starting cities). This can also be "empty" to have the faction start in an unoccupied city.

Player Name

Player Email Address

Now it's worth pointing out that Olympia is closely linked with SMTP based email; it is possible to run a game without using sendmail et al, but it's more complicated, so let's not. Hence I suggest making the player email address something that will be recognised as local by your mail server! For test purposes I used the account that I was running olympia under, so that I could see what it had done just by using "mail". You can have multiple factions use the same email address.

Run a turn:

This is fairly straightforward: "olympia -rMS". -r is for run turn, -M is to mail out reports, -S is to save the game data afterwards. Turn runs will create any new factions you put files in for, who will then be able to enter orders for the next turn.

Enter orders:

Create a file in lib/spool that starts with "m". I use m followed by the faction id, so lib/spool/mxxn. This should be a valid SMTP message, including headers, or olympia will ignore it! At the very least it expects to find an envelope header ("From ..." and a return address ("From: ..." or "Reply-To: ..." - note that this From is different from the envelope header in that it has a : after it). The easiest way to create a file that olympia will accept is to mail the orders to yourself, and use "mail"'s "s" command to save the received mail to a file, and copy that file to lib/spool/mnnx.  Don't forget to remove the actual turn report part of the file before submitting it as orders though - the parser doesn't like reading turn reports!

Once you have an orders file (or several) there, run "olympia -E" to parse the orders, generate acknowledgements, and queue the orders to the appropriate characters. This is a quick version I added; the old way was to create a file called lib/spool/stop and then run "olympia -e".

Go back to "Run a turn" and repeat :-)

That's the short version - if there are bits that you'd like more detail on please let me know!