This weekend was Ludum Dare (LD48) #24, with the theme of: "Evolution". I wasn't sure whether or not I would participate in LD48 or not. For those who are not familiar with Ludum Dare: LD is a 48-72 hour game jam that challenges game designers (or wannabes like myself) to make a game in 48 hours (solo competition) or 72 hours (group jam). The catch? The games that are submitted must adhere to a theme voted on by participants and chosen the moment the jam begins. Essentially, everything in a LD game submission must be fabricated by the participant(s). These include graphics, sounds, music, etc...
When the competition started on Friday night, I spent the evening relaxing and brainstorming. I considered making a platformer where choosing different paths unlocks different abilities/weapons for future levels (like Metroid, but without acquiring every ability in a given playthrough; choose one, lose the other). That idea, while good on paper, was impractical for a 48 hour solo jam session. The next idea I came up with was to make a scrolling shooter that featured evolving the main character and the enemies (also too ambitious, and not incredibly original). Finally I decided to evolve the game itself: take a simple game like Keep-Up or Pong, and evolve it into another game. I chose to take a Keep-Up clone and evolve it into a scrolling shooter with a Breakout clone intermediate.
The angle that I approached designing the game was to connect primitive early levels (rough, crappy designs with few mechanics) to progressively complex and vibrant end-game levels (better controls, more game mechanics, and better graphics). Not only would the game evolve, but so would my ideas.
I decided to use my most comfortable game design SDK: GameMaker (the free Version of GM8.1). I spent most of Saturday relearning how to use GM8.1 and building the Keep-Up and Breakout mechanics. I did relearn most of what I had forgotten about GM8.1 from my days making 1945. I had a tough time properly triggering thought bubbles at appropriate times. My Google-Fu did not let me down, and I was able to quickly solve problems other people encountered before - remember kids, if you don't understand something, don't ask your parents, just Google it! (not a real PSA, Google is not a substitute for good or mediocre parenting). Sunday I spent making the scrolling shooter level and wrapping up. In spite of my triggering issues, I was eventually able to make a finished game with a (crappy) title screen, and a (crappy) end screen.
Things I learned from this experience:
1. Never use test number of instances in a step event to create an object, draw a sprite, or set a timer, as it will often repeat these actions infinitely. Instead use another variable as a pretest before the number of instances test that is designed to only run once.
2. I love making pixel art to a fault: too much of my time was spent making complex sprite animations, particularly the Breakout blocks. (Although they do look very shiny and have a decent looking shatter effect.
3. Your game will never feel complete given time constraints- sometimes you just have to pick a cutoff point and start wrapping things up.
Speaking of time constraints... I managed to make my game while still performing a minimal number of required living activities like: grocery shopping, running to work to check on a freezer that was failing, eating, and getting two full nights of sleep. It is quite difficult to make a game at home over a weekend while attempting to watch a toddler, by the way...
Here is a copy of the finished submission. Overall, the game was the manifestation of my original design, but with much less content and polish than I had hoped to include. I feel like if I had more time, that I could make each mechanic more gradually introduced, and the final level more polished.
Completing my first game for LD is a landmark achievement, as I have a truly original creation under my belt now, but I don't feel much closer to becoming a game designer than I was last week. Once I become more comfortable with Unity, I may participate in another LD (most likely as a team member in a Jam) and use Unity to make my next game. Hopefully then I will feel closer to becoming a "real game designer".
I hope you enjoy my simple little game, and have a better understanding of why it appears to be inconsistent from level to level - it's intelligently designed that way.