This was my 4th Ludum Dare, I planned to use my own open source game engine and was eager to experiment with the new dynamic lighting system I added. When the theme was announced on Friday night I was at a Louis CK show and went out to dinner after so I thought about the theme a bit but didn’t really get started until Saturday.
At first I felt the theme was almost too generic because the concept of an anti-hero is already ubiquitous in contemporary pop culture. It seems like in the majority of modern video-games the player engages in at least some villainous activities. With my entry I tried to go as far past anti-hero as possible by both removing all virtuous attributes from the player and applying more humanistic and heroic traits to the enemies. The core idea I kept going back to is what if Mario was Hitler?
I wasn’t sure of my idea at first so I did most of the art early on Saturday, hoping that my idea would solidify. To give myself some immediate art direction I decided to make it more of a direct parody of Mario Bros. I loaded up an emulator and played the first few levels of Super Mario Bros to get a feel for the gameplay and aesthetic. I started by making a prioritized list of textures and objects I would need. For the main character I started with a reference layer of Mario from a sprite sheet and painted a layer on top of that to be my character. Every enemy in the game uses the same sprite which is desaturated so I could have several different colors of enemy for variety. I noticed a trick in Super Mario Bros where the goomba’s feet are animated to walk by flipping the sprite horizontally, so I borrowed that same idea. Instead of a constant animation I use the speed of the enemy to control the animation speed.
The second half of Saturday I focused on enemy behavior. They needed to be as lifelike as possible to help inspire emotion. The real difference between anti-hero and villain comes down to whose perspective you view it from. Enemy dialogue is crucial to the concept so I wrote a simple method for playing dialogue lines to easily add or change them while working. By the end of the day I had very basic prototype and posted the following screenshot, which looks almost identical to the final game, except there was just less stuff and virtually no level to explore.
Going into Sunday I had a good start but still the bulk of work was yet to come. I wanted to get the sound effects out of the way, so I made a list of 9 sound effects and banged them out in SFXR. I played with wolfram a bit to get some music, and was able to get a song that is sad and dissonant but it doesn’t have a proper ending. Most of Sunday was devoted to creating the level, bug fixing, and polishing the gameplay. Mario style block breaking was added to make the platforming more interesting and help portray the player as a destroyer. In the final minutes I whipped up an icon because it helps make the game feel complete. Just before the end I played all the way through my entry exactly as a judge would and found a major bug where the king wasn’t appearing in some situations. Lucky I was able to putty up a fix just in time.
What went right
- It conveys the theme well and works as a parody.
- Mixing normal mapping with pixel art looks pretty cool.
- Adding a bunch of sound effects all at once saved time.
- Save point system helped players avoid frustration I think.
What went wrong
- Needed more polish on the player movement and core mechanics. I got some complaints and was able to make it much better post-comp with some minor tweaks.
- The music could be much better. I need to practice making songs in about an hour so I am confident enough to do it.
- I played through the full game too late, ended up catching a major bug and scrambled to fix it at the very last minute.
- I slacked off too much and should have stayed focused and trusted myself.
- Dark World - Link to my page with more info and download.
- Judging Results – Reviews and final scores for my Ludum Dare entry
- Source Code Viewer – For those interested this game is open source!
You must log in to post a comment.