I am ridiculously behind on blogging because of the amount of contract work I have going on at the moment (working Saturdays and weeknights until 2am - not fun!) Anyway, I'll stop whining now.
Below is a video of the talk I gave at PyCon AU at the end of June. In it I talk about my time working for London based "reactive music" company, RjDj, and also about my video game Infinite8BitPlatformer.
I haven't posted an Infinite8BitPlatformer update for ages, and I have been meaning to do so since a lot of progress has been made since my last post, but here's a quick update:
Anyway, back to work.
I am taking part in the Ludum Dare #17 48 hour game challenge this weekend, and hence taking a bit of a break from Infinite8BitPlatformer programming this weekend. Follow me on the competition blog if you're interested! I will be releasing all of the sourcecode from my game at the end of the competition.
Incidentally, I have fixed up many of the Infinite8BitPlatformer bugs that were reported during the pre-alpha, and had some more great contributions from Crispin, such as a spray-can tool for in-game editing and some fun levels. Also last week I finished a bunch of tweaks, features, and bug fixes on the PodSixNet code, so next on the agenda is the multi-player code. Hopefully I'll be able to fit that in around the contract work I have on next week. Exciting stuff!
Anyway, back to the competition.
Wow, today marks a huge milestone in the life of Infinite8BitPlatformer, thanks to my friend Crispin. He's written some code which adds a line tool to the existing suite of pencil and fill tools, and he created a level with it. This is the very first substantial code submitted from someone else, and the very first user contributed level, and the game isn't even released yet! In case you can't tell, I am super excited.
This was also the first opportunity for me to experience the proof-of-concept of exploring a level someone else created. I must admit that it lived up to my expectations. Running around in the new level, exploring, and finding items was a genuinely enjoyable experience, and one I can't wait to repeat many more times as the game matures and gets further contributions. Good times.
Thanks, Crispin!
PS The game is currently in pre-alpha testing. If you'd like to try it out, drop me an email and I'll send you the link.
Staying motivated on your personal side projects is really quite hard! Moose and I have moved closer to the city, so now I have a bit more time and space and have been hacking on Infinite 8-bit Platformer again. Here is a graph of commits-per-month on the project:
I prefer to think of them as "experience points" rather than commits, because making games should be the meta game. :)
I also made a page on the website where you can see the commit log.
I set up a twitter stream for the commits too: http://twitter.com/infinite8bit, and also an identi.ca account if you're that way inclined: http://identi.ca/infinite8bit
You can subscribe to the RSS feed of those commit messages: http://twitter.com/statuses/user_timeline/121975057.rss
On my current contract with RjDj I have to work as close to London time as possible, so this means that I have some mornings somewhat free, and I've been spending the hours between 8am and 11am drinking coffee and working on my game.
As you can see, even at the beginning of this month there have been almost as many commits as there were last month, hooray! There are 37 line-items left in the TODO file at the moment. My rule of thumb is about two line-items per working day. If I can work at roughly 3 half-days per week I should have the beta release ready for testers in about three months. That's assuming that the networking library I previously wrote, PodSixNet, is up to the task of linking everyone together into some kind of platformy MMO goodness. If I do a release without the networking stuff it means I can get something in front of people in probably one month. That's a very motivating thought! The important thing is that I don't rush myself though. Slow software development makes better quality software (although implemented software is better than vapourware).
I have found that the best way to stay motivated is never to feel guilty about not working on something. If I don't feel like it I just forget about it and do something else. Eventually if the project is worth it I'll get excited about it and naturally come back to work on it again. Judging by the graph, that seems to be exactly what happens. Some months I leave it entirely (zero commits), but over the long term progress continues because somewhere deep inside I know this project is worth it. One of life's great lessons is that at some point we must always let go of the things we love, and I think this really applies to staying motivated about projects too!
Ok, time to write some more code. :)
Here is the very small bash shell script which produces the csv file used to generate the graph (unfortunately it skips empty months so you have to add those manually):
#!/bin/sh
bzr log --short --forward | sed -n -e 's/.*\([0-9]\{4\}-[0-9]\{2\}\).*/\1/p' | uniq -c | sed -n -e 's/\ *\(.*\)\ \(.*\)/\2\,\1/p'
Here is a very small bash shell script that I wrote for turning emails into tweets:
!/bin/sh
header="START"
# concatenate all lines (ignore email header)
while read line; do
if [ "$header" == "" ]; then
message=`echo $message $line`
else; header=$line
fi
done
# post to twitter
wget -O - --user=xxxx --password=xxxx --post-data="status=$message" https://twitter.com/statuses/update.xml
That last line is a handy one-liner for posting to twitter!
To post to identi.ca, change the url to "identi.ca/api/statuses/update.xml".
Three bits of news to do with Infinite 8Bit Platformer.
I've decided to release the source code to the game under a GPL license. Some of the library code which I've used in other projects will be released under an LGPL license. You can find bzr repositories of both codebases here.
I am looking for contributors to help me bring the game to completion along the lines of my massively-multiplayer-user-created-content-platformer vision. If you're interested in joining the effort, email me and I'll put you on the dev mailing list we have going. Feel free to check out the code, look at the TODO list and start hacking. Patches welcome!
I really need to do a lot more work on the website, like integrating a forum, blog feeds, and authentication. Next thing in the TODO list is a save button for saving the level you are working on. Should be pretty easy so I'm going to use it to try and stay engaged with the codebase.