For those that don’t know, Ludum Dare 29 went down this past weekend. Ludum Dare is two events. One is a competition in which solo entrants make a game from scratch in 48 hours, the other is mostly the same, with relaxed rules on time, team size, and preexisting graphics. I threw my hat into the ring for the second time as a solo entrant in the 48-hour competition, and here is a breakdown of how it all went developing my entry Darkness Shines Through. I realize this is a bit late, but it’s been a hectic week for me, and I didn’t have the time or the drive to do this until today. Ludum Dare takes a lot out of me, and trying to rate a large number of games to get widespread exposure is almost more work than making the game in the first place. Almost.
Man against machine
If you’ve followed this blog at all, you know I’ve been making games for a long, long time, as a hobby. I was content to put my prototypes out to my friends and family and leave it at that. A while back that all changed, and I decided to try and go public with my work. After making a moderately popular Minecraft mod that took almost two years to write, I decided to go much smaller scale to save my sanity and have a better chance at finishing something cohesive. I tried to make an RPG, but I bit off a bit more than I could chew at the time, and when Ludum Dare 27 came around, I decided I would give it a go. I’ve always thought it was a fun idea, and that seemed as good a time as any to give it a try. It went pretty well, I turned that game into my first commercial product and earned my first dollars through making games. The feeling was incredible, though the project was a bit underwhelming as it didn’t exactly target the broadest of audiences. I finished up the final touches on the last patch for that game a mere week before this round started; the timing couldn’t have been better.
About a week before the contest started, I decided I was going to try and use Unity this time around. Despite the few hiccups I ran into, I largely enjoyed my experience with LibGDX, but I would like to branch out into the console market, and Unity provides me an easy way to do that while still making small PC games in the interim. I only had a few days to try and learn how to use Unity, and that simply wasn’t enough time. I’m a programmer, I write code, it’s what I like to do, it’s how my brain works. I was not able to easily adapt to the much-more-visual style of development that Unity presents, so at the last minute I scrapped the idea and went back to LibGDX.
I also thought this would be the perfect time to give this whole game development streaming thing a go. I’ve seen it around quite a bit, and while it really didn’t sound like a good time to me, I’ve been working on breaking out of my comfort zone to get my name out there. After a few snags with that, I finally got things up and running. Sort of. For whatever reason, Twitch would not update my status from offline, no matter how online I got. Others could view my stream, it was up and running, but I was listed as offline which meant nobody could find me; I didn’t show up in the Ludum Dare list of streams. In getting set up I had to switch my account from being a Justin.tv account to a Twitch.tv account, so I assumed it was because of that, and declared myself ready.
Man against theme
As soon as I knew I would have the time to enter, I started looking at the theme voting. There were some great themes, some that were mediocre, and some that I could do naught but roll my eyes at. As the list narrowed down to the final twenty, my brain went into overdrive. Every theme I read, my mind would flood with ideas of how I could possibly interpret that theme in a way that wouldn’t be overdone, and wouldn’t be out of the reach of my capability. I jotted down the best ideas that came to mind; nothing more than an elevator pitch and maybe a title, but it helped me not go crazy in the days leading up to the event. In the end I think I wrote down about 15 different ideas, each able to be tweaked to fit one of a couple of themes depending on what the actual theme was. I even tried to give myself a leg up by looking at the voting stats for the first four rounds to get a best guess at what it would be. Don’t do this, kids, it doesn’t work and it’s not a good use of time. When the theme was announced, I looked at what I had for that theme and realized I hated it.
I took parts from what I had written down; it was a platformer, the surface I was delving beneath was the facade of a small town of cult members, and there would be no combat. Outside of that it was back to the drawing board. In the first hour after the theme was announced, I started up my Twitch stream and started brainstorming. I decided to go with stealth as the conflict mechanic to replace combat, and to go with a horror-game feel. Making a stealth game in 48 hours that feels satisfying is no easy feat, so I decided to downplay that aspect in favor of a metroidvania-style of exploration. The stealth would still be there, but instead of being an epic struggle like Mark of the Ninja, it would be something more along the lines of blasting away Skree bats in Super Metroid. Something to get in the way and maybe slow you down a bit, but not really the focus. I came up with a list of must-have features, should-have features, and nice extras to add if I had time to spare. I felt good about it.
Man against time
By the end of the first night I had a simple platformer up and running. No graphics, no sound, just boxes jumping around and going through doors. The last time I did this, I had a horrible method for getting level content into the game, it took forever, and I nearly didn’t finish as a result, so one of the first things I set up was a streamlined process for getting levels from Tiled into my game. That turned out to be a crucial feature later on, so I’m glad I nailed that down early. My other biggest shortcomings last time were a lack of good audio, and the fact that the game was insanely hard. Audio was easy, I just had to prioritize it higher, and to address the second issue I pulled a page from the Bioshock playbook and made death a non-issue. I simply teleported the player back to the start of the map if they got caught. No loss of upgrades or progress, just a small inconvenience, and one that was easily avoided by entering a door. Going into day two I had a plan and felt on track.
I had convinced a friend of mine, the one with whom I am currently building a ping pong table, to try his hand at the solo competition for the first time. On Saturday he came over and set his laptop up across from me, with the idea that we could bounce ideas off of each other, and when the time came we would have easy and quick access to a playtester. This also gave us the opportunity to try and finish painting our table. None of those things ended up happening, but it was nice to not be locked in solitude for the entire event. I am seriously considering trying to find a local gathering for the next one, the extra human interaction was a bit distracting at times, but it helped stave off panic in a big way. What didn’t help was the fact that trying to stream was causing performance issues and eventually crashed my computer. Being behind didn’t help either.
By the end of day two, the panic had set in. I felt like I had over scoped, I felt like there was no way I could finish, and my mind was going at full speed when I tried to go to sleep the first time. I had fully animated, randomly assembled characters, tiled graphics loading from the map, and all of the music complete, but the gameplay was still missing a fair bit of what I had originally listed in the mandatory category, and I hadn’t even started on the level design. I tried to think back to where I was the last time, but my memory was hazy, I was tired, and I felt mentally drained. After kicking around in bed for about thirty minutes with no sleep in sight, against my better judgement I went back to my office and sat down for some more programming. I managed to get a buggy version of one of the planned platforming moves up and running in about twenty minutes, and while it wasn’t a huge milestone, it set my mind at ease that all of my architecture up to this point had put me in a good place. It seemed like a lot, but it would go quickly.
Man against self
On the final day, I was all drive. I became hyper focused and started chewing through features like a programming wizard. Within the first few hours I had all of the movement upgrades I had on my mandatory list implemented with only a few bugs that I waved away as being a casualty of speed. Stealth was working, the enemies would spot and react to the player. I wanted the whole town to react to the player being spotted, like invasion of the body snatchers, they would point and scream, and some flying cultist would come in and knock you out. Instead I went with a simple screen fade and called it a day. With about four hours left, I had all of my must-haves but two put in, and after deciding that I had time for neither of them, looked at the list of cool extras. I really wanted to add windows to the buildings, have them react to the sound of the player and open with a short delay. They would spot you just like the cultists, and the result would be the same, it just added an extra dimension to the game. I started drawing, got the graphics for them ready, got the code for how they would react written up, and with about three hours left, realized I didn’t have time to tweak the level editor and loading code to put them into the game.
I got pretty upset with myself for wasting that time. It was time I should have been using to finish the level map. Then it hit me. I hadn’t even started the level map. I panicked hard. I wanted backtracking and exploration, how could I design all of that in just a couple of hours? Fortunately, the pipeline I had set up for myself at the start saved me. The process was so streamlined I didn’t even have to close the game to load in the new map. With the editor on one screen and the game running on another, I was throwing down tiles like a fiend. After the first hour I was probably a quarter done with what I had initially envisioned. Instead of trying to finish that goal, I started throwing upgrades into existing places on the map. I added a few ledges to make the tops of building accessible with the right upgrades and stashed things all over. It changed the feel from what I wanted, no more sprawling exploration, instead a densely packed town with a collectible around every corner. The town was done, all I had left was to design the final area of the map, the church, and slap it into the game. Then I looked at the clock.
I had minutes left. Less than ten of them. I had lost track of time completely, but at least the town was done enough to play. After taking a deep breath, I made a giant empty room and put it into the game. I coded up the triggers for that map, which didn’t end up working anyway, threw in the entrance and exit, and then checked the time again. Five minutes. In a frenzy I played through the game one last time to make sure it could be beaten. With just two minutes to spare I saw the ending screen, threw my hands up and called it done.
Man against society
After I finished, worked through a stupid compatibility issue with the web version and got both versions uploaded, I took a break. I watched a movie with my oh-so-patient wife who was crucial to me not breaking down and quitting, ate some food, and just let the experience wash over me. I had done it again. Sure I didn’t get everything I wanted, or even felt I needed, in the game, but it was a product you could play from start to finish. I felt accomplished. After talking with my wife about it, she reminded me that it was just as last-minute and hectic the previous time, so at least I didn’t get worse. The game was done, but now the real challenge began. Trying to get people to care about my game.
Ludum Dare is nice in that you can steer a lot of people to your game just by voting on the entries of others. So I did that. I did that a lot. To date I have rated almost a hundred and fifty entries, which has consumed almost all of my spare time for the past week. The feedback this time around is much more positive than last time. The only glaring issues seem to be the occasional glitch in collision that results from how I handled the crouching, and the lack of a coherent introductory period in the game. Nobody seems to think it’s too hard or not fun, so I’m feeling pretty good this time around. In particular, the audio seems to be getting high praises, and since that was my worst score last time, I can’t wait to see how it turns out this time.
There are a lot of good entries this time around. Some make me feel inadequate and awful, some show a lot of promise but have a few design flaws, and some make me feel like other people don’t take this event quite as seriously as I do. It’s hard to be fair and impartial when judging, and often times the description can alter that in drastic ways. Some people didn’t get started right away, so I can understand why their game feel incomplete even for a dare entry. Should that mean they get a better score for a less complete game? I’m awful at dealing with people, so rating entries is a taxing process for me. I try to leave constructive feedback on every entry I rate, and while it makes me feel more like I’m part of the community, I think my blunt nature has left a sour taste in more than a few mouths. I try to state both the positive and the negative, but when there’s not a lot of positive, it can be hard to seem sincere with coming off as being negative.
Initially I was going to list my favorite entries I had played so far, but since this article is already way longer than I wanted it to be, it will have to wait for another day.