Jan. 10, 2009

It is said that when he was designing the first Mario game, the master Miyamoto had a screen full of plain square sprites and tested making one of them jump onto the others with what was to be the NES gamepad. He kept playing with the prototype until just the action of pressing the button and watching the squares jump, was itself fun, quite apart from any other aspect of the game.

Some blocks; a MinimalistPlatformer screenshot

This story might not actually be true, but it's in this spirit that I made a prototype for a platform game that I've been working on in my spare time. There are binaries for Linux, Windows, and Mac on PodSix Video Games, so check it out.

The point of this prototype was to try and prove the hypothesis that it is possible to have a platform game that is fun to play just by virtue of the jumping, collecting, and exploring mechanics with no shooting or killing, no puzzles, and no bad guys. Of course, I already knew this to be true from games like Nifflas' Knytt, but I also wanted to see if I could make it fun to jump around, collect things, and explore, without any additional game mechanics like Nifflas' climbing, and without nice fancy graphics or sounds. So what this resulted in was the most stripped back, minimalist form of a platform game that I could come up with. That said, I couldn't resist adding a few 8 bit style sound effects generated by sfxr just to enhance the experience a little bit. I hope that despite it's minimalism, it's still fun to play.

My other aim with this is to 'release early, and release often' which is a popular tenet of the free and open source software movements. It means that you get your releases out as early as possible so people can start testing them and finding bugs. So to that end, I'd love to hear your opinion on this prototype if you play it. If I make any progress on this game in the future, I'm going to try and make a release like this at each little milestone. Hopefully I'll get time to work on it quite often, and the full picture will come together over the next few months [but probably not, as things always take much longer to code than you think they will].

If you're interested in tinkering with the prototype, the levels are SVG graphics that were created in inkscape and had meta data such as portal destination and item name added with the 'Edit -> XML Editor...' menu option (ctrl-shift-X). So feel free to load them up, edit them, have a play around.

With this very basic, generic platformer code written it should be easier for me to create platformers from now on, and specifically the larger game project that I have in mind.

Have fun!

Dec. 25, 2008

Moose and I are just chilling in London, enjoying a quiet christmas dinner, movies, mince pies, and mulled wine. We went to see "It's a wonderful life" on the big screen in Angel last night, which was really sweet. Capra is a genius, still moving audiences to tears 60 odd years later.

A stack of iPhones

Things have become quite busy here in London with the RjDj project going full pelt. We are madly working away on some really cool new network enabled features in the app and on the website. I'm really excited about what we're doing and can't wait to get these features shipped in the new year. Working with a team of really great people on a really great project; you can't ask for more than that.

RjDj people

A couple of weeks ago I spent an exciting, busy, sleep deprived weekend in Berlin with the rest of the RjDj people and a small community of great Pd patchers who were busily patching away in the offices of MoviePilot, a German internet startup. It was lots of fun to meet a bunch of the Pd guys in real life.

RjDj people RjDj people

I only managed to see a small piece of Berlin in the surburb called Kreuzberg where we were staying. The small part of Berlin I saw really lived up to its reputation as a city that never sleeps, with bars staying open well past my bedtime. The bars we went to smelled the way that we all remember bars used to; a tangible wall of nicotine floods into every pore and lung cavity the moment you step inside. It was quite refreshing in a nostalic kind of way. Next time I go back there hopefully Moose and I can absorb a lot more of the history of that amazing place, rather than just drinking in bars and hacking with nerds like I did this time.

RjDj people

In my spare time I'm still hacking away on games and game prototypes, and trying to write music when the urge takes me. I recently finished 'Memorizer', which is a pure-javascript implementation of the memory game.

Chris and Michelle

This year has been pretty insane and wonderful at the same time. Moose and I have had a lot of fun starting new jobs, getting married, travelling, and making even more plans than we had before. Here's to 2009; hope you and all of us have one as excellent and packed as 2008.

Nov. 8, 2008

Today I finished reading A field guide to genetic programming, a free, self published, creative commons licensed computer science book written by practitioners in the art of evolving computer programs. I say art because as the book makes clear this science is still quite young and experimental, mostly based on heuristics and rules of thumb. This is exactly what makes the book so valuable a resource. Outside the basic evolutionary algorithm the number of different ways of representing candidates, eliminating the unfit, reproducing new candidates, choosing population size, choosing mutation rate, etc. etc. make it incredibly complex to form a systematic analysis of the different aspects of the technique. The book gives experienced advice about all of these aspects and also suggests areas that need further study.

The book is ideal for people who want to get up to speed with the front line of current developments in the field. By the end of the book one is armed with enough knowledge to dive right in and start creating and using programs that evolve programs. A basic understanding of computer science concepts are all that is needed to grasp the concepts in the book, so anyone with a first year level of a computer science degree, or a few years of programming experience, should have no problem.

I purchased a hardcopy version of the book for easy reading and it came as a paper-back the size of a sheet of A5. The illustrations on the outside of the cover and througout the book lend it a lighthearted and easily comprehensible air and the writing itself is more enthusiastic than you would expect from a scientific text, making it an easy read. The examples provided are consice, easy to understand, and directly to the point, and the book is incredibly well referenced providing numerous texts to follow up some concepts in more detail.

Perhaps the most compelling feature of the book is the multitude of successful, practical applications of GP to real world problems which are found throughout it's pages. Before I read it, I was already convinced that the only way that we will evolve human equivalent intelligence will be through some type of artificial evolutionary process. Now I am even more convinced of that. Here are some choice quotes from the late Alan Turing, as always, far ahead of his time:

"There is the genetical or evolutionary search by which a combination of genes is looked for, the criterion being the survival value."

("Intelligent Machinery", Turing, 1948)

"We cannot expect to find a good child-machine at the first attempt. One must experiment with teaching one such machine and see how well it learns. One can then try another and see if it is better or worse. There is an obvious connection between this process and evolution.

'Structure of the child machine' = Hereditary material

'Changes of the child machine' = Mutation

'Natural selection' = Judgement of the experimenter"

("Computing Machinery and Intelligence", Turing, 1950)

What higher computer science accolade is there than Alan Turing's posthumous recommendation? In short, great book. Find out more at the official website and purchase it online at lulu.com.

Nov. 4, 2008

Wow, I am super-excited to report that I have started doing work for RjDj.

I am now 99% certain that the way in which we all listen to music in the future won't always be the same as the way in which we listen to it now. This review, by someone completely who is not associated with RjDj, sums the idea up quite nicely.

I'm excited.

Nov. 2, 2008

In order to test out a generic Python multiplayer game library that I'm working on, I had to come up with a game design for the simplest possible multiplayer game. I'll post the library's code here another time when it's stable and tested, but in the meantime here's the game design that I came up with:

Simple multiplayer game design

It's a two player turn-based strategy game with the simple objective of destroying all of the other player's ships. There are two phases; the input phase, and the simulation phase. Each player runs the client on their own computer and they input their next moves simultaneously during the input phase. The moves are hidden from the other player until the simulation phase, which happens once both players are finished inputting their moves. Control of the ships is simple; click the blue circle and then click the playing field in order to define the path of each of your ships for that turn; click the red circle and click in the direction which you'd like the ship to shoot for that turn. When ships are hit with enemy fire their health bar will show up with it's value diminishing, and when it gets to zero the ship will disappear. You can also see the health bar of ships by hovering the mouse over them.