WalterPlinge / sunken

2D game built with SFML

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Game Design Document

Andrew Bruce and Scott Davidson

Document History

Version Author Date Comments
1 Scott Davidson and Andrew Bruce 28/02/2019 Completed first version of GDD

Overview and Vision Statement

Sunken is 2D, side scrolling, submarine war game which makes heavy use of audio visulisation. This will mean that the player can only see what their sonar can detect; they will need to use this carefully to navigate dangerous terrain and avoid or defeat enemies. The player will eventually reach and destroy an objective. Enemies can come in the form of submarines which will fire torpedos or ships which will drop depth charges. The player will need to conserve resources throughout the game: replenishing ammo using pickups throughout the level and trying to beat the level as fast as possible for a higher score. They will also need to account for their health as the lower it gets the more difficult it will be to stay buoyant.

Inspirations

Sunken is inspired by a World War 2 based 3D submarine game called Cold Waters, which makes use of audio visulisation making sound a core feature of the game. It creates a suspenseful atmosphere that does well to go along with the topic of the game.

Player Experience Goals

  • Players should feel challenged as they will need to navigate the level with limited vision, making decisions about whether to avoid or engage enemies, all while being timed
  • They should also feel suspense when playing the game; the audio visual element will hide the threats. The in-game music should amplify this emotion
  • The player will feel a sense of accomplishment upon successfully navigating the level, defeating an enemy, and completing the objective

Audience and Platform

  • Sunken's target demographic are people who like tense strategy action games, likely ages 10+. The potential size of this audience is large as the game is relatively simple in terms of scope, making it more accessible
  • The target platform will be PCs running Windows or Linux
  • Any modern PC will be able to run the game as it is relatively small. They will require either a mouse and keyboard or a controller

Legal Analysis

  • Possible licence issues with the game music or other sounds
  • Both SFML and Box2D follow the same terms of use, as below -
    • "The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required."
    • "Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software."
    • "This notice may not be removed or altered from any source distribution."
  • Possible IP issues from use of game sprites

Gameplay

Overview

  • Navigate levels using sound (visualised) to get to and destroy a final objective
  • Engage in combat with enemies or use stealth to avoid combat
  • Manage resources such as ammo for combat, health for survivability and time for score \

Player Mode

Sunken is a single player game, battling against AI enemies.

Screen Mockup

mockup

Formal Elements

Players

There will be one player, playing as the submarine. They will play against enemy AI submarines and ships.

Objectives

  • Destroy the objective at the end of the level
  • Defeat enemy ships and submarines
  • Conserve resources and use as little ammunition as possible
  • Complete the level in the shortest amount of time

Procedures

Rules

  • if player/enemy health is 0 player/enemy dies
  • if player touches ammo box ammo increases
  • if player/enemy touches torpedo/depth charge, player/enemy health decreases
  • if player/enemy touches wall and player/enemy speed is high, player/enemy health decreases
  • if player/enemy health less than x and player/enemy depth less than y, player/enemy sinks
  • if player detects enemy sonar, show direction
    • if torpedo sonar, show colour based on torpedo stage (seeking, locking, terminating)
  • if enemy detects player sonar, change state to attack
  • if enemy detects torpedo, snapshot and change state to evade
  • if enemy cannot detect player anymore, change state to alert
    • if enemy still cannot detect player, return state to patrol
  • enemy base destroyed, player wins
  • enemy base detects player, change state to attack
  • enemy base detects torpedo, snapshot and change state to alert
  • if ship detects player, move and drop depth charge

Resources

  • Health
  • Ammunition
  • Time
  • Noise
  • Depth

Conflict

  • Obstacles
    • Terrain
    • Depth to avoid ships
  • Opponents
    • Enemy ships
    • Enemy submarines
    • Enemy base
  • Dilemmas
    • Choosing to fight or avoid depending on resources (ammo, health, time)

Boundaries

There will be physical 2D world boundaries to prevent the player from going above the water or outside the level.

Outcome

If the player health reaches zero the player will lose and restart the level. If the enemy base health reaches 0 the player will win and complete the level. Once the player completes all story levels they will have completed the game. Custom levels are independent of game progression, however, they should follow the same outcomes.

Levels

The default levels will be included in the code so they cannot be edited by users. There will also be a levels folder for users to create their own levels and share them with friends.

The levels will be tile based and side scrolling with varying degrees of difficulty.

Characters

  • The main character will be the submarine the player is in command of
  • The commanding officer who relays the objective at the start of the default levels
  • The enemy submarines and ships who attempt to destroy the player
  • The base, which will attempt to defend itself from the players attack

Story

The game will have a brief description of the objective at the beginning of each level, relayed by the submarines commanding officer.

Game World

  • Enemy infested waters
  • Cave systems
  • Key locations -
    • Enemy bases
    • Ammo pickups
    • Enemy patrol points
  • Underwater physics

Required Media List

Name Description

User Interface Assets

Super Submarine Font for score, time, depth, noise, and menu
Button styles Button images

Environment Assets

Tile sprites Different sprites for different tile types
Ammo pickup sprite A sprite depicting an ammo pickup
Background image An image to depict that the character is in the water

Character-based Assets

Submarine sprites Depicting submarines
Ship sprites Depicting ships
Enemy base sprite Depicting the enemy base

Music Assets

Background music Suspenseful background music

Sound Effect Assets

Sonar sound effect When the player uses/detects sonar
Torpedo sound effect When a player/enemy fires a torpedo
Explosion sound effect When the player, an enemy, or base explodes
Crashing sound effect When the a submarine crashes into the terrain
Ammo pickup sound effect When a player picks up ammo
Cavitation sound effect When a player goes too fast for their depth

Technical Specification

Development Platform and Tools

  • Platform:
    • Windows
    • Linux
  • IDE:
    • Visual Studio 2017
    • Visual Studio code
  • Compiler:
    • MSVC
    • G++
  • Build tools:
    • CMake
  • Libraries:
    • SFML
    • Box2D
  • Language:
    • C++
  • Version Control tools:
    • Git
    • Github Desktop
    • Sourcetree
    • Github

Delivery Mechanism

The game will be distributed via itch.io and GOG.com as they a free to publish and DRM free for users.

User Interface Technical Requirements

A minimum resolution of 800 x 600 will be required.

Controls Technical Specification

The controls will require a keyboard and mouse or controller.

Network Requirements

Sunken is a single player game that will not require a network connection.

Menu Flowchart

flow chart

About

2D game built with SFML

License:GNU General Public License v3.0


Languages

Language:C++ 95.8%Language:CMake 4.2%