Skip to main content
icon

Beneath The Sea and Ludum Dare 29 Results.

Beneath The Sea is the game I created to Ludum Dare 29, under the theme “Beneath The Surface“. In this post I will talk a little bit about how was the process to create it, including all the good and the bad things that happened on the way.

icon

The Game

As all Ludum Dare games (in the solo competition), this game was created in 48 hours. Well, actually, it was around 30 for me.

Initially, I was thinking in creating a platform game using physics and tiles. The player would have to run, jump, grab and climb to make his way out from a desolated and unknown cave. I would like to related this “run-away-from-a-dark-cave” game with clinical depression and how hard is to be free from it and how easy it is to fall into this dark cave.

That wasn’t going very well. I’ve implemented the tile system using CreateJS and Tiled and integrate the physics engine. But after 12 hours, I’ve realized that it is pretty hard to create a good platform game. I mean, you have to tweak a lot of variables to make a satisfactory gameplay. To make things worse, my plan also included pixel art, but I also realized that I have no idea how to create pixel art!

So, in half Saturday, I forgot my first idea and had to formulate a plan B. Now, I wanted to create something simple, using only the mouse or a single key button, and I wanted to create something using vector art, because I can do it on Inkscape pretty well.

Last week I was taking a look into the Orisinal games, and I remembered their Silent Water, which is an example of simplicity and which I could based my game.

With these conditions and references, Beneath The Sea came up. I thought in put the player in the charge of a battleship with the task of killing the evil summons of an ancient badass god, holding them as long as he/she can. I know that this isn’t an original idea, but it was what I could do with the 30 remaining hours.

Graphics

I’ve started with the background and the core sprites because I think it is easier to see want you will need in the game – despite the fact, that is so much better to program a game with pretty graphics.

I choose to use only silhouettes to represent the battleship, the bullets and the creeps because it was the easier and faster alternative I could find. Silhouettes also have the advantage to work well with a various graphical styles.

The background was based on classical vector art tutorials, other water games, and sponge bob. If I had more time, I would make the clouds, sun and water animated. I also wanted to put some bubbles and explosion effects, but the time was short.

Programming

Programming Beneath The Sea was pretty easy. I used the CreateJS bundle and some utilities functions (such as scene management, scene transitions, layout management and flexible images) I had here. Notice that, you can only use personal code if you make it public before the beginning of competition.

The code logic is pretty simple: create creeps and make them go toward the surface; create bullets and make them go toward the bottom; check collisions among bullets and creeps; check collisions among the ship and creeps.

Then, after a long night of work, and an exhausting Sunday morning, I had the games mechanics ready to go.

Sounds

Sounds were my biggest problem. I had no previous experience on audio edition or composition and I only know how to use Guitar Pro.

As a priority, I created the main music, which is the most important audio in the game. You can’t put several sound effects without a background music! I’ve based on the Terminator theme, with a lot of bass beats. After trying several instruments, melodies and combinations, my music was complete.

For shoots sounds I’ve used drum beats amplified and equalized on Audacity. To the explosion I’ve recorded the sound me lightening a match, and slowed and equalized it on Audacity. Finally, for the overheat signal I’ve just whistled.

I hate the sound effects I put on Beneath The Sea, I had just a few hours to finish the game and I still needed to adjust the gameplay and the kongregate api.

Gameplay

I’ve tweaked the gameplay as fast I could. I added the overheating system to control the bullet flow and created a mechanism to increase the spawn rate of creeps and weapons relative to the time.

Summary

Based on my experience on this Ludum Dare, I can summarize some important things:

  • Keep It Simple, Stupid! I didn’t followed the KISS principle when I was creating the conception of the game on Friday night. As a result, I’ve lost a lot of precious time.
  • Do what you know. My first plan involved too many technologies, mechanisms and techniques that I am not familiar with. You can’t learn everything in 48 hours.
  • Take a break, periodically. The lack of sleep and fatigue are your enemies. Without sleep, you can’t concentrate very well, so you need to take some breaks periodically to rest a bit.
  • Make TODO lists. Without concentration, you lose efficiency and time, so, make TODO lists to keep tracking what you are doing. Before starting the development of the game, create the TODO of the features. Before starting each feature, make a TODO of the tasks need to complete the feature. Before each task, make a TODO of simple changes and additions to the game.
  • Prioritize the features of your game. You probably won’t finish your game, so, prioritize the core features. If you finish the important parts and got some time, then you can do the fluffy things.

Results

Check it out the screenshots of the game:

You can play Beneath The Sea on kongregate

You can see the entry on Ludum Dare

Sublime Text 3 - Screenshot

My Toolbelt for Game Development

In my opinion, knowing the tools you work and knowing how to set them up to operate together is an important step to keep yourself productive, efficient and mentally healthy =). In this post I will talk a little bit about the tools I am currently using to develop my games.

I’m sharing the essential items of toolbelt and I hope some of the programs I cite here can be useful for you. Notice that, all tools of this list can be used in any OS, such as Windows, Linux and Mac.

Programming Tools

As a programmer, I think the core of my work tools is Sublime Text 3, a powerful, beautiful, fast, elegant, awesome, demigod editor that I use to write code, texts, notes, and anything else. Sublime has several built-in addictive features that make you love the editor, such as the multi selection, the distraction free mode, the command palette and the plugin system. Sublime Text 3 costs USD $70, however, it is free for evaluation (you will see a notification to buy it, occasionally, but it is far from being a problem).

With Package Control, you can easily add new plugins to Sublime, just press ctrl+shift+p to open the command palette, chose the install package option and select the plugin you want to install. My must-have plugins:

  • Dictionaries: it adds a lot of dictionaries (press F6 to use the spell check). This package is pretty useful for people who write common texts, documentation, code comments, in English or other 28 languages. In fact, I am writing this post in Sublime right now and using this plugin.
  • Nettuts + Fetch: an awesome plugin that let you add remote files or complete boilerplates to your project folder. Just press ctrl+shift+p to open the command palette, type “fetch” and select the target file or package you want and they will be automatically added to your project. It is highly recommended, specially if you have a common structure that you use in several projects. It is also useful to add common libraries automatically, such as jQuery or normalize.css.
  • Sidebar Enhancements: adds a lot of options to the sidebar menu (when you press the right mouse button on sidebar files or folder). With this plugin you can delete, open, run and copy files and folder, and much more. It is a must have that can be useful for all cases.

I use the default theme, Monokai, which can be seen at the image below, but you can add more themes with package control. I made just a few changes on the default configuration: I have added two rulers lines to the columns 0 and 80, and set the translation of tabs to spaces to true.

Sublime Text 3 - Screenshot

I am a Python guy, and I use this language to help me in practically any project or task that I do, such as to create a simple web server to run my CreateJS projects. I am using Python 2.7 provided by Anaconda. Anaconda is a super package for scientific computing which includes a python distribution within a lot of useful libraries, such as Numpy, Scipy, Matplotlib, and Flask.

Flask is a Python micro-framework for web development that I use to create simple web servers when I need one. This is the case for several HTML5 game engines, such as the CreateJS. For example, you can create a basic web server with this:

Image Editing

For image editing I basically use Inkscape and Gimp, two powerful open source programs that some people may hate, but I love them.

Inkscape is a vector graphics editor similar to Corel Draw or Illustrator, and uses the Scalable Vector Graphics (SVG) format natively. Inkscape has a lot of features and an intuitive interface, great for noobies and pros.

GIMP is an image editor that replaces the Photoshop. With GIMP you can use plugins, brushes, patterns and other components that were originally destined to Photoshop, without spend any money. It is constantly updated by community and also has a lot of features and an intuitive interface.

Audio Editing

At this moment, I don’t have any tool for create musics or sound effects, but for general audio edition I use Audacity. I can’t really say anything about Audacity because I rarely use it and when I do, it is just for simple tasks.

Other Tools

Git is my choice of version control system. It is easy to use and hard to messing things up. I use Github to host my open projects and Bitbucket for my private ones.

Dropbox is essential, sometimes I use three different computers and I don’t want to sync my code with Git before I finish some feature of fix some bug. All my projects are in the dropbox folder, thus, I can save a file in my Desktop and open it in my Notebook without any effort from my part.

Finally, I use Firefox and Chrome to test my web games. I don’t really care about IE.