Well Ludum Dare has come to a close, that makes the third one I've done! I wanted to write this post-mortem sooner, but I defended my thesis proposal today, so I've had a bit of a full schedule.
I made an on-rails style game (think Star Fox) where you need to use items picked up along the way to reach the end of each level. However, there's not just 1 way to beat a level – multiple paths could bring you to the end, or even to another level altogether. The game features 4 unique levels and 2 special stages.
Day 1
It took me 2 hours to decide on an idea. My first idea was bad, my second one was so-so, and I probably had a dozen micro-ideas that weren't so good. I finally decided on an idea: You run through a level, but you can only use an item once.
Alright, an on-rails game, that's manageable!
I didn't want to write a character controller from scratch, so I modified the one that Unity ships with. You will always move forward, and when you hit a waypoint the character will rotate to face the next one (my game called them “direction changers”, great name I know).
First person was necessary because I just don't have the time to model/rig/animate a full character on top of everything else.
I had a lot of ideas for items, the first one I had was a bomb. If this game is going to be similar to Star Fox in gameplay, why not take it a step further? I wanted the player to be rewarded by figuring out some puzzles, not just following the same fixed path. A bomb is a pretty clear tool for opening up a new path, so I wanted to get the tossing mechanic and item inventory working. The inventory works at this point, but I had not made icons for the items yet.
For a while I've wanted to do some of these stylized low-poly renderings. Both of my past LD entries were 2D platformers, so I thought this would be a good way to branch out. I used Maya to do the basic models, Blender to do fractal displacement of the vertices and reduce polycount, then back into Maya for texturing and light baking. An advantage of doing the lighting/texturing in Maya is that I can use things like soft shadows and global illumination, which free Unity does not allow.
I finished modeling level 1, just a short tutorial level, about 6am on Saturday morning. Definitely ready for bed at that point. I fiddled around with texture baking, set the level to bake, and went to bed.
Day 2
So, the light baking didn't work. I'll summarize my lessons for doing light baking quickly: have as little geometry as possible. I didn't have enough time to really figure out what was causing some of the issues, so I had to make all the levels very low poly. This wooden in the image didn't make it into the game, instead I used a quick rock bridge. RIP bridge :'(.
It makes sense to prioritize the most important mechanics first. Picking up and using items is the core mechanic of the game, so that's what I decided to focus on. At this point, you can pick up a chest and get the item inside. Also, you can take damage! It depletes your heart count, and the screen edges flash red.
Just under 1 day and the first level was complete. I planned on 6 levels, so I knew I'd have to pick up the pace. Luckily at this time, most of the programming was finished (except for some level-specific things) and I had an established workflow for level creation. I determined that each level would take 2 hours for the art and 2 hours for programming and implementations. That turned out to be pretty accurate.
Level 2 art was finished right at the halfway point. This level introduces divergent paths – the normal route takes you into the mountains, but the (not so) secret route takes you to the crystal caves.
This level had a lot of programming – I needed decision points for certain paths, as well as destructible objects and moving objects that damaged the player. In a particularly evil mood, I put 2 rocks at the end of that level that hit you, which I think frustrated 99% of the players into choosing the crystal caves route.
After finishing the second level, I started working on the crystal caves.
I wanted this level to do 2 things: 1- look cool, 2- be kind of difficult. I felt the difficulty was a fair price of being able to completely skip the mountain level. Any mistake in this level will instantly kill you, and the beginning has a relatively difficult double-jump to perform. I wish the texture resolution of the level were high enough to show off the glow of the crystals, but that's something I had to sacrifice for time's sake. Instead, I threw in millions of particles in an attempt to distract everyone.
The mountain level was next.
The mountain features 3 paths (though 2 take you to the same end). The rightmost path, if you take it (and suffer some damage) will take you to the winter wonderland level! The mountains are probably the most difficult level because if you don't destroy 1 of the 2 ice walls soon enough, you'll meet a cold and pointy demise.
Day 3
The end was in sight at this point. It was 6am on Sunday and I had not slept since those 6 hours on Monday night. But I only had 1 level left to go, and 1 special level (the Christmas-themed one was very, very short). I wished I had more time to work on this level.
I started to take less progress photos at this point because I realized how tight time would be. I probably lost 1.5 hours on this level simply because of how tired I was at the time. I don't know why I decided to model, rig, and animate a character at this point. I can't rig or animate to save my life.
Oh well, the boss is a tree.
I added rigs and animation in about... 20 minutes? It's a hackish combination of a y-shaped joint chain and hand-animating vertices. It works alright for the context that it's in, however. The level is pretty small – it's just a figure-8 loop that constantly passes the boss. You have to use the endless supply of bomb chests in order to defeat him.
Once the boss was completed, I threw together the main menu screen.
Nothing like some last-minute programming! I decided to have a travel log that kept track of your path. That way the player can see which paths they have traveled and try to go back and unlock all of them (a pretty bold assumption thinking people would actually play this game 2 times, let alone 3).
The winter wonderland level was finished an hour before the finish. It contains a small message to all the LD participants as an Easter egg.
Final thoughts
What went well
- Art style definitely worked well in my favor.
- I got to take advantage of my background in lighting in order to make some cool levels.
- The concept of an on-rails adventure game is pretty neat.
- Picking up and using items felt pretty good.
- Lots of unique levels for the amount of time.
What didn't go so well
- Pacing is pretty slow, right up until you get killed unexpectedly.
- There seems to be this big gap between too easy and too difficult, and not much “medium” difficulty in this game.
- That's something I can fix with more time to playtest and adjust levels.
- Low quality textures. Even though they were solid colors, there's still quite a bit of jaggies and some rendering artifiacts.
- The boss fight. It wasn't a complete disaster, but it was one of the last things I worked on, I was super-tired and it shows.