Game Design - shawyer/battleships GitHub Wiki

Team Members:

Kimhong Lay - 101953590 Indra Kusuma -101820843 Daniel Shawyer - 696656X

Presenting Battleship. The riveting strategy game for all ages!

Overview of the gameplay

Target platform is .NET and C#

Battleship is a two players strategy guessing game. It is played on two grids where each player ships are marked. Neither player can see the locations of the other's ship. Players take it in turns to call out a shot on the other player's board, and the location is marked as a hit or miss. The goal is to sink all the opposing player ships before they sink yours.

The visual style is minimalist and cubic. The audio style is unknown.

Game screens and flow

Game screens

Intro screen: a short video clip of game introduction splashing on the screen

Main screen: will show a few selections (New game, Continue, History, Setting...)

Player's selection: this screen will prompt player to select between "Single-player" or "2 players"

Score history: user can check the point history of the previous gameplays

Setting: users can change some settings such as graphics option, volume control...

Exit: allow user to quit the game application

Exit confirmation: prompt the user to confirm exiting the application

The flow of the game

User will start with the main screen, then the user can select to start a new game, continue the previous played-game or change some settings for the game.

User Interface

Player will start the game with the short clip splash on the screen which then will lead the player to the main screen. On the main screen, there will be a few selections for player namely: New Game, Continue, Player History, Setting and Exit.

When the player selects New Game, the screen will let the player choose playing options: Single Player or 2 Players. Once the player chooses the playing option, it will lead the player to the in-game screen. On the in-game screen, the player will see a 2-grid with letters as the horizontal axis and numbers as the vertical axis. There is also a button on the top right corner for the player to pause the game or exit to the main screen.

Back to the main screen, the player can change some setting of the games such as the graphic, volume or speed of the game. Moreover, the player can alternatively click on Exit which will prompt the user with a confirmation screen.

Gameplay

The game is played with four grids and the typical standard for each grids are 10x10. The grids are identified by using letters as the horizontal axis and numbers as the vertical axis. There are 5 types of ships in the game which are Carrier (5 square), Battleship (4 square), Cruiser (3 square), Submarine (3 square), Destroyer (2 square). Each of the ship will occupies a number of consecutive squares on the grid depending on the type of the ship. It can be placed horizontally or vertically. Before the game really starts, each player need to secretly arranges their ships on their side of the grid and the enemy on theirs. The game are usually played by two players, but it also can be played with one player and it will be against an AI. The object of the game is to guess the location of the ships that each player hides on the grid by calling out their horizontal and vertical coordinate that they wish to shot. Player take turns calling out the coordinates on the other player's grid in an attempt to identify a square that contains a part of the ship. Each player will have two grids. One of the grids is used by the player to hide the location of their ships, while the other grid is used to record the shots fired toward the opponent and to document whether those shots were hits or misses. The game will end once the enemy's ships are all destroyed.

Assets

All the internal or external files that is needed for the program will be stored in resources file.

  • Battleships (The cover of the game)

  • Ships (All kinds of ships that is available in the game as well as the arena 10x10 grid)

  • Water splash (The sound effect when a player missed a shot)

  • Boom (The sound effect when one of the ships being hit)

  • Main music (Main menu music)

  • Win (The sound effect when one of the player is winning)

  • Fire (The sound effect when a ship is firing)

  • Arena (Another template for arena grid 10x10)

Coding Standards

  • USE "PascalCasing" for class names and methods name.
public class ClientActivity
{
    public void ClearStatistics()
    {
        //...
    }
    public void CalculateStatistics()
    {
        //...
    }
}
  • USE "camelCasing" for method arguments and local variables.
public class UserLog
{
    public void Add(LogEvent logEvent)
    {
        int itemCount = logEvent.Items.Count;
        // ...
    }
}
  • USE "PascalCasing" for abbreviations 3 characters or more (2 chars are bot uppercase).
HtmlHelper htmlHelper;
FtpTransfer ftpTransfer;
UIControl uiControl;
  • USE "Predefined type names" instead of system type names like Int16, Single, UInt64, etc.
// Correct
string firstName;
int lastIndex;
bool isSaved;
 
// Avoid
String firstName;
Int32 lastIndex;
Boolean isSaved;
  • DO NOT USE "Hungarian" notation or any other type identification in identifiers.
// Correct
int counter;
string name;
 
// Avoid
int iCounter;
string strName;
  • DO NOT USE "Screaming Caps" for constants or read-only variables.
// Correct
public static const string ShippingType = "DropShip";
 
// Avoid
public static const string SHIPPINGTYPE = "DropShip";
  • DO NOT USE "Underscores" in identifiers. (Exception: you can prefix private static variables with an underscore).
// Correct
public DateTime clientAppointment;
public TimeSpan timeLeft;
 
// Avoid
public DateTime client_Appointment;
public TimeSpan time_Left;
 
// Exception
private DateTime _registrationDate;
  • AVOID USING "Abbreviations". (Exceptions: abbreviations commonly used as names, such as Id, Xml, Ftp, Uri)
// Correct
UserGroup userGroup;
Assignment employeeAssignment;
 
// Avoid
UserGroup usrGrp;
Assignment empAssignment;
 
// Exceptions
CustomerId customerId;
XmlDocument xmlDocument;
FtpHelper ftpHelper;
UriPart uriPart;