Вы находитесь на странице: 1из 14

Games Design Document

Amos Room (B00254109)

Contents
Game Design
Summary
Gameplay
Expected Experience
Concept Creation
Concept Research
Game Mechanics
Omitted Mechanics

Page 3
Page 3
Page 3
Page 4
Page 4
Page 5
Page 5

Presentation
Graphics
Audio
Storyline
Characters
Weapons
Level Design
User Interface
Control Scheme

Page 6
Page 6
Page 7
Page 8
Page 9
Page 9
Page 10
Page 10

Development
Hardware and Software
Data Flow
Functions
Game Testing
Code References

Page 11
Page 11
Page 12
Page 13
Page 14

Game Design
Summary
Tentakills is a fixed 2D shooter on a vertical plane, which takes place in an underwater setting. The
game is hosted on the development website: http://commandofish.weebly.com/. The game features
fast-paced gameplay with the player fighting against large amounts of different enemies, each with
their own ways of fighting the player, using a variety of different and varied weapons
simultaneously. This game was inspired by similar titles such as Serious Sam: The Random
Encounter, Serious Sam: Double , and The Last Stand.
Gameplay
Given the near-absence of a storyline to this game, gameplay is the more important aspect of this
project. The game features a variety of different weapons all of which the player can use
simultaneously, up to 4 of any weapon at any time, with each weapon having a unique way of firing
against enemies. The loadout that the player can use in the game is set by the player at the
beginning of the game before any actual gameplay starts and can be changed in-between levels
before moving onto the next level.
The game features shooting at a fixed 2D vertical plane, with the player naturally gravitating
towards the ground to simulate weight on the player in an underwater environment. The player
fights against a large amounts of different enemies, each featuring their own way of engaging the
player.
The game takes place over a period of five different levels, where the player has to eliminate every
enemy they encounter and not let any hit the player or get past them. Each level has it's own time
limit for the player to survive in and adds a new enemy into the game.
Expected Experience
Users who play the game Tentakills should expect to play a fast-paced vertical shooter.
When users initially play the game I hope that they will feel intrigued by the premise of the game
and that they will be curious to see how it's presented through gameplay. As they play through the
game, they should enjoy the quick nature of the game and enjoy overcoming the odds that they are
presented against. The addition of customizable loadouts should give users a more personal
connection with how they play the game as they are able to create their own weapon loadouts and
play the game in a way that suits their play style.
As they progress through the game, the player should feel challenged by the increased difficulty of
later stages but shouldn't feel too overwhelmed by the difficulty that they lose motivation to
continue playing it. They should feel that the challenge presented to them is fair and justified and
not artificially created and impossible.

Concept Creation
The concept behind my project, Tentakills, came up initially through creating the host website
http://commandofish.weebly.com/. Having decided on the name for the website, I thought that my
project should be a game given a nautical theme to help coincide with the website's name. The
theme was also chosen as I feel that there aren't many games out there that take place underwater,
and by doing so it would help the game stand out as a unique experience.
After looking through the tutorials on the http://phaser.io/ website, I decided that my project would
be a fixed shooter. This decision was made because I felt this was a genre that was both easy to
work with and expand into trying out new ideas as well as be accessible to a wide audience as the
genre has seen huge success with many audiences of people throughout it's history.
To help make the game stand out, I decided on a multiple weapon mechanic which would allow for
multiple kinds of different weapons to be fired simultaneously against enemies instead of one. After
deciding on this mechanic, I then chose to make the player character an Octopus who is fighting
against other sea creatures using conventional weapons. This decision was made to, again, help
make the game be a more unique experience as well as providing a logical explanation as to why
the player is capable of firing multiple weapons at the same time since octopi have multiple
tentacles. The name Tentakills was then chosen as a pun on the word tentacles, to help refer to the
game's setting and characters as well as the genre of the game.
The project has taken some inspiration from games such as Serious Sam: Double D and The Last
Stand. These influences can be seen in the gameplay with both the fixed vertical scrolling and the
mechanic in using multiple weapons simultaneously.
Concept Research
For this project I intend to create a fixed shooter called Tentakills to be released on web browsers
and hosted on the development website http://commandofish.weebly.com/. The game will be given
a nautical theme and will be played from a 2D perspective and will be developed using the Phaser
engine. The project idea was inspired by other games such as Serious Sam: Double D, Serious Sam:
The Random Encounter, and The Last Stand.
This game genre is very commonplace in the games industry and is one of the oldest with the most
famous early example being Space Invaders released in 1978. The genre has seen success with wide
range of audiences due to the simple arcade-style 'pick up and play' nature of the game. This allows
people to enjoy gameplay with very little to no story elements involved. The gameplay is often
quite fast-paced, encouraging players to keep themselves moving and firing their weapons at the
same time to eliminate their targets before they reach the player. This also makes the game quite
difficult at times as all enemy targets need to be dealt with in a short span of time, which helps add
to the genre's appeal to the more 'hardcore' gaming audience.
However, that's not to say that developing a game in this genre is not without it's disadvantages. The
difficulty that can come with the later stages of the game can also deter the casual audience who
aren't looking to play something too challenging. The overall simplicity and gameplay-focused
nature of the game may deter people who enjoy more complex games with much more gripping and
interesting storylines.
Building a game like this, while relatively simple, does come with some challenges. You need to
create a game that is both difficult enough to provide a decent challenge to some, while not
becoming overwhelming others. The overall simplicity of the gameplay also needs to exhibit some
kind of unique feature to help make it stand out from the competition and to help make audiences
more interested in the project and thus more likely to play it.

Game Mechanics
Below you can see a list of different game mechanics that have been put into the final build of the
project:
Varied Weapon Types
The game features five different weapon types, each with a unique sound-effect
and way of firing against the enemy. This helps make each weapon stand out from
eachother and allows for a variety of different weapon combinations that the player
can use.
Varied Enemy Types
The game features five different enemies, each featuring a different way of engaging
the player. This makes each enemy an individual threat against the player and
encourages the player to prioritize certain enemies over others before handling the
rest.
Customizable Loadouts
The player is free to choose any combination of different weapons throughout the
game. This encourages players to test out different weapons to create their own
individual loadout, deciding how they want to complete the game.
Timers
The game uses a timer to decide how long each level is meant to last, which then
switches a 'Level Complete' screen when the timer runs out. This timer increases for
each level as you progress through the game, which helps make the game more
challenging.
Omitted Mechanics
Below you can see a list of different game mechanics that were intended to be put into project, but
for reasons explained were omitted from the final build:
Weapon Weight
This was a mechanic which would have had weapons have a certain weight to them,
depending on which weapon was selected. This would increase the speed that the
player gravitates towards the ground and would make it more difficult for them to
move upwards. This feature was omitted because I felt this would make the game
more unnecessarily difficult, and may discourage players from using certain
weapons.
Multiple Loadouts
This was a mechanic which would have players choose from two different loadouts
they could use, which they could then switch between on the fly in the middle of
gameplay. This feature was omitted as I felt this would make the game too easy as
players could be equipped for multiple different scenarios at any one time. Instead, I
allowed for loadouts to be switched in-between levels.

Presentation
Graphics
All graphics used in the project such as sprites, backgrounds and animations are made using the
online graphics tool, Piskel (http://www.piskelapp.com/). The game level is created using Tiled
(http://www.mapeditor.org/) with the tilesets for the game being made using Piskel. This software
was used to it being freely available, and thus cost-effective, and due to the software being simple
and easy to use. All graphics used in the game were saved using a .PNG format.
Audio
In-game audio was taken from royalty-free sources. Sound effects were taken from
http://freesound.org/. The sound effects are used to appropriately match the weapons that are being
fired and to alert the player when they lose a life.
The musical score was taken from http://incompetech.com/. During the game, the following music
tracks are used:
Phantom From Space Kevin MacLeod
http://incompetech.com/music/royalty-free/index.html?isrc=USUAN1500038
Round Drums Kevin MacLeod
http://incompetech.com/music/royalty-free/index.html?isrc=USUAN1100561
These tracks were selected as I feel they help convey the right tone for the game, providing a
military sounding drum-beat as the player gears up for battle and providing eerie, foreboding music
as the player enters combat.
All sounds used in the game were converted into an .OGG format using Audacity
(http://audacityteam.org/), to allow for better sound compatibility with different web browsers.

Storyline
The game does have a storyline present, however it is not present in the game itself and is instead
provided through supplementary material featured on the development website, below where the
game is hosted. This decision was made so as to not interfere on the gameplay itself and to better
emulate the classic 'pick up and play' style featured in older games of this genre
Storyline Synopsis
Centuries of human conflict, sunken ships and lost weapons has changed the way sea
creatures hunt. Having reverse-engineered the weapons found on the seabed to suit their
own needs, the oceans themselves soon became a warzone of their own.
In the neverending battle for supremacy over the oceans, there are few creatures more adept
than the octopus. With their natural camouflaging ability and their efficiency in using ranged
weaponry, octopi are often considered the ultimate soldiers of the deep. Relishing in warfare,
rather than forming their own army to establish dominance, the octopi instead chose a
nomadic life as mercenary fighters fighting for any group with the means to pay them
whether it be in food or resources.
Despite their legendary status as a species, there is one mollusk who is known as a legend
among the legends known on the battlefield as Eight Guns. This warrior has trained
himself to be the very best fighter he could be, strengthening every part of his body so that
each one of his tentacles could independently control and use weapons in combat, turning
himself into a one-mollusk army.
It is currently breeding season for the octopus, a time where they are at their most
vulnerable, with many soldiers unable to fight. It is during this time that a rival mercenary
group composed of some of the deadliest creatures of the deep has come to eliminate their
competition as well as capture their eggs to assimilate into their forces. As the octopi flee to
protect their young falling into enemy hands, all that's left is one octopus to cover their exit.
The legendary Eight Guns himself!
Having used his skills and weapons to storm battlefields and end conflicts single handed,
now it is time to use those same abilities to defend his people! With the enemies drawing c
loser, Eight Guns arms himself and prepares for the long fight ahead.

Characters
Below you can see described a list of characters and enemies that are featured in the game and what
role they play in gameplay.
Eight-Guns
Eight-Guns is an Octopus and serves as the player character
in the game. Using his multiple tentacles, he fires four different
weapons simultaneously at his enemies.

Jellyfish
Jellyfish are the first enemy encountered in the game. They
move slowly and have no projectiles, however they are small
which makes them more difficult to hit

Seal
Seals are the game's second enemy. They move faster than
Jellyfish, and fire projectiles directly ahead of them.

Dolphin
Dolphins are the third enemy in the game. They move faster
than Jellyfish but appear less frequently. They fire bullets
directly at the player's current location

Shark
Sharks are the fourth enemy in the game and move quickly
towards the player. The player has to act quickly to dispatch
them otherwise, they'll lose a life.

Whale
The whale is the fifth and final enemy of the game and serves
as the game's final boss. It moves slowly and takes a lot of
hits before it goes down. If ignored, it will kill the
player instantly. When the whale is defeated, the player will
win the game.

Weapons
Below you can see descriptions of all the different weapons that feature in the game:
Pistol
The pistol fires bullets directly forward from the player at a fast pace
Shotgun
The shotgun fires bullets infront of the player in a 4-way spread.
To compensate for the large spread, the weapon has slow reload time.
Harpoon
The harpoon fires a fast-moving projectile ahead of the player that
goes through any enemy it makes contact with.
Dropper
The dropper fires a projectile that gravitates towards the floor. Like
the harpoon, it goes through enemies.
Rockets
The rocket launcher fires a slow-moving projectile that explodes on
contact with enemies. Any enemies caught in the explosion are killed
Level Design

As the player progresses through the game the map remains the same, however what changes are
the types of enemies that the player encounters and the timer left for the level. The level takes place
on a screen that moves up and down depending on the player's location. Below and above the player
are a series of rocks which help show the boundaries of the level. Behind the player there are a
series of doors, which help show how many lives the player has left. Enemies come at the player
from the right hand side of the screen. The level design is intended to be simple and display
everything that is necessary for the player.

User Interface
During menus, the User Interface is displayed using buttons which describe their function in the
game and where they will take the player when they're selected. During gameplay the UI is created
using debug text created in the render() function of the game engine. This was done as the text
remains in a constant position on the screen and moves with the player as they move up and down
during the game. The UI in the gameplay displays the current level that the player is on, the
remaining time left for the level and how many lives the player has left.
During the final level, as there is no timer, the UI instead displays how much health the Whale boss
has.
Control Scheme
The player controls are intended to be simple and easy to use, to work cohesively with the overall
simplicity of the gameplay. The player controls the game using the keyboard and mouse.
Control

Action (when applicable)

Move Player Upward

Spacebar

Player Fires Weapons

Mouse Click

Menu Navigation

Development
Hardware and Software
The game has been created using the Phaser game engine on the Netbeans IDE on an ASUS X55La
series laptop unning a Windows 8.1 (64-Bit) operating system. The game is created and stored as an
HTML file which contains the code required for the game. Graphical files are stored as .PNG file
and sound files are stored as an .OGG file, to allow for greater compatibility with different web
browsers. Levels are saved as a .JSON with tileset data being saved in a CSV format.
Data Flow
Data flows between seven different game states, each of which works as a different menu in the
game. Some of these states pass data through to the others to help make the game work.
menuState
This state creates the main menu for the screen, and is automatically loaded as the game
begins. It displays the logo for the game and features two buttons labelled 'Start' and
'Control' which take the player to the loadState and the controlState. It also sets the global
'level' variable to zero, resetting the game whenever the state is loaded.
loadState
This state features a graphic of the main character, with a weapon highlighted as well as
several buttons, each displaying the name of a weapon. The player clicks on these buttons to
select which weapons they want to use in the game. When four of these buttons have been
pressed, the gameState is automatically loaded. This state also plays one of the music files
and resets the global variables for weapons, allowing the player to change weapons when
they revisit the state.
controlState
This state features text which tells the player how to play the game. At the bottom of the
screen there's a button labelled 'Back' which takes the player back to the menuState.
levelState
This state is loaded whenever the player successfully completes a level. It features a logo,
which tells the player that they've completed a level and features two buttons labelled
'Loadout' and 'Play'. The first button takes that player back to the loadState, and allows
players to change their weapons in-between levels, the second button takes the player back
to the gameState, so that they can continue playing the game with their current loadout of
weapons.
gameState
This is the main state where most of the gameplay takes place. It is here where the player
engages enemies in combat using the weapons that they selected from the loadState. This
state increments the level counter by 1, which progresses the game whenever the state is
loaded. A timer is loaded, which moves the player to the levelState if it reaches zero. If the
player is on the fifth level, then the timer is replaced with a health gauge which displays the
current health of the Whale boss. The player then moves to the endState when the Whale's
health reaches zero. The player's lives are reset every time the state is loaded, which
helps make the game more fair in it's difficulty. If the player loses all their lives before the
timer reaches zero, they'll be sent to the gameOverState.

endState
This state is loaded when the player defeats the Whale boss. It features a logo, which tells
the player they've won the game, and text, which lists the game's credits. There's also a
button labelled 'Back' which takes the player back to the menuState.
gameOverState
This state is loaded when the player loses all of their lives. The state features a logo, telling
players that they've lost the game and text displaying the game's credits. The state also has a
button labelled 'Back' which takes the player back to the menuState.
Functions
Here you can find a list of the functions used to help create the game, with brief descriptions of
what they do:
preload
The preload function loads all the assets required for the current state. This includes
graphics, sounds and level data.
create
The create function creates the state, as it appears without any player input. It is used to help
create objects, load levels and create player inputs.
update
The update function creates actions or calls other functions as a response to events in the
game such as collisions or player inputs.
render
The render function is used to help display debug text of properties during the game. These
then appear on the screen during the game. Code here is usually commented out, however in
the case of the User Interface in the gameState, the code is left visible.
switch[State]
These functions are called whenever the player presses a button, and takes them to the
corresponding state.
select[Weapon]
These functions are called when the player presses the buttons on the loadState, and
switches the corresponding global weapon variables to true, enabling usage of that weapon.
changeLevel
This function is called when the timer reaches zero, and takes the player to the endState.
[enemy]Fire
These functions are called when certain enemies are loaded into the game and is called again
after a certain period of time.
explode
This function is called whenever a rocket makes contact with an enemy, and replaces their
sprite with an explosion object, which is killed as soon as it's animation is completed. It also
calls functions for if any of the other enemies makes contact with the explosion object.

hitPlayer[Enemy]
These functions are called whenever an enemy makes contact with the player. The enemy
object is killed and the player loses a life. In the case of the Whale boss, the player's lives are
automatically set to zero and the gameOverState is loaded.
hitDoor[Enemy]
These functions are called whenever an enemy makes contact with one of the doors behind
the player. The enemy object is killed and the player loses a life. In the case of the Whale
boss, the player's lives are automatically set to zero and the gameOverState is loaded.
[enemy]ShotPlayer
These functions are called whenever an enemy bullet makes contact with the player. The
enemy bullet object is killed and the player loses a life.
[enemy]ShotDoor
These functions are called whenever an enemy bullet makes contact with one of the doors
behind the player. If the last door is still closed and the player has more than zero lives
remaining, then the enemy bullet will be killed.
hit[Enemy][Weapon]
These functions are called whenever a projectile from the player hits an enemy. The enemy
object is killed as well as the projectile. In the case of the Dropper and Harpoon weapons,
the projectile remains and continues moving. For the Rocket launcher, the explode function
is also called. In the case of the Whale boss, the projectile is killed and the Whale's
health is decremented by 1.
hit[Enemy]Explosion
These functions are called whenever an enemy hits the explosion object. Here, the enemy
object is killed. In the case of the
Whale boss, the projectile is killed and the Whale's
health is decremented by 1.
fireBullet[X][Weapon]
These functions are called whenever the player presses the spacebar and depending on what
weapons are selected. These functions fire the corresponding projectile and reloads it.
Game Testing
The game was repeatedly tested by myself during development. Tests were made whenever new
features we added to make sure they worked, and debug text was added to the render() function to
find any faults in the code.
When the initial build was completed, the game was tested again by myself to make sure everything
worked as intended and that the game was possible to complete. The project was then sent off to
two other people who had no affiliation with the project in order to prevent any bias in testing and
to gain insight from the point of view of the player. During this process several in-game changes,
such as increasing the volume of audio and adjusting the reload times of certain weapons were
suggested and then added into the project.

Code References
As the game was being developed, several different tutorials were used to help in the development
of the project to help me become better accustomed to using the Phaser game engine. Below you
can see a list of tutorials that I used throughout the development of the project:
http://phaser.io/examples/v2/games/starstruck
Used to help for engine basics (such as map creation, and player inputs via keyboard) as
well as collisions and implementing animation.
http://phaser.io/examples/v2/games/invaders
Used for helping to create and fire projectiles
http://phaser.io/examples/v2/basics/02-click-on-an-image
Used for helping to create buttons
http://phaser.io/examples/v2/audio/play-music
Used for helping to load audio and sounds into the game.
https://leanpub.com/html5shootemupinanafternoon/read
Used for helping to create states, spawn and kill enemies and create explosions.

Вам также может понравиться