Itch is a 2D game framework written in Python, using PyGame. It was inspired by Scratch.

Modern computers are so much more powerful since the last time I tried writing a game, and now you don't have to spend all of your time optimising code to achieve a decent frame rate. Instead, you can concentrate on game play, which makes writing game fun again, and the games turn out much better too.

While I'm writing Itch, I've been writing an Itch powered game too : Thrust.

A big "Thank You" to Matthew for introducing me to Scratch, and showing me his Scratch games. He's the next-gen games designer!


While refactoring Itch, I found Python to be annoying to use. There are no refactoring tools, and because Python is so dynamic, it is very hard to do manually. I would spend huge amounts of time tracking down bugs, which a compiled language would find in seconds.

So, I started from scratch, in my favourite language, Java, and Itchy was created. Rather than a direct port, I decided on a different design goal. Itchy aims to be simple for first time games programmers. Itchy's class structure is more complex, which gives more flexibility, but also has a steeper learning curve.


Initially, Itchy was written on top of JSDL, but I found that it was no longer supported, had lots of bugs, and I didn't like its overall design. It also lacked some software blitting modes that PyGame has. Despite not wanting to reinvent the wheel, I felt that it would be quicker to create a quality product if I created my own Java wrapper to SDL. I called it Jame (a compound of java and game, and which didn't give many hits on google).

Jame does NOT support the whole of the SDL API, instead, I concentrated on the parts that I needed for Itchy, and nothing else. So far this includes 2D graphics, sound, and mouse/keyboard input.

Jame also includes the extra blitting code from PyGame, which was sorely lacking from JSDL.

I have tried to make Jame natural from a Java perspective, in much the same way that PyGame is natual from a Python perspective. (JSDL doesn't feel like a natural java api).