April 20, 2009

Wow, huge news. There is finally, after all these years, an awesome free and open source audio playing library for the Nintendo DS and GBA. Hooray! This is big news for me as Looper Advance has been built against the non-Free Krawall library for years now and it's always irked me, quite appart from making the GPL license on Looper Advance invalid, and probably illegal.

Hopefully I'll get a chance to update Looper Advance soon and then I can release it properly as 100% Free Software.

MaxMod appears to be pretty comprehensive in that its API provides for mod-playing, sample-playing, and direct access to streaming buffers. This basically means you can write apps which mix and match all three types of audio playback.

maxmod

April 4, 2009

Moose and I are in Barcelona for a couple of weeks while I get properly up to speed on the RjDj iPhone code which I haven't really been involved enough with so far, concentrating mainly as I have on the server side of things. We are really digging Barcelona and its lovely relaxed atmosphere, great food, and amazing buildings everywhere. We have even tried to pick up a little local vocabulary. Today we plan on taking a day trip up to Montserrat by cable car.

The social and server side features I've been working on for the last 5 months for Reality Jockey Ltd. along with the rest of the team, are finally online, co-incident with an update of the main app and the albums being made free for a limited time. This is in huge part due to Andie, who really kept us all focussed and moving constantly towards this target. Live site, at last! Feels great.

This is pretty exciting for me as it's the first time a project that I've been a part of has made it onto the Boing Boing network. Offworld post, yay!

In addition to that, RjDj chose to feature a couple of my scenes, which I worked on in my spare time outside company hours: CanOfBeats, and GhostWave, which has propelled them to into the 'most popular' position on the website. They never would have been finished in time if it was't for Frank and Florian's hard work at the last minute, fixing all my horrible bugs and adding nifty features.

My excitement is only tempered by the fact that I wrote a large amount of the server side code, so if it collapses in a heap under the weight of the ogling internet it's probably my fault. It seems to be holding up alright so far though, with most of the heavy content in Amazon's S3 cloud, and liberal use of FastCGI and LightHTTPd. The backend is mostly written in Django + Python if you'd like to know. Python is a king amongst programming languages and it means that I go to work each day looking forward to writing code instead of dreading null pointers, buffer overflows, lack of type flexibility, arcane syntax, and all of the other horrid issues which plague other popular programming languages.

The other huge piece of amazing tech that I should mention and which makes up probably the bulk of the client side code is the free and Open Source (BSD license) Pure Data DSP patching language by Miller S. Puckette. Whilst not a wonderful general purpose programming language, it does one thing and does it superbly. All of the RjDj scenes are actually just Pd patches with a fancy image or two and some custom externals running.

Good times!

March 24, 2009

I shouldn't call this a game design, because really it's just a random assortment of ideas thrown together in my head, and a mockup of the aesthetic I have in mind. The x's and o's in the background would move in parallax with relation to the ships and rocks.

Asteroids TNG Mockup

If I had time to make a game right now, this would be it. Basically it looks and plays a bit like Asteroids, but the rocks don't fly around crushing you - they hang still in space, and you shoot the coloured ones to get minerals from them. It's multiplayer and set in a persistent universe, so I guess that makes it an MMO. You can fly up to other people and talk to them, trade items with them, etc.

I remember the intense excitement of the first time I played a MUD, back in the mid 90s. It wasn't the game element of it that excited me - it was the exploration and social elements. I guess I am a fan of virtual worlds more than games in that respect. I'm not that interested in grinding.

Asteroids TNG would be a bit like Diabolo, but in space and with vector graphics. That is to say, there are some asteroids that you can land on, and when you do, the game turns into a Roguelike with one short 'dungeon' per asteroid, and simple vector graphics instead of ASCII graphics. All of the monsters would be futuristic alien sounding monsters, and instead of wands and scrolls you would find rayguns, data nodes, and nanotech stems, and instead of armour you would find field generators and shielding, etc. You get to keep the inventory of things you find in the asteroid 'dungeons', and you can trade these items with other people. Later there would be space stations where you could dock to meet up with people.

The whole thing would be procedurally generated using Perlin noise to generate an infinite asteroid map, and Rogue-like logic to generate the asteroid dungeons. Lately I have been reading and obsessing over the source code of Donny Russell's AGB Rogue, which is a conversion of the original BSD Rogue for the Gameboy Advance, and probably my all-time favorite Rogue. It goes with me everywhere on my Nintendo DS. The code is incredibly unclean, but it's fun to look at the probability tables and dungeon generating functions to get an insight into how they balance the game.

The music would be chippy as hell.

Won't someone give me a wad of cash to make this social roguelike space MMO? I swear I will port it to Nintendo DS, iPhone, web, Xbox360, widgets, gadgets, screenlets, Windows, MacOS, Linux, and the Wii, and make you millions of dollars.

March 21, 2009

PodSixNet is a lightweight network layer I've written to make it easy to write multiplayer games in Python. It uses Python's built in asyncore library and the simplejson 3rd party library to asynchronously serialise network events and arbitrary data structures, and deliver them to your high level classes through simple callback methods.

Click here to download it

I wrote this library because I'm forever thinking up multiplayer game designs and then starting, but never finishing, a new multiplayer game library for every multiplayer game idea. In other words, I get bogged down writing low level code and eventually lose interest in my original idea as it proves tricky to implement. I decided to get the multiplayer game library written once and for all so that whenever I get an idea for a multiplayer game, I can now prototype it up rapidly. I'm quite proud of the fact that this library is only a handful of simple classes, and weighs in at just two hundred odd lines of code. This is of course because I built it on top of Python's already cool asynchat (used by Twisted) and simplejson.

Two example apps are included with the source to help you get started. The first one is a simple console based chat program, and the second is a pygame based collaborative whiteboard. For each example start one copy of the respective server, ChatServer.py or WhiteboardServer.py, and then start multiple copies of the client to test.

Would really love to hear about it if you use this in a game!

March 3, 2009

Need to settle an argument? Recently, I finished coding up this Rock Paper Scissors game that you can play online against someone else. Have fun.

Rock Paper Scissors