Druid is a connection-oriented board game created by Cameron Browne.
Rules and a bit of strategy can be found at
<http://www.cameronius.com/games/druid/>.
Instructions on getting Druid running:
* Get Rakudo.
* Set some environment variables.
* Call 'perl6 druid'.
There's also a an installer called 'proto' that you can use to install druid;
see 'Installing via proto' below.
== Get Rakudo
You need Rakudo to run the Perl 6 code in Druid -- instructions
here: <http://www.perlfoundation.org/perl6/index.cgi?rakudo>.
== Set some environment variables
Put something like this in your ~/.bash_profile analogue:
export PERL6LIB=/your/path/to/druid/lib
export PARROT_DIR=/your/path/to/parrot
alias perl6="$PARROT_DIR/languages/perl6/perl6"
Remember to start a new bash process (terminal window, tab, whatever) or to
re-source ~/.bash_profile:
% . ~/.bash_profile
== Call 'perl6 druid'
Yup, you're ready to go.
% perl6 druid
% perl6 druid --size=10 --computer=1
% perl6 druid --help
== For those who want to compile things
(After all, compilation does make startup a little faster.)
% perl6 configure
% make
Remember that you still need to set $PERL6LIB and $PARROT_DIR as above. The
configure script will complain if you don't.
== Installing via proto
Proto is a no-fuss installer of Perl 6 projects. One of the advantages of this
way of installing Druid is that if you don't already have Rakudo Perl 6, proto
installs it for you.
1. Get proto from <https://github.com/masak/proto>
2. Run './proto' and optionally review the settings in the created config file
3. Run './proto install druid'
4. 'export PERL6LIB=`pwd`/projects/druid/lib'
5. 'cd projects/druid'
...and you're ready to run. See "Call 'perl6 druid'" above.
== Future plans
* Add an SVG renderer.
* Work on the machine play. (It's currently random, but I have some fairly
nice ideas lying around in a local branch.)
* Put in a few optimizations to make Druid::Game::possible-moves O(1)
instad of O($n**2) ($n being the size of the board), as it is presently.
In another language, the difference might not actually be noticeable, but
Rakudo Perl 6 is very "speed-sensitive" right now.
* Make the web app do POST requests instead of GET requests. This is more in
line with the idea of making a move, a non-idempotent action.
* Make the web app handle different simultaneous games, played by distinct
users. This will likely require a real databse instead of the short-term
file solution used now.
== License
This Druid implementation is released under Artistic 2.0. See LICENSE.
Permission to release the game graciously given by the game author.