Sub Game

Sub Game, a game for the SDL weekly assignment, featuring some creative-commons-licensed sounds from freesound.org ( Link ).

Goal

I wanted to create a game that simulates the blindness and reliance on sonar that a submarine captain might feel.

Method

I first decided that there would be obstacles all over that the player needed to avoid, but none would be visible. In order to see them, the player would need to click, sending out a sonar pulse. An echo would be heard when this pulse found an obstacle. Originally, I wanted to have an expanding wave of sound which could be sent in any direction. However, after some thought, I realized that this would create too much challenge for the player and not really add to the game play. Instead, I decided to have the pings go in one of the 4 cardinal directions. I also originally wanted the sub to move freely over the grid system at any angle and at a constant speed. With thought, I realized that with limited sonar ping direction, this would be difficult. Also, as you are limited for your rate of pinging, due to needing to hear the response, this would add a serious speed issue, and the puzzle of finding your way through the maze blind is hard enough. Thus, I simplified movement to the 4 cardinal directions also, and made the speed limit how fast you can move, not how slowly you move. The sonar pulse is drawn on the map to keep the player from having to count in their heads to find the distance, and also so the player knows how fast the pulse moves.

Novelty

The idea of a game where you use both sound and a mental map to move is not one I have heard of before. The sonar pulses are shown on screen, as is the ship, keeping the player's eyes from getting bored. Also, for many people having the ship and grid drawn on the screen may help them create a mental map. However, no obstacles are ever shown there, forcing the player to rely on hearing.

Results

I feel like this game came out amazingly. You really need to step back and realize that there is more than you can see, and really need to slow down and go through ping by ping to reach the goal. Having an explosion sound when the player dies was something I came up with mostly through programming, and I feel adds a huge amount to the game. This really makes the player realize they failed. I did, however, notice that rand() really does not work, even when giving it a different seed every time. I do not know why this is, and decided that the one map it made was random enough, even if it didn't change each time.