Perl Adventure Series
Last month I offered a bold proposal to my Perl Mongers group (MadMongers): Let’s create a video game from scratch as a learning exercise!
At MadMongers we give a talk every month on some area of Perl technology. However, we almost never put those lessons into a practical hands-on form. Yet, we have members who are everything from “I have never used Perl.” to “I have used Perl every day for 20 years.” So my proposal was to build something relatively simple so that we could build it in roughly 12 two-hour sessions over the course of a year, but complicated enough to have real decisions we could make about its design. That way we could put to use skills like using git, creating a CPAN distribution, writing tests, using data storage mechanisms, parsing text, creating user interfaces, making web services, etc.
When I was at Gamehole Con last year, Andy Looney (creator of Fluxx) introduced me to a series of games called Parsely Adventures by Jared Sorensen. If you have ever played old text-based adventure games like Zork, then Parsely adventures are basically that except where one person becomes the parser (the computer), and all the other players enter commands by saying verb noun combinations to move the adventure forward. Well, my idea here is to turn this back around on itself once more and turn one of the Parsley Adventures back into a computer game like Zork!
I’m calling this the Adventure Series, and our first meetup is next week on Tuesday at 7pm (US Central). There we’ll be setting up the git repository, creating a Dist::Zilla config file, designing the initial mission data structure (most likely in YAML), and writing a few tests. If you can make it, you should join us. This should be a grand adventure in more ways than one.
Over the course of the series we hope to make a real working game with both a command-line and fully visual web interface. The group will be workshopping a Perl 5 version of it live at each MadMongers meeting. In addition, one of our members will be attempting to simultaneously write the whole thing in Perl 6. All of our code will be open source and published on GitHub, and hopefully also CPAN.
[From my blog.]