Monthly Archives: April 2008

Paraplu: Text

I just transplanted what’s probably the most complicated class in all of Soft Landing, “Interface”, into Paraplu. Along the way I chopped off a ton of messy code that I’m planning on rewriting. This is the class that draws all of our text boxes, menus, health bars, and so on. It’s not gorgeous, but it’s working:

Paraplu: Editor

I just finished much of the work on the improved Paraplu level editor. It’s a mode you can enter when you start the game, in which the character is replaced by a translucent square cursor. There are buttons for cycling through the various batches of tiles we have, each with 9 tiles in it. Then you can hit keys to lay down a particular tile in the batch. It’s blowing my mind how quickly we’re making progress on this project; it seems like every time I sit down to work on it, I reach what would be considered a major breakthrough for Soft Landing.

We also have enormously long lists of enemies, items, and recipes, and it seems like every time I go back, Jules has added a few more…

Paraplu: Tiles

So, I think last night was my major breakthrough that I had been waiting for. I’d like to thank Flight-Plan in particular for inspiring me to re-attempt the style I was originally going for, and to get it right this time. I studied some GBA games they’ve made and it was really useful. Strangely, my error essentially was that I was being too elaborate and ornate. All I needed to do to get my tiles looking right was to take away detail, not add or fine-tune it. With that in hand, I was able to finish all of the tiles I had already been working on and a fair few more on top of that. I’m going to get back to it again tonight and hopefully get this all sorted out.

Fet realised that we haven’t actually written down anywhere what this game is like yet. Maybe we’ll keep it that way, and then no-one will have any preconceptions or expectations. I like that idea.

Paraplu: Collision

Well, Jules and I decided that pixel-level collision is not really going to be necessary. We’re just going to have a kind of rectangular collision mask for each entity and each obstacle, and test against those. Given the tiled nature of the maps, this should work fine. It took about ten or fifteen minutes to implement the whole thing, in keeping with the hilariously quick pace of development so far.

Then I noticed that [pygame]( 1.8 actually includes support for collision masks, which was surprising because I thought that the term (if not the concept) was something Jules and I made up!

Next I need to make it so that entities which are trying to push up against an obstacle at an angle instead “slide” along the edge of it. I thought of a good way to do this while lying in bed this morning.

We’ve been keeping big long lists of items and crafting recipes for Paraplu at [Backpack](; the lists are growing quite quickly as we both stop in throughout the day to add our wacky ideas.

Paraplu: Enemies

So Paraplu is already at the point where we can have enemies running around the map. I got them in the game today, and have them chasing the player with very simplistic behaviors. There’s a terribly primitive collision detector in there, checking whether they’re running into any solid objects, but it’s bad in that it just samples nine points on each object’s rect, checks whether those points contain solid pixels in both objects, and if so, returns True. Tomorrow I want to write a real pixel-level collision detector.


Soft Landing is an enormous game. When I imagine it in its finished state, it’s like Xenogears, Ar tonelico, Sakura Taisen, and other pinnacles of achievement in gaming, crafted by large teams of professionals working full time. I believe we will finish it, and I believe it will be everything we are wishing for. So far it’s taken four years, and we haven’t got anything to download yet.

Nobody starts out writing by creating an epic fantasy novel. Nobody’s first film project is a feature-length special effects masterpiece. No musician would start out with a symphony. Of course, the reason is because the first stuff you make is going to serve as practice for the creator more than it serves as reward for the audience. Once you’ve got your rudimentary learning out of the way, then you can start impressing people.

But for some reason we thought it was a good idea to start out game creation with our magnum opus, Soft Landing. So we’ve spent four years trying, learning, and starting over. We have a whole lot of rererewritten code and rereredrawn art, but nearly no final in-game content. Perhaps if we were to continue on in earnest from here, we would be done in another two years or so.

But we are in serious need of something we can show. Something we can hold up as a finished product and be proud of. Jules has occasionally mentioned wanting to make some much smaller project, something finishable, something self-contained, and above all, something absurdly cute. I was resistant at first, as I am pretty married to epicness and sentimentality. But for some reason the last time he proposed it, it seemed to be the best thing we could do. Maybe the thought of MOMO PAX finally having a playable product in 2008 won me over.

Nearly all of the code for Paraplu comes straight from Soft Landing, so we’ve got a huge amount of work done after just a few hours. It’s still about moving around the screen shooting bad guys, but at a much smaller scale. For example: the Soft Landing level editor is an enormously complex script that operates on multi-layer OmniGraffle files and has taken as much time and effort as pretty much any other component of the game; meanwhile, the Paraplu level editor runs inside the game and was written from scratch in two short coding sessions.

Hopefully we’ll have something to show you soon. If you’re impatient for Soft Landing, know that this project will give us the same education we’d have gotten by going down blind alleys and grinding away time on SL, but we’ll actually have something to show for it in the meantime. And I’m still concocting the SL story bit by bit as we work on Paraplu.