About Jiggawatt
Entries
Ludum Dare 26 | Ludum Dare 25 | Ludum Dare 25 Warmup | Ludum Dare 24 |
Ludum Dare 23 | Ludum Dare 22 | Ludum Dare 21 |
Jiggawatt's Trophies
Archive for the ‘LD #21’ Category
Escaping Ludum Dare

I guess I’m going to write a bit of a post-mortem here about Escape the Fate. My other blarg post focused on bugs, this is more about the development process.
See, I’m a first-timer on Ludum Dare. I initially didn’t think I’d have a finished game in the end, I just wanted to try it out and see how far I’d get in two days. It turns out I can work quite efficiently under pressure. Simply having a submission exceeded my expectations, but not being ashamed of it was even more of a milestone.

I did know about Ludum Dare before, but I hadn’t thought about entering. The TIGSource community mentioned it shortly before it started, and this time I went with the flow. There were some promising themes in the voting; I was hoping for something specific enough to narrow down the entries a bit, but also something general enough to not produce gimmicky games. Waking up and finding out about the “escape” theme was satisfying in that sense.
The event started at 5 AM local time, so luckily I had gone to sleep early enough to wake up at 7 AM. Didn’t even need an alarm clock; it’s as if my body was ready for the competition.

I realized most games would take the theme literally, as in there would be a threat you’re escaping from. I wanted to do something different, and the idea of “escaping your body” by killing yourself quickly struck me. It took me just about half an hour from getting up to getting down to business.
I decided to follow others’ advice and do most coding on Saturday, leaving the fancy presentation stuff for Sunday. Since I’m still a bit hazy in the C++/SFML department, I went for the safe choice of Python/Pygame. Once I had a basic engine running, I started designing levels.

So indie.
Then ideas just started flowing, and I repeated the cycle of adding a level/programming a game mechanic for the rest of the day. Moving platforms, switches, blocks activated by them, collectibles, springs… They’re very universal and recognizable features, but in the context of a suicide game, I managed to give them whole new meanings. It was interesting trying to prevent the player from killing himself before the intended part. I paid special attention to the level progression: the first levels are more puzzle-like, the later ones require more reflexes.
I found myself ahead of the schedule, so I started making graphics and music in the evening. It was an okay decision for me. Meanwhile many other people, even previous participants, were still only trying to think of an original idea at this point. This reaffirmed my previous beliefs that schadenfreude is motivational.

I went to sleep early and quite optimistic, with something playable and occasionally fun on my hands. But as you might expect, Sunday was more problematic. My code was fast becoming unreadable, and even worse, broken. The pushable blocks in particular caused incidents that were hilarious when they happened, but tragic when I realized I have to fix them somehow.
Luckily, I managed to avoid that for a while by derping around on IRC and polishing the presentation to what it looks like now. I fell into a coding trance in the evening and escaped my own body, but I did eventually have something to submit. Little did I know it wouldn’t work on anyone else’s computer.

I’m impressed by how py2exe packaging was still incomplete after all the added weight. I did manage to isolate the cause to the freaking font and repackage painfully, making unnoticeable perfectionist tweaks after each upload.
-
The consensus on my game seems to be “polished and challenging” in a nutshell. The concept is distinctive, the levels are memorable, the controls are responsive, the graphics are a step up from programmer art, and the audio suits the mood. However, people have asked for more instructions on the experimental game mechanic. While figuring out level solutions is in the spirit of a puzzle game, I think it’s a reasonable response, and I now know what concerns to address if I ever do an improved post-compo game.
What I regret most is that I had a bit of a rough release. At least I’ve tried to swiftly fix any game-breaking bugs that didn’t show up on my end. If I could do something differently, I’d make more people test my game before submitting, so I would have to do less patches afterwards. Even though bugfixes are allowed after the deadline, I’d love to have just tossed the game on the site before running away and not looking back.
Black clouds above my residence
Fixed the event in the fifth level, which was broken by bugfix 1.0c. Squish a bug, create a new one, it’s the circle of life. Go try it now.
Post-apocalypse
I was relieved to get everything in Escape the Fate working in due time. However, some problems arose after entering.
One tester quickly reported the game crashes for him on startup. I spent a while Googling about py2exe’s quirks and isolated the cause to the font. Had to include that in the download (it’s a free font, don’t worry) and force users to install it before playing.
Later on, people complained the game was confusing with its two different types of falling. Instead of throwing the player straight into the action, I added an intro level which limits the interaction to a minimal amount of tiles. It’s amazing how the mechanics of falling suddenly became self-explanatory. This was on the extended time, so with the slight addition, the game still qualified for the compo.
Just a moment ago, I was giving tips to a player who seemed a bit lost. I wondered why, he hadn’t even gotten to the tricky part yet. Apparently, the game was too big for his laptop screen, and parts of it were cut off so that the level was unplayable. Yesterday I realized this might happen, but I kind of forgot about it when I was busy fixing collisions. That goes under bugfixes, so it won’t get me disqualified from the compo either, especially when I posted it as an alternative download. I should know since I’ve answered several questions about an update’s validity on #ludumdare.
Speaking about IRC, my username is different between the site and the channel. I’m also known as Jiggawatt; I simply failed to predict I’d be using the IRC channel much, so I registered here with something else than my standard issue IRC nick.
For those who actually got the game working and even understood what’s going on, the feedback’s been positive. So go try it.
Game over
Escape the Fate, a suicidal puzzle game, is now done with a handful of hours to spare. I’m surprised I made it considering the roadblocks. It was certainly a motivating experience and I’m willing to do it again.
Not right away, though.
Escape the Fate: http://www.ludumdare.com/compo/ludum-dare-21/?action=preview&uid=5551
So close yet so far
http://www.mediafire.com/?255xu6275h5afhb
With 10 hours to go, here’s a beta with collision bugs and an unfinished level. It’ll however give you a good sense of what you’re going to get. I’m going to be able to submit something alright, but I’d feel dirty if this were the finished one.
Sadism and its counterpart
Tee hee. While this level is fun, it also shows how damn buggy collisions are.
Animations done, sounds working, some more tricks on the way. Can’t think of any major changes I’d have to make, so I believe I’m in the clear! I haven’t tried py2exe before, though, so time will tell if I’ll be able to package this thing properly.
Leaps
Springs. A design challenge to keep the player from killing himself too early, but they also add variation and Action!.
My levels are becoming increasingly more complex. It’s very much my style, I don’t mind it, it’s just that the countdown clock does.
Edit: Nudged the image to the right. Still room for cropping the scene, I guess.
Deep in it
Right, so it actually has some graphics and music now! Starting to seem more like an actual game. Almost looks like I’m going to finish it, but I won’t get cocky just yet.
I’ve removed two horizontal and two vertical lines from the data of each level. There was a lot of empty space, and there still is. I might have to include an option to turn scaling off for those with laptops or otherwise small screens.
Something playable!
http://pastebin.com/U7qDvG54
Needs Python+PyGame. 4 levels so far. I know about the moving platform glitches and I’m onto them, but otherwise everything seems to hold together somehow.
Jerky movement is still movement
Another level! Used pen and paper to sketch this one. That seems to help whenever I can’t think clearly, I recommend trying it.
I would’ve recorded a video, but Camstudio isn’t my friend. Everything plays back at 4 FPS or so even though I wasted valuable time tinkering with the settings.
The cherry-colored rectangles are switches that toggle the white blocks on/off. It would’ve been more clear as a video, but oh well. Managed to fix a complicated bug involving collisions and pushing forces, which is crucial to the sort-of-witty solution for this level. Sometimes I amaze myself under pressure.
Moving on (in several ways)
Level 2. Man, didn’t expect those moving platforms to cause me grief. I guess you just can’t plan everything ahead in Ludum Dare. They’re a bit buggy, but close enough to say they’re working!
I’ve got it now: every level is going to have one of the pictured yellow collectibles that take extra effort to get. Killing yourself is enough to move on to the next host body, but you can’t escape the curse (and get the good ending) unless you gather all the collectibles as well.
The Plan
Since the contest started at 5 AM my time, I thought I’d go to sleep early. Woke up at 7 AM and got an idea right after seeing the theme.
There is a curse ravaging a city. The curse forces dead spirits to possess people. In each level, you control a cursed spirit that inhabits a host body, and your task is to make the host commit suicide so you can escape his/her body. When that’s done, the curse carries on to the host’s spirit, which moves on to possess someone else.
You must escape the host body (objective of each level) and eventually the whole curse (objective of the game).
Stay tuned and nobody steal this idea cuz I got this

















