PyRisk ====== This is a Python engine and interface for building games similar to the 1957 La ConquĂȘte du Monde by Albert Lamorisse (of "Le Ballon rouge / The Red Balloon" fame). The game is perhaps better known as Risk, and is produced by Parker Brothers (now a division of Hasbro). Benefits over other open source implementations: * simple, extensible implementation * play-by-email Getting PyRisk ============== PyRisk is available as a Git repository:: $ git clone http://www.physics.drexel.edu/~wking/code/git/pyrisk.git The most recent commit is also available as a gzipped tarball at:: http://www.physics.drexel.edu/~wking/code/tar/pyrisk.tgz Once you get the source, installation is via Docutils:: pyrisk$ python setup.py build pyrisk$ python setup.py install Getting started =============== To setup play-by-email, you'll have to have some method to redirect appropriate messages into a named pipe. With procmail, that will look something like:: :0 * ^Subject:.*\[PyRisk.* { :0 wc /path/to/named/pipe :0 | /bin/echo -e '\000' >> /path/to/named/pipe } The echo command appends a NULL byte to the FIFO, which (I think), helps the read() in _get_msg break at the appropriate point. Once you have the procmail rule setup, just add your EmailPlayers to your game and go:: from pyrisk.base import generate_earth, Player, Engine from pyrisk.player.email import IncomingEmailDispatcher, \ OutgoingEmailDispatcher, EmailPlayer world = generate_earth() ied = IncomingEmailDispatcher(fifo_path='/tmp/pyrisk.in') oed = OutgoingEmailDispatcher(return_address='server@example.com') players = [EmailPlayer('Alice', 'alice@big.edu', ied, oed), EmailPlayer('Bob', 'bob@fish.net', ied, oed), Player('Charlie')] e = Engine(world, players) e.run() ied.close()