A few weeks ago I was up in the hills about Geneva reminiscing with my sister about all the things we used to enjoy when we were smaller. When I was younger I used to really enjoy programming computer games, first on my 48K Spectrum and then later on in STOS BASIC and then 68000 assembly language on my Atari ST.
I haven't programmed a game in a very long time. However, I'm an avid gamer, playing games while travelling on my DS and at home on my Xbox 360. I almost enjoy reading Edge magazine more than I like playing games.
At YAPC::Europe in Lisbon, Domm pointed out that the Perl SDL project (which wraps the Simple DirectMedia Layer) was languishing and that we should all programs games in Perl.
A few months later I got around to playing with SDL and made a simple breakout clone which I styled after Batty on the Spectrum, but with gravity. It was fairly easy to program, but there was a lot to grasp. The Perl libraries are a mix between a Perl interface to SDL and a Perlish interface to SDL, with limited documentation, tests and examples.
Of course this is where I join the #sdl IRC channel on irc.perl.org and start discussing with the other hackers (kthakore, garu, nothingmuch). We decide on a major redesign to split the project into two sections: the main code will just wrap SDL and then there will be another layer which makes it easier to use. I've started writing a bunch of XS on the redesign branch of the repository while trying to keep Bouncy (my game) still working. There is a bunch of work still to do but we've made a good start. This is what Bouncy looks like at the moment:
[YouTube video]
The physics are pretty fun and it runs pretty fast (1800 frames/second). I'm taking a little break as I'm off to Taipei...
You know, with a share/ and script/ directory, and the core code in a module, this would be pretty trivial to move to the CPAN. (If only for the exercise)
Re:Pity it's layed out like that
acme on 2009-10-20T07:23:02
Bouncy requires an experimental redesign branch of SDL. when it's stable it'll get tidied up and go to CPAN.