Solo indie-developer working (slowly) on a huge space-game.
About Jeck (twitter: @Firesparkmedia)
Ludum Dare 22
Archive for the ‘LD #22’ Category
So this is the first Ludum Dare I made it all the way through, and my second attempt total. I didn’t make it for the compo, but thank god for the extra day allowed by the jam. I had a blast doing it, and I’m very proud of the result, Frosthome:
What went right:
Cutting the design. This is the number one reason I succeeded. The original design called for a series of levels in different settings, with an interesting little mechanic that caused the level to “decay” over time, bits and pieces falling apart and changing the paths through it. Further, it required a set of items to be scattered across these levels, which you’d have to collect to ‘win’. This design was originally called “Scraphunt”.
What I ended up with is a simple 2D parallax platformer with no bells or whistles. But I finished it on time, and I think the design is more elegant because of the features I cut.
TinyXML. It’s an easy to use open-source XML parser designed for simple integration. Thanks to this, I had level saving and loading up and ready first thing.
The art. Thank god for my tablet, but really this can also be attributed to the level editor. 99% of the level is made using two basic image files, rotated and scaled, with some fuzzy-blended patches of the same thing overlaid to hide the edges. It was quick and efficient. The art was the second thing I worked on, and prototyping with real art is a big motivational kick.
The level editor. It’s fairly easy to use, and without it I’d have to design levels by editing the XML file they save to. I still have to do that if I want to introduce an item with a texture not used in the level, but overall it’s simple and efficient. If I want to design a jump, for example, I just play the game, make the jump, swap to editor in mid-air, place a platform below me, and continue on. Easy.
Sleeping. I tried staying up late the first night, but when I was mistaking array for array[i], I realized sleep was essential. After that I made sure to manage 6 hours a night.
What went wrong:
The physics. “It’s a platformer,” I thought. “How hard can it be?”. Well, it turns out that it’s damn hard to do ‘right’. Beyond the generic but annoying stuff like getting the player to follow slopes and preventing collisions with the environment, you’ve got the fun but damn hard stuff: adjusting jump timings, player speeds, air control, and all those other little questions about what makes a game fun. Can the player wall jump? What about one of those mid-air double-jump direction reversals, ala Ghouls and Goblins? Should he slide on the ice? Tweaking these things took time. A lot of time. I spent pretty much the entire second day doing that.
The level editor. I spent real time making it easy to use and intuitive- drawing outlines around selected objects, doing some things (color picking) in a dialog when I could have used straight key-presses. These little bits of polish all ate away at my time.
Real life. I lost about 3 hours a day to various real-world responsibilities, in addition to time spent eating and sleeping. The worst was an appointment I forgot to cancel on the afternoon of the last day, right during crunch-time.
Forgetting to explain double-jumping. This is a big one. After releasing, I had several of my friends tell me that my game was “impossible”. It turns out they weren’t double-jumping. This kind of basic mechanic introduction is key, and I can’t believe I missed it.
Level design. The last hour of time was spent adding the win screen, the kitty achievement, and freezing to death. The last 15 minutes was spent taking my test level and turning it into something playable. I really wish I’d spent time making a longer level. Luckily I hear it’s quite challenging, which makes up a bit for the length.
Audio. I spent some time integrating ogg/vorbis and openAL, and then never got around to using them. Thankfully this was mostly boilerplate stuff, so the time cost wasn’t too big… but I feel keenly the lack of moody music with whistling ice chimes and wind blowing.
I’ve successfully completed my Jam entry, Frosthome. Guide the silhouette across platforms to shelter before he freezes to death. This was my first successful Ludum Dare, and my second LD total. I’ve learned a lot about time management and cutting features. Expect a postmortem tomorrow; for now, sleep.
So, just a quick post to show the currently-evolving art style. Those icey structures are composed of repeating chunks of the same drawing, with some alpha blending patches on top to get the edges to look right.
I think the iceberg setting works well with the theme, but man do I have big plans for this…
I’ve also done some engine work, and now the little man can move and jump (but without animations, and without strictly following the contour of the foreground).
So, I spent most of yesterday setting up a basic environment, and then moved on to support for level editing. I did manage to get six hours of sleep, though- figured it was best to be well-rested.
Artwork is placeholder stuff, gameplay is non-existent (you can’t even move the player character without using the level editor, heh). I’m hoping the fast level creation is worth the time it took to set up editor– next area of focus is the art.
So, I’m in. This’ll be my second Ludum Dare.
I will be coding using openGL in C++. Some libraries I’ll be using: OIS for input handling, FTGL for text rendering, and ogg/vorbis for sound.
Still not certain whether to go 2D or 3D. Will wait for the theme to decide. If I go 3D I might also bring in some engine code from another project– just basic 3D math and stuff, no game code. The schedule is going to be tight, this being the holidays, so I may end up switching from compo to jam midway through.