About nilsf

Mostly bearded, he occasionally snores.


nilsf's Trophies

The "Global warming to melt ice as a game mechanism" medal of friendship
Awarded by Tenoch
on April 22, 2009
Honorary Swede
Awarded by jolle
on December 13, 2008
The "Excellent Use of Zombified Kittens" Award
Awarded by Morre
on August 22, 2008
The Name Fail Award
Awarded by GBGames
on August 13, 2008
Worlds Finest Juice Award
Awarded by PoV
on August 10, 2008



MrPhil says ...

I found it very hard. I got about 1/2 way down before throwing in the towel. I like it.

dstrysnd says ...

hahaha. this is awesome.

Notch says ...

Hehe, is that a reference to Flight of the Conchords?

I beat the game, btw. Very fun!

edit: No, I didn\'t. omg. =D

demize says ...

Innovation gets N/A, because you said that it was a copy of a game, but I don\'t know if that\'s true, so.. :P But it\'s a hard, fun game.

jolle says ...

Cute but hard. Feels like collision box is a bit too big, but maybe I'm just bad at this.

Jach says ...

Fun, challenging game. Good job!

edwardoka says ...

Awesome. Zombie kittens, owls, and cake! This to me is what LD48 is all about. Humour, pace, challenge. I didn't put it down until I'd completed it.

Endurion says ...

I like it. Very nice.
A lot of cute little touches that make it funny.

matrin says ...

Kinda hard. I couldn't finish the zombie level.

Frimkron says ...

Kept me playing for ages - simple but very effective gameplay. The appearance of a second level was a very pleasant surprise. Some kind of fullscreen mode might make it a little easier on the eyes.

kutani says ...

This reminded me a lot of Yahtzee's "The Art of Theft", both in graphics and execution. That's pretty cool. First level was just challenging enough, but the hitboxes on the zombies made me quit. Way too big; too many times I had a clear jump over but died anyway.

Still, quite nice.

Codexus says ...

I couldn't get into it, it was just too hard and frustrating and the window is so small it's hard to see anything. You get extra audio points for the cool robotic voice though.

Hamumu says ...

I really liked it, but like MrPhil, it was crazy hard. It was fun in that I kept learning a little more and getting a little farther, but then one bad jump ruined it. I too gave up before I could make it all the way down. Maybe 3 hit points would be nice? But it was really cool and stylish and funny.

keeyai says ...

Great FotC reference - 5 for humor for that + kittens.

Morre says ...

Bloody excellent. Nicely animated, superb pixellation.
Gameplay is good fun and surprisingly long-lasting.
Zombies, references to Flight of the Conchords, Portal, and whatnot - this is a dream come true. This would most certainly win if I was the lone judge. :)

Mind you, after failing a miserable amount of times on the second level, I just completed it in debug mode in the end.

wonderwhy-er says ...

Funny game. I think only one with easter eggs :D "Cake is unreal" :D Didn't got trough it all but got to middle of second building.

DrPetter says ...

Win! I love games where you can tell each level was made "for real" and with some intent rather than just being hacked up in a level editor using off-the-shelf tiles etc. Special functionality and one-off events are great to make things interesting.
I expected it to be a lot less forgiving than it actually was, too. Respawn points were an unexpected but appreciated boon.
Next time: use an in-game screenshot to represent it! I almost passed on this one because the title screen looked like a dull game ;)

pansapiens says ...

Cute sprites ! Great, detailed levels ! Excellent sound ! On theme ! Funny ! Plays well ... tough but not too tough. Great little game.

Deepflame says ...

Funny game, I had a good time trying to get to the end, though I didn't actually manage. (Time constraints, might try again later.)


Sivart13 says ...

I got too annoyed to ever make it to the second level. Why does your dude move so slippery-ly?

Archive for the ‘LD #12 – The Tower – 2008’ Category

Post compo version

Posted by
Monday, August 25th, 2008 2:34 pm

I made a post compo version, fixing the typo in my name ūüėČ and adding an easy mode.

Get it here.

Finished rating

Posted by
Sunday, August 24th, 2008 4:32 pm

Yay, I finished rating everything I could. Just in time too! Lots of cool games, I have to think of a few trophies to award soon. :) Unfortunately I wasn’t able to run 9 of the games.

Thanks to everybody who rated my entry. I’m planning on making a post compo version with an easy (or maybe it should be called not as hard) mode. How should I implement it though: I’m thinking either give the guy a few hit points or having less monsters or maybe more checkpoints. Perhaps a mix? Please let me know what you think. Oh and I’ll also fix the typo in my name. ūüėõ


Posted by
Wednesday, August 13th, 2008 9:40 am

I just realized I misspelt my name on the menu screen in my entry. :(

Escape From The Tower of DOOM: post-mortem

Posted by
Tuesday, August 12th, 2008 3:43 am

Before the competition started, I made a list of ideas for all the finalist themes. Luckily The Tower was pretty much my first choice (along with escape) so I had a pretty clear image of what I wanted to do right away. In the end the game turned out to be pretty close to the one in my head :).

My development process was rather odd, as I did pretty much all the coding on my mac and all the graphics on my ubuntu box. I think most people would expect the opposite. The reason for using ubuntu for the graphics is that I’m used to the gimp and it kind of sucks on OS X, however I don’t have a really good reason for doing the code on the mac, I guess I just like using this machine more.

What went right:

I had a pretty clear plan in my head for this theme so I was able to get started right away and have something playable very fast. After that I had a lot of code-test-fix-test-refix-code-… cycles which I think were a pretty good way to make progress fast while not breaking everything along the way. Python is probably a good choice for this kind of development since with no compiling and linking to do I often felt free to test after even very small changes. Btw, by test I mean playing the game and trying to make it¬†misbehave, not automated unit testing.

The game was not too ambitious. I figured it would be better to have a small rather polished game than a big unfinished and buggy one, so I tried to set my aim rather low to something rather simple but that I could pour a lot of chrome on. I feel I did pretty well here with the small details. The game was almost done on the first day and the second day was spent mostly on fixing little details and tweaking the levels.

The sound, this was the first game I included sound in and I think it worked out pretty well, I used three tools to make the sound effects: cfxr an OS X port of sfxr; say a text to speech tool; and Audacity.The level 2 sounds were recorded in Audacity along with one of the robot’s killing sound, the robots were done with say and the beeps and jump sound were made with cfxr. Then I used Audacity to transcode to vorbis.

What went wrong:

The collision code was horrible for a rather long time. I tried doing single rectangle to rectangle collisions and figure out where to place the character depending on his current speed. That didn’t work out for me as the player would often pass through walls or get stuck in ceilings when changing direction or jumping into walls. So I made a new system with two rectangles for the player, one tall thin one for vertical collisions and a short fat one for horizontal collisions. That didn’t work either despite quite some time lost fiddling with it. In the end I just made 4 rectangles for the player, one on each side, and tested them against all the walls. I feels horribly inefficient, but it was simple and it seems to work.

The levels are a background image and a list of rectangular walls, that seemed like it would be much easier to code efficiently than collision against a black and white bitmap, but it made making levels much harder. In the end I wrote a level tool that displayed the level image and let you drag rectangles onto it and spit out the list of rectangles. This made it a bit less tedious to make levels but it was still a pain.

Difficulty, since I was testing the game a lot, I got pretty good at it so I think I made the levels too hard. My girlfriend did some testing, but since she doesn’t play computer games a lot I didn’t didn’t weigh her concerns about difficulty as much as I should have.

Bits left out:

Originally I had planned to include a gun in the second level where the owl head is now and have a mass of zombies on the bottom floor that you couldn’t jump over, but in the end I figured it would break the flow of the game and that it wouldn’t be that much fun.¬†

Another idea that didn’t make it was having boxes the player could push around. Unfortunately I had that idea rather late and while I probably could have coded it in fast enough, I would have had to redo a lot of the levels or make new ones and that would probably been too much work. I wish I’d thought of that at the beginning since I think it would have allowed for some more¬†interesting “puzzles”.

Finally, in my first image of the game there would have been a first level without monsters but just rather static fire to avoid. I decided to cut that very quickly though because there is no way I could have drawn decent looking animations for fire (and I didn’t add animated characters until rather late and wasn’t sure I wanted to deal with it) so I left it out. I’m not sure whether it was really a good idea since it might have softened the learning curve. On the other hand it might have been less fun and players could lose interest right away.

Lessons learned:

Make proper¬†resource¬†loading right away, for almost all the development cycle all the files, code and media were in one big directory and were all loaded directly. First I noticed that when the sound didn’t initialize that caused crashes so I made a quick audio module so I only needed to do error catching in one place instead of all over the code. And do get some caching as before sounds were reloaded almost every time they were used. Finally near the end I decided to put all the media in a subdirectory to make things cleaner and have an image module to cache images. Which brings us to lesson two:

Don’t make big wide ranging changes right before you release. Changing the way I loaded images was a pretty¬†straightforward¬†thing, but it required changes in tons of places all over the codebase. Inevitably I missed a few, usually that would be a problem because I test a lot, however I wanted to get the game out of the door, so I didn’t test it nearly enough. So the first version I released would crash in some common conditions. Thankfully it was still well before the deadline so I managed to fix it in time but it was rather embarrassing to ship something so broken.

There we go, sorry for the wall of text.

Windows build

Posted by
Monday, August 11th, 2008 8:53 am

Keeyai kindly made a windows binary of my game.

Thanks a lot. :)

link to windows version 

Escape From The Tower of DOOM

Posted by
Sunday, August 10th, 2008 2:16 pm

Unoriginal title isn’t it?

Hopefully everything works. It’s quite short but rather polished (by my standards in any event).

Arrow keys: move, shift: jump. (no it isn’t an xjump clone :P)



Source (python)

Hopefully windows sooner or later


Good luck to those still working on their entry. Now ice cream! :)

edit: fixed link (oups)

edit2: Oups, last minute changes created a bunch of nasty bugs, lessons: don’t make big changes right before releasing; test test test after big changes. Hopefully this time it will work.

edit3: Keeyai made a Windows version. Many thanks.

edit4: Fixed windows link, thanks to Entar for pointing out it was broken.

Journal post 10: nearing completion

Posted by
Sunday, August 10th, 2008 1:07 pm

LDT +3005

Local time: 23:05

I think I’ll turn my entry in without adding a third level, I don’t have any good ideas for it nor do I feel like staying up till 5. So hopefully my next post should have the final game. :)

I don’t have a windows box so if somebody could make an .exe with py2exe I’d be grateful. I’ll py2app it so the setup.py file should be pretty straightforward to convert, and I only used pygame so there shouldn’t be any weird dependancy issues.¬†


Probably the last foodphoto: (unless I have dessert :) )

Teaser screenbit:

Journal post 9: procrastination

Posted by
Sunday, August 10th, 2008 11:01 am

LDT +2753

Local time: 20:53

Today has not been very productive, I had almost finished yesterday so there wasn’t much pressure. It’s rather short though, so I’m thinking about making a third level. Not sure yet…

My awesome girlfriend brought back some chicken wings on the way back from her walk. :) Overexposed photo:

Teaser screenshot bit:


Journal post 8, late brunch

Posted by
Sunday, August 10th, 2008 4:48 am

LDT +2145

Local time: 14:44

We had a late brunch. First we had french toast:

Then since we were still hungry we had eggs and bacon and squeezed some fresh orange juice:

And finally here’s a deskphoto:

Anyways, my entry is pretty much finished, just polishing it now. :)

Journal post 7

Posted by
Saturday, August 9th, 2008 11:57 pm

LDT +1652

Local time: 09:52

Just got up for day two. My there seem to be a lot of entries this time. :)

I noticed something odd about my¬†development¬†process, I’m doing all (-most all) the coding on my mac and almost all the graphics on my ubuntu box. I think one would expect the opposite.

Journal post 6

Posted by
Saturday, August 9th, 2008 3:43 pm

LDT +2040

Local time: 01:39


Well, I’m off to bed for the night. I got a lot more accomplished¬†today¬†than I’d expected. :) Level 2 is almost done already. Plan for tomorrow: more sound effects, cutscene, maybe difficulty settings, more chrome, maybe even music. Plus anything I think of at night.

Journal post 6

Posted by
Saturday, August 9th, 2008 12:54 pm

LDT +1755

Local time: 22:55


I fixed the collision code, and did a bunch of small improvements. I also slacked of the last hour or so to rest my eyes. I should start planning level 2.


A snack:

Supper my wonderful girlfriend cooked:

Journal post 5 & demo

Posted by
Saturday, August 9th, 2008 8:59 am

LDT + 1400

Local time: 19:00


Here’s a working demo. :) The collision code is still buggy though, and it’s rather ugly.

It’s written in python + pygame, so just $python run.py to play.

Also it doesn’t catch exceptions yet so if the sound isn’t available it will die.


edit: dead link,  get the final version instead

Journal post 4 (I think)

Posted by
Saturday, August 9th, 2008 6:28 am

LDT +1125

Local Time: 16:23

I made a horrible level format decision, collisions are against rectangles that have to be entered by hand. So I made a super level editor. Still tedious, but¬†feasible. I think I’ll have enough time to make a second level¬†tomorrow.

Ugly isn’t it?

Tools used so far:

  • -python
  • -pygame
  • -svn
  • OS X:
  • -Smultron
  • -Seashore
  • -Safari (for the pygame documentation :) )
  • -cfxr (sfxr OS X port)
  • -say
  • -audacity
  • Ubuntu:
  • -gimp
  • -gedit
Enough slacking, back to work.

Journal post 3

Posted by
Saturday, August 9th, 2008 4:03 am

LDT + 0900

Local time: 14:00

My awesome girlfriend got us some takeaway Sushi. ūüėÄ

Regarding my game, I’m still making progress. The collision code is less buggy now, hopefully enough to get by. I made a silly mistake planning this though: a game which relies quite a bit on images knowing my drawing skills are¬†inexistent. Anyway, good luck to everybody, keep on chugging along!

Journal post 2

Posted by
Saturday, August 9th, 2008 2:26 am

LDT + 0725

Local Time: 12:25

Progress is being made.¬†Unfortunately, I can’t draw. And the collision code seems more buggy than I thought. Oh well, still plenty of time.

[cache: storing page]