Another Ludum Dare has come and gone, and I finally got all the free time I needed to participate. For those who have been living under a rock, Ludum Dare is the largest and longest running game jam in the world. What's a game jam, you ask? A game jam is when you have a limited amount of time to create a game (in this case, 48 hours), and you are often given a theme that you have to work with. This Ludum Dare was actually an interesting one, because for the first time ever, there were two themes. This was a result of a tie in the theme voting. Rad!
Anyway, I loved both the themes: "Two button controls", and "Growing". I like simple controls, and I like growing things. So, straight off the bat, I was in a pretty good place. Once the theme was announced, I grabbed my notebook and started to brainstorm. This probably took me a little bit longer than it should have, but after about two hours I had a pretty good idea of what I should be going for. My initial thought was some sort of farming simulator, but then I realized that something like that was probably going to be common this weekend, and decided I ought to think outside the box a little. I liked the idea of only using the two mouse buttons, and I had been kicking around an idea for a little building game for a while now. After a bit of planning, I decided to go with what is now "Celebration of Jand", a game where you have to gather resources and sacrifice them to your (unnamed) god, as part of the festivities of Jand, a holiday celebrated on the eve of the summer solstice.
"Brothers! Jand is once again upon us, and we haven't even begun the sacrificial bonfire! If we don't finish it in time... I shudder to think of what horrors will befall our land..."
- Aeret Drazius, High Priest of Aramoor
I used C++ and SDL2 to program the game, Pyxel Edit for the graphics, and BFXR for the sound effects. I'm new to Pyxel Edit, and as somebody with very limited art skills, it is a pretty great piece of software for a very reasonable price ($9 at the time that I wrote this). I don't have any regrets with my tool choices, although I lost a little bit of time at the start because I was trying to figure out a nice way of loading and storing all the game assets with SDL.
The biggest problem that I came across during development was the AI. I didn't exactly anticipate that such simple AI was going to be such a large problem. I started out with a basic state machine, but before long it became a massive garbled mess, with sub states and lots of unnecessary nested if statements. I think I'm going to have to read into AI at some point, as a more solid understanding could have allowed me to make a more complete game. I barely got the AI to do what I needed them to, so I decided it was best to not add any more functionality to them. That decision ultimately resulted in a pretty tiny and incomplete game.
Sadly, I didn't really get to implement any sort of endgame content. Once you have a few hundred peons, and reach the "goal" of 2000 resources, nothing else really happens. Next time, however, I'll be sure to plan that out a little bit more. Although, I did get to add one fun feature, and that was the sacrificing of your peons. If you select some peons and right click on the resource pile, they will be sacrificed (along with 100 resources per peon), and you will get 2 peons in return. That is the growth mechanic in a nutshell.
What Went Right
- Story. I like the little backstory that I came up with for this game. Maybe I'll expand upon it in the future.
- Art. To everybody else, it may not look like much, but I am proud of how the game looks, considering that I can't even draw a nice looking stick figure most of the time.
- Timing. I managed to keep myself from oversleeping Saturday and Sunday morning, and that allowed me to get even more work done on the game.
- Motivation. I was having alot of fun working on this, and that kept me really motivated to make it as awesome as my skills (and time frame) would allow.
- The peon death sound effect. It's the first sound effect I have recorded myself. That was fun.
What Went Wrong
- AI. As mentioned above, the artificial intelligence in the game isn't anything to write home about.
- Music. I didn't get to work on any music for the game, so it's a bit rough on the ears at the moment.
- Endgame content. I didn't get to make anything cool happen towards the end of the game, and I didn't get to really implement much of a goal. That's disappointing.
- Code cleanliness. At some point, I ditched all coding conventions in an attempt to get some work done. I'm afraid to go back and refactor the games code, because of the horrors that may await me. Although, for a 48 hour contest, this isn't exactly a surprise.
- Food selection. I decided that it would be a good idea to eat an entire (king sized) bag of skittles in one sitting, and then go to sleep. My stomach was angry that night. Next time, I should just eat a head of lettuce.
The Final Results
Overall, regardless of the games small size and scope, I am proud of it, and I'm sure that if I apply the things that I've learned this weekend, I can do better next time.