"Splodey Boats" was my entry into Ludum Dare #29, a 48 hour game creation contest.
Concept and Creation
This time around the theme was "Beneath the Surface". Splodey Boats is a game about submarines. Let's be honest, it's not the most original take on the theme. Having said that, I still learnt some good lessons this time around.
As soon as the theme was announced, I started scribbling notes and ideas to get my creative juices flowing. Past experience has taught me to go for quantity at the start, so by the end I probably had about 3 or 4 pages of (pretty bad) ideas.
Once I was satisfied with what I had, I picked my favourite 6 ideas and drew concept screens of each one. They were nothing complex, but I've found just closing my eyes and pretending to play the game in my head is usually enough to get me moving.
There were a couple of ideas I really liked, but I tried to be realistic in what can be achieved in such a short time span. By about 10:30 I'd settled on the idea that would become "Splodey Boats", so I went to bed.
As soon as I got up the next day, I whipped up a concept screen in paint. Yes, that paint. It all seemed achievable, so I planned out the features I really wanted: the depth charges, sinking submarines and the sonar system.
It only took a few hours to get the core of the game working - a moving ship, some submarines and the double-tap depth charge. Granted, it was all very rough, but having it playable so quickly made a huge difference. Not only was it motivating, but it took off a lot of the pressure so I had a bit more freedom over what I added.
Some features, like the explosions and bubbles, were added quite early. Strangely enough, the one feature I absolutely wanted (the sonar) didn't get added until the last few hours. I had originally planned the entire game to take place in the dark, but being able to play the game without the sonar feature made me realise it was a bad idea.
|Lines of Code||2,462|
I didn't track time as accurately as I normally do, mainly due to being on such a tight deadline, but 18 hours of 48 is a pretty good workload. There's a couple of big, ugly pieces of copy/pasted code, but it all compiles so I can't be too mad.
What Went Right
It got finished
I was a little hesitant to enter this time around, especially after my failure to finish LD #27. Needless to say, I'm very happy I managed to complete something time around.
There's a full loop of gameplay, a title screen, game over screen and even an online high score table. Code-wise it's a mess, but it works.
Matched my original plan
I deliberately kept my original plan as simple as possible, and I think it paid off. Normally I get a bit carried away and end up only finishing about 10% of what I want. Taking the simple approach allowed me to finish the core game relatively early, so the end result has a few extra features I hadn't intended on doing.
The graphics started with silhouettes. Then I added some bubbles. Then the explosions. Then more bubbles and a nicer sinking animation. This went on through the whole game. I would start with the feature, get it working, and then polish it until I was happy.
It wasn't just graphical changes either. Originally the ship would sink as soon as a missile or bomb hit it. I thought it would be more fun to have the ship start smoking when damaged, so I added health and smoke/fire particles to indicate the current status. Even though it was initially a graphical idea, I think it makes the later levels more enjoyable.
Normally I just splat a whole bunch of ideas down and pick whatever takes my fancy. This time around I created a giant "todo" list, and then organized the tasks into milestones. Each milestone only had a few tasks in it, but I forced myself to finish each task before moving to the next one.
Ticking each milestone made a huge difference to my motivation levels, and was also a good way to prevent me from getting sidetracked. Here's the milestone for the "mine dropper" feature (complete with time tracking data):
*** DONE Milestone 9 [6/6] CLOCK: [2014-04-27 Sun 09:19]--[2014-04-27 Sun 10:01] => 0:42 - [X] Random plane that drops mines - [X] Mines float (with a little y-axis wobble I guess) - [X] Mines explode after a certain time - [X] Mines should flash as they get closer to exploding - [X] Exploding mine should sink ship - [X] Hitting a mine should sink the ship
Nothing fancy, but it definitely helped.
What Went Wrong
My idea wasn't really that exciting, which stunted my enthusiasm a little. By Saturday night I had most of what I wanted finished, and didn't really feel like getting up early on Sunday to work on it. The feeling subsided once I got started, but normally by Sunday I'm panicking about how to get everything finished.
The first 8 stages are pretty much the same - destroy some submarines and don't run out of time. It's only once mission 3 rolls around that more interesting elements (enemy subs firing back, mines, sonar etc) get added. I wanted to make the learning process gradual, but Ludum Dare games are all about grabbing the player's attention as soon as possible. I failed pretty badly there.
No community involvement
I made an announcement post before the compo started, but that's about it. Must try harder next time.
Not tracking milestone times
I tracked time on each task, and it wasn't until Sunday morning that I tracked individual milestones. Not a huge mistake, but it would have been nice to graph each milestone by time taken/code written etc.
Get more involved
I think I said this last time, but it's worth repeating. A lot of what makes Ludum Dare so special is the community around it. Sharing ideas, early sketches and progress all add to the experience, and I really missed out (again) this time.
Keep it simple…
Keeping the graphics, sound and gameplay simple helped it all came together much more quickly than usual. There was a slight panic at the end to get things finished, but for the majority of the time development was pretty smooth.
…but not too simple
Everybody is different, but I'm more motivated to work on something when it excites me. Splodey Boats is not a very exciting game.
Keep your milestones small
Keeping each milestone small kept me focused, and stopped me from getting bored or frustrated. If there was a task I wasn't enjoying, I would put a fun task in the next milestone. Knowing I had something enjoyable to do next pushed me through the parts I didn't like.
Learn your tools
This is my 7th Flixel game, and I think it's starting to show. There were still plenty of things I didn't know how to do, but I was able to figure them out due to my previous experience.
I feel a bit silly for not figuring this out earlier, but having any experience really helps. Even the things I learnt from Haywire and Zap made a big difference to how quickly I could get things done.
Lesson learnt: experiment more. Much more.