0% found this document useful (0 votes)
4 views118 pages

Example

The document outlines a game concept called 'Maze Runner,' targeting ages 5-18, where players navigate an ancient maze to collect vinyls and power-ups while battling enemies, all within a time limit. The game features simple controls, a timer, and abstract elements like animated graphics and a winning banner. It draws inspiration from games like Bomber-Man and Pac-Man, emphasizing engaging gameplay mechanics and customizable player experiences.

Uploaded by

shivam.v.jambagi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views118 pages

Example

The document outlines a game concept called 'Maze Runner,' targeting ages 5-18, where players navigate an ancient maze to collect vinyls and power-ups while battling enemies, all within a time limit. The game features simple controls, a timer, and abstract elements like animated graphics and a winning banner. It draws inspiration from games like Bomber-Man and Pac-Man, emphasizing engaging gameplay mechanics and customizable player experiences.

Uploaded by

shivam.v.jambagi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Omar El Tayeb

• Environment = ancient maze


• Goal = leave maze before timer runs out/ collect vinyl's (extract type of mission)
• Rules = cannot turn around can only go forward
• Genre = adventure/puzzle
• Inspiration = Friday night funking, Indiana jones, bomber man
• Target age = 5-18
• Stakeholders sagal,jonathan and maysoun

MAZE RUNNER OUTLINE


In a maze where you can only see the parts you have explored there is enemies and chest in the maze
both drop items/ power ups items drops depend on the mob for example different coloured items
needed to be collected are vinyl's when each one of them is collected they change background music,
the power ups also change the background music which are dropped from chests and enemy mobs the
two power ups are a speed boost and the ability to destroy a block and the rarest will be one which lets
you skip an entire enemy .The goal will be to collect all the items in a limited amount of time and the
player cannot turn back and can only go forward and go left and right. The fights between the enemy
and player are also based on short parts of songs, the player will have to sync in with the song and use
the arrow keys or w,a,s,d the tap all the keys showed on the screen and can only get a certain amount
wrong depending on the type of enemy

CONTROLS FOR SOLUTION


The controls for the game are easy to earn for anyone of a younger age or limited knowledge , the
controls to move the characters are “W,A,S,D” to move the character in the game and the controls to
use or switch items will be the scroll key on the mouse

TARGET AUDIENCE
The game is fast paced sub-genre / puzzle game /maze runner target audience of young kid / teens
between the ages of 5-18. The platform for this game is PC as it is the most suitable for the target
market. The penalty shootout's audience is between the ages 5-18 as children start playing games on
the computer around the age of 5. the game willl be easy to follow as the target starts at 5 but also
easier complex parts for example battling with an enemy.(Sagal, Jonathan,maysoun)

THINKING ABSTRACLY
My game will be considerably abstracted due to the fact that the game needs a timer system and also a
storage system which lets you switch between power/items and other useful features that the game
suitable and simple for my stakeholders (aged 5-18)

Features of abstraction within the maze runner sub-genre game:

1
Omar El Tayeb

• Timer. This feature will show users how much time they currently have left which willl give a
sense of urgency to the players. However in real life maze running they use speakers or just give
the players clocks. My game will have an animated timer
• Animations. The graphics will be far from reality, will be from sprites. This type of animation will
also be more appealing to my stakeholders as they will care much about them as they wont be
looking for the most realistic game.
• Winning banner. Once a player wins by finishing the game a winning banner will say you have
completed the game and the time, they finished the race in “YOU HAVE COMPLETED THE RACE
IN #:# clearly showing the game state .This is abstract as in real life a banner won't appear in
front of you telling you have completed the maze and the amount of time you completed it in .
• Pause button> the pause feature is a huge factor which let the players pause the game to do
something such as chore s, homework or collect a parcel from the delivery driver this would be
best suited for my audience as at there age they will still be in education this is abstract as in
real life you can't pause
time .

THINKING AHEAD
• Thinking ahead is the process of identifying inputs and outputs to a solution before taking care
of the problem you can then think of potential problems and then you will have time to think of
how that problem could be solved.
• Controls, the controls need to be easy access for example if a tries to press two keys at the that
are far from each other gameplay will be hard this shows the creator hasn’t thought ahead
about the composition of the controls. Due to this error the audience /players are not going to
enjoy the game to the full potential; thinking ahead would have allowed the designer to easily
find the problem and fix it
• Battle system, the battle system will need to be quick and easy as players will need to input keys
in a rhythm for..

THINKING PROCEDURALLY AND DECOMPOSITION


• Thinking procedurally is the practice of separating a challenge down into smaller simpler jobs
that work together to create the game. All games are made up of subroutines that are
responsible for doing tasks that contribute to the overall build of the game.
• I can make my game more efficient and avoid code duplication by using subroutines and
procedures.
• Throughout the game, the character and movement will be the same. The character will remain
the same throughout the game though some character customization would be beneficial.
Character movement will be one of the game's key operations and it will be consistent
throughout the game.

2
Omar El Tayeb

Four main problems


• Players as they are the key for the game as the game is based on player movement and
decisions
• Controls as they need to be programmed properly as they can make or break the game as player
movement will depend on the controls. There will also be a pause button if players need to take
a break
• Game state this is important as it will take the player through different parts of the game, the
menu state will display the menu where the player can select “play”, “instructions” or “exit".
The playing state is when the game is being played. When the state is paused the pause screen
will load until gameplay is resumed and finally game state over is when the player either loses or
wins
• The timer determines whether the player finished the race or not in time determining whether
the player won or lost

THINKING LOGICALLY
• The main menu. This is a decision point as there will be options to “play”, ”open the
instructions” and to “exit”. This is thinking logically as there a decision to be made and the game
will loop the state of menu will run until a decision is made

3
Omar El Tayeb

• When the player defeats an enemy, they will get either a powerup or not and whether the get
an item or not and before that the player will have to defeat the mobs/enemies to activate this
and loops until another enemy is found or the exit

THINKING CONCURRENTLY
• Thinking concurrently is the process of implementing parts of a solution or program
concurrently or side by side for example finding out what parts of a problem can be fixed at the
same time.
• I don’t think I could implement thibnking concurrently throughout any part of my solution, the
only thing that need to be done at the same time would be closing the rhythm game window
after defeating an enemy and finding out which power-up to give to the player

RESEARCH/INSPARATION
Note: “this is the closest reference I could get to my game although they are largely different as some
games are blocked by the school”

Bomber-man: one aspect/idea about bomber-man I particularly liked was the fact the player had to
destroy walls/blocks to achieve the objective get rid of the other players and be the last one standing in
the box and there would also be powerups that could be used to increase destruction power and is also
increase a multiplayer game which can be played with either computers or real players online or locally
the game is based on a 2d map

CONTROLS
The controls in Bomber-man the controls are “W,A,S,D” to let the character move around in four
directions and the controls to use the bomb or powerup is “Q” and if a bomb is not equiped then a
powerup will be used

POWER-UPS
There are eight different power-ups. Some have a lower chance of drop and making them more valuable
than others, and if they found every hidden power-up in every stage they would obtain a great

4
Omar El Tayeb

advantage in the game. Dying /getting hit by an explosion would result in the player losing every power-
up with the exceptions of the “bombs” and “flames”, which are permanent.

5
Omar El Tayeb

LEVELS
In Bomber-man you control him through his effort to climb 50 floors of an underground ground
and reach the surface in order to become human and in order to accomplish this you must
accomplish two objectives in the game which I really liked and decided to input one of them
onto my game which is you must eliminate every enemy the second objective is that you must
reveal the exit which can only be revealed when once every enemy is defeated making it a loop
defeating enemies until all of them are defeated making the player the winner and also
showing them the [Link] addition to this every floor contains hidden powerups which can
increase bomber-man ability as well as chances of survival. Power-ups can be collected to
increase both the number of bombs and the range of the explosion.

6
Omar El Tayeb

Things I like from the game

Justification –could It incorporated into my game


Game features
Power-ups I like how the character can use power-ups to destroy
block or eliminate players helping them through the level
faster, such as speed-up which lets the character move
faster which would also help them, I would like to
incorporate the concepts of these power-ups into my
game
graphics In bomber-man the graphics are simple but effective this
is definitely something I want to incorporate into my game
as the maps I intend my game to become a maze runner
which I will either create or find online
worlds/levels There are many levels in bomber-man and I liked how in
every map there is a different song playing I would like to
implement this. I would also have less levels which will be
harder creating a competitive environment for the players
pausing On bomber-man the pause button would be “esc” and the
start button, this was often hard to reach while playing
therefore I would like it to be easier for people playing by
changing the button to “P”

Pac-man: nails its success by mixing up maze design , intriguing movement and grabbing coins. The maze
keeps you on your toes, running away from ghosts while collecting coins. You have to be slick with your
moves to avoid ghost and also collect coins. Its the whole vibe of exploring the maze which i really like
and chasing those points that makes Pac-man a chill game.

7
Omar El Tayeb

MOVEMENT
In Pac-Man, movement is really simple with only 4 directions: up, down, left, and right. You control the
player with quick taps of the arrow keys or joystick, guiding him through the maze with smooth and
responsive moves. It's all about quick reflexes and slick maneuvers to dodge ghosts and navigate tight
spots.

COINS
In the Pac-man the objective is to collect as many coins as possible while trying to run away from teh
ghosts. The coins are used to calculate the score, meaning more coins collected equals a higher score.

Maze.

8
Omar El Tayeb

MAZE
In the game there is a maze which the player must maneuver through to achieve coins and escape the
ghosts. This is something i would like to implement in my game as the whole idea is about being in a
maze and escaping.

Game features justification


movement Incorporating responsive and intuitive movement controls similar to Pac-Man
could enhance the gameplay experience of the game. By allowing players to
navigate smoothly through the game world and can create a more engaging
and immersive experience.
maze Implementing maze-like structures within my game can introduce strategic
elements and challenges for players to overcome. Mazes can serve as dynamic
environments offering opportunities for exploration and puzzle-solving.
Depending on your game's genre and theme. incorporating maze-like levels or
sections could add depth and variety to the gameplay.
coins Introducing collectible items, such as coins can provide players with goals and
rewards. Like Pac-Man's coins and these could contribute to the player's score
or unlock new content in the game. By scattering coins throughout my game
world you can encourage exploration and incentivize players to engage with
my game's environments more deeply.
INTERVIEW PLAN
Main point:

• What makes a game successful?


• How important is design?

Topic development

What makes a game successful?

1. Does the game need to represent reality to make it a success?


2. Should my game have visual effects
3. Would you like your player to be personal? (e.g. you can give them a name)
4. Do you think an instruction menu would reduce confusion
5. Do you like the idea of themes for each level?
6. What made it addictive?
7. What controls do you like

How important is design?

1. Does a game look determine whether you play it or not ?


2. Did you like the way bomber-man looks

9
Omar El Tayeb

Section 1-Sucessful games


Maysoun
Q does the game need to represent reality to make it a success?

No because there are lots of game that don’t represent game and are successful and there are lots of
games that are not hyper realistic but rather retro/sci-fi and people may also prefer them to escape
reality

Q Should my game have visual effects?

Yes because it would be boring without them

Q Would you like your player to be personal? (e.g. you can give them a name)

Yes yes I hate games that don’t let you customize your character as it makes people want to play you
game even more

Q Do you think an instruction menu would reduce confusion

Yes because when your are playing a game sometimes when you are playing with a new player and
don’t know how to teach them how to play an instruction menu would help people increasing how
many people play too

Q Do you like the idea of themes for each level?

Yes it depends on the game

Q What made it addictive?

I think the storyline plays a big part a big part ,the mechanics and also having the game be competitive

Q Would you prefer a game which allows you to have the computer to yourself?

No, as it’s probably better with two players as I can play with my friends

Q How many levels would you like to have in the game?

Probably like 4

Q What options do you think are needed other than “play” and “exit”?

I think an instructions menu would be nice to help players understand the mechanics or the game

10
Omar El Tayeb

Section 2-Design
Q Does a game look determine whether you play it or not ?

Yes 100% there were a lot of games where I looked forward to playing but when I saw how character's
were drawn I gave up on the game. Also the way the game looks should depend on the theme of the
game

Q Did you like the way bomber-man looks?

Yes but I think they're a bit outdated

Interview data review


Requirements-basics

Graphics : Cartoon /non-pixelated animation, this is more appealing to my target audience as they
don’t look for high quality representation of reality in a game. The cartoons are going to be from a
sprite sheet and will move using coordinates giving them a sense of motion

Gamertag: player will be able to customize their own gamertag as maysoun previously said she liked
games which lets you customize the character

Instruction menu : an instruction menu will be available in the main menu to reduce confusion about
the game and help new players

Theme: each part of the game / gamestate will have a different theme song

Addictive mechanics: i will add good mechanics for example the power-ups and rhythm battles

Single player: maysoun said she prefers games which lets her play with games but with the amount of
time given and my level of coding i don't think i could implement this

Levels: game will have 4 levels as maysoun asked for 4

Options main menu : the main menu will have 3 options play, exit and instructions as per asked from
maysoun

Proposed solution
Games states where the home menu is displayed which holds a list of options to choose from. The first
option being “PLAY", which will take the player into the game/playing state where the game is under
way, the first thing the player does when the game starts is to enter a username/gamertag for the there
character. The second option in the list will be “INSTRUCTIONS” which will take the user to a screen
where the instructions are clear to interpret, the screen will consists of a picture of the controls and an
arrow pointing to the keys explaining there function

11
Omar El Tayeb

• Playing, This is the stage where the game is underway and at the very start the player is asked to
input a gamertag for there character the playing state runs until the player wins or loses the
race or unless the player enters the paused game state
• Paused, This is a state where player progress is paused and the paused screen will pop up with
the option to return to main menu or resume game, player can also attend other activities while
paused (chores)
• Over, end game screen will pop up
• Instruction, state displays a clear diagram of what the controls are for the game, there will also
be a home button in the bottom right of the screen. The control diagram will consist of a
keyboard with the keys used to play the game highlighted and pointed to by an arrow, the same
will happen for the mouse.

Controls for the player are as followed are as follows: ‘a’- moves the player to the left ‘d’-moves the
player to the right ,’W’ moves the player up/forward's’-moves the player down/backyards, 'E’-will let the
player use a power-up, ’Q’ will let the player switch power-up The controls for the rhythm battles will be
arrows on the keyboard.

Main menu , there will be a main menu where the first option on the top will be ‘play’ the game, the
second option underneath the first will be ‘instructions’ page and finally, the third option to ‘exit’ the
game

Graphics, the game is a cartoon maze runner (REMAKE) therefore sprites will be used in order to make
the game animated

View, the game will be from a birds eye view perspective so you can see everything that is happening on
the whole map. The camera angle/position will be fixed so there won't be any sway on the display. The
background itself will be the maze

Sound effects, the sound effects within the game are dependent on the state the player is in idle,
fighting, vinyl and powerups which all change the background music and each powerup will have a
different song and each vinyl and when the end depending on if the player won or lost a different song
be played. Every game state will have a fixed track except for ‘Playing’.

Movement, the player can move left when “A” is pressed, right when “D” is pressed, forward when “W”
is pressed and at last backwards when “S” is pressed. The power-up “rager(Remake)” destroys the block
destroyed depending on which way the player is facing. the mobs/ enemy's position will be fixed. There

12
Omar El Tayeb

will also be a powerup “jazz(remake) which will also increase player movement speed for a certain
amount of time

SUCESS CRITERIA AND REQUIREMENTS

Requirements Justification

Minimum of 4 levels I would to implement more levels if possible to


please my audience

Have menu that has 3 options Maysoun mentioned she would like the game to
have an instructions menu to help new players ,
and I also personally would like to add another
option which shows previous high scores if I have
time
Have a minimum of 3 powerups I would like to implement at least 3 power-ups
Which can either be found on the floor or
dropped from mobs. Power-up will be able to do
the following speed-boost, kill an enemy and be
able to destroy a block
Power ups should last for 20 secs I would like all of my power ups to last 20`
seconds or less (not including “rager”) the other
powerups will be demolish and another which
increase a player speed

Controls-(“W,A,S,D,E,Q)for movement and I would the controls for my game to be easier for
powerups and arrows for battles player as requested by Maysoun(remake)

High score system(time passed*vinyl's collected) There will be a high score system which will
calculated depending on amount of time passed
and vinyl's collected which can be dropped by
mobs or found on the floor

13
Omar El Tayeb

Timer There will be timer counting down will the player


tries to leave the maze in time and will count
down from 350

Levels The levels will be unlocked after the player


finishes and wins the level which will then be
accessible through the play option in the menu

The game will be single player Although in the interview Maysoun said she
preferred multiplayer so she could play with
friends making the game also a bit more
competitive. However, I am unable to implement
this feature as I don’t have the programming
ability within the time frame for this project
Appeal to ages 5-18 Ideally, my game will appeal to people of all ages,
including those with computers older than five.
My primary target audience would be those who
use computers instead of consoles which is
generally those who are between the ages of 5
and 18.

Music themes Each part of the game will have a different


soundtrack for example menu then in the playing
state whenever a the player obtains something
(vinyl) or uses a powerup the soundtrack which
change to one fitting off the power-up but for the
vinyl's it will be random
Menu navigation The menu will just have three options, making it
very easy to navigate and use as well as
reasonably self-explanatory. I'll also work at
making it possible to utilize the arrow keys and
enter button to navigate the menu.

14
Omar El Tayeb

SOFTWARE /HARDWARE REWUIREMENTS


item justification
monitor Allows the player to spectate the game.

keyboard Required so the user can use the controls to save


the goal and to shoot.

mouse Allows the user to navigate through the menu of


the game.

speakers/headphones In order for the player to hear the sound effects


within the game.

400 mb of hard drive space A single sprite is 15KB’s in size, the background is
roughly 4KB therefore I will not need so much
memory. However with the themes if each song
is around 3 minutes I will need about 350 mb

2gb of ram The average computer holds 2Gb’s of RAM, the


likely scenario is that there is more an enough
RAM than we actually need to run the game.

Processor 2gh Will need around 2GHZ in order to do the


graphics and animations of the game as well as
the tasks.

Software requirements
• Opengl api rg
• Openal api adio
• Openal windows drivers
• Mingw4.8.1 or Microsoft visual c++ express 2010 (msvc)
• Pygames

15
Omar El Tayeb

Success criteria
Require specification
requirement justification reference
Game will be birds eye view This is so the character will be Proposed solution
able to move around the map
faster making it easier to play
for the audience
Single player game I won’t be able to implement interview
the multiplayer feature due to
my ability in programming
within the time frame I have for
the end product to be made.
Menu will have 3 instructions These are the most essential Proposed solution
PLAY/INSTRUCTIONS/QUIT options since if the user is
unable to play the game there is
no sense in making it. These
options are a clear means of
directing the user to pick what
they want to proceed with.

Customizable gamer tag This feature is strongly looked interview


upon by Maysoun and I would
like to implement this
‘esc’ will pause the game until Proposed solution
the game is resumed with a ‘left
mouse click’ on the resume tab

‘A’ moves the player to the left W,A,S,D’ is used inside of the Proposed solution
‘D’ moves the player to the right arrows to avoid confusion with
‘S’ moves the player down ‘W’ in the game.
moves the player forward
‘E’ will use a power up
‘q’ will change between them
Arrow keys will be used for
rythm battles
The instruction menu will have Diagram will show the controls Proposed solution
a diagram of the keyboard there will also be a text
explaining the rules and
mechanics

16
Omar El Tayeb

B Design
After my interview with maysoun I have collected all of the requirements for the game which means
that I am able to start designing it. Her requirements will change the way in which I design the game
which means that it is important for me to think about everything, I have therefore broken the game
down with a systems diagram . The system diagram must consist of smaller processes which will need
to be designed, this diagram allows me to break the problem into more managle sections and processes

After my interview with Robbie I have collected all of the requirements for the game which means that I
am able to start designing it. His requirements will change the way in which I design the game which
means that it is important for me to think about everything, I have therefore broken the game down
with a systems diagram. The systems diagram consists of smaller processes which will need to be
designed, this diagram allows me to break the problem down into more manageable sections and
processes.

17
Omar El Tayeb

System diagram

PROPOSED SCREEN DESIGN AND USABILITY FEATURES


Game Start
• Introduction to the game loaded
• Players will have to press enter to get into the main game menu
• The user should be able to click enter so that the menu is loaded

18
Omar El Tayeb

19
Omar El Tayeb

Main Menu

• Unloads loading screen


• In the original design of the it will have 4 options
• Game originally being built with no method of saving thus the game doesn’t need to check for
the save game file or other
• It will have 4 options which are play ,select level, instructions and finally exit
• When clicked it load the corresponding page
• Possibly will be able to navigate the menu with either the arrow keys or the mouse

20
Omar El Tayeb

Exit Game
• When the exit button is pressed on the main menu it unloads all screens
• Closes all screens and scenes
• Send you to the desktop
• This won’t be the same as as the “game over” screen which will be when a player dies during a
level or does not finish the maze in the time given
• This button on the menu screen and pause screen will be the only way to close the game

Level Selector
• Loads after being selected on main menu
• Main menu unloaded
• This screen design will only have 4 levels to start with to give an example of how the screen
should look it
• It will be different from the level viewer
• Level viewer will be used to look at the levels high score and who is holding the high scores

Summary of processes including key variables and structures


Menu

• When the game is started the loading screen will appear and be loaded,the player will then have
to click enter the main menu
• On the main menu there will be a number of options consisting of 3 buttons: play , instructions
and exit
• Cl8icking on the level selector is the most important button as it leads to the game as it’s the
only thing that leads to the main game and level selector which lets the player select a level
after completing the level and also view previous highscores after clicking / selecting a level

21
Omar El Tayeb

• After confirming /selecting the level the player will be asked to select a gamertag/username for
the player which will be displayed on the high scores for the level
• Instructions will include controls and what a the aim of the game is
• There is also an exit button at the bottom right of the screen which will close the game

Play
• This would allow the user to start the game, will be in main menu to enable easy access for
players
• This will lead to level selector and gamertag editor
• Player will be able to leave by pressing “esc” on the keyboard

Level selector
• When this button is clicked on the main menu it will display a screen consisting of 4 levels which
will be labelled as level 1 and so on to level 4
• It will also be displayed which aren’t are playable as there will be an image of the lock on the
image of the level and will be locked until the player completes the level and wins
• They can go back to the main menu by pressing “esc”
• When a player selects a level the current highscores will pop up
• If a player tries to select a locked level nothing happens

Gamertag editor
• This option will appear after selecting a level letting the player change username

Instructions
• When this option is clicked on the main menu a screen with large text and pictures will be
displayed
• This will be an in-depth guide about the game teaching the player how to play and also the
mechanics such as the vinyls
• They will also be a back button which will be the “esc” button on the keyboard

Music
• Each game state will have a different soundtrack for example pause menu, loading menu, main
menu, playing and after collecting vinyl's
• The rhythm games will only be 15 secs of the original song
• Each power-up will have a different song corresponding the power-up for example destroying
blocks rager/rock, speed boost=(thinking) or a song with a high bps, and elimanating an enemy
will be slow jazz

Vinyls
22
Omar El Tayeb

• Vinyls will be obtained through the level by eliminating an enemy or collecting them from the
floor and disappear after being collected
• They will also change the background music when collected
• They will also be needed to calculate the high score by multiplying the number collected with
the time elapsed
• There is also going to be counter for the amount of vinyl's collected

Timer
• When the level starts a timer at the top of the screen will pop counting down from 350 seconds
until the player completes the level and wins anf if not completed in the given time the player
will have lost and game over screen will pop up with the option of letting the player go back to
main menu or exit

Levels
• Level needs to be loaded, level graphics need to be loaded into array as well as characters and
enemies.
• Characters need to be loaded and set in the right position.
• Count down from 3 before starting the level.
• vinyl's need to spawn.
• vinyl's score needs to be set to 0.
• the timer needs to be set to 350.
• When count down finishes and level starts timer counts down from 350.
• vinyl score is incremented by 1 when a vinyl is collected.

Power-ups

23
Omar El Tayeb

• There will be a total of 3 powerups in my game which can either be found from eliminating
mobs or be found and will be very similar to the ones in bomber-man will last about 20 seconds
depending on the type of power-up : enhancement/ move
• One type of enhancement will be a speed boost which will increase player movement for 20
seconds as it is an enhancement
• Second power-up will let let the payer elimante an enemy/skip them amount of time this can be
used will depend on how many the player has collected
• Third power-up will let the player destroy a certain block essentially letting them skip a large
part of the maze or either just an enemy i intend to make this power-up have a large activation
like 1 second because it is the best one however all the other powe-up activation time will be
instant

Game states
• Playing
• Paused
• Menu
• Quit

Controls
• “a” and “d” will be be used to move the character to the left and right this will be done by using
the players current co-ordinates when i code it for instance clicking “a” will move the players
current x co-ordinates by a certain amount
• “w” and “s” will be used to move the character forward and backward this will be done by using
the players current co-ordinates when i code it, for instance clicking “w” will move the players
current y co-ordinates by a certain amount

24
Omar El Tayeb

• “w” and “s” will be used to move the character forward and backward this will be done by using
the players current co-ordinates when i code it, for instance clicking “w” will move the players
current y co-ordinates by a certain amount
• Arrow keys will be used when in the rhythm mini games against enemies this will make it easier
to use as the player can have both hands opn the two set of keys “w,a,s,d” and the arrow keys

Rhythm fights
• Rhythm fights will have 15 seconds segments of songs and the player will have to use the arrow
keys according to the rhythm/song
• Will make it so that when the player clicks the arrow keys when the ryhtm icon reaches a certain
part of the screen and will use the icons y coordinates

Key variables and data structures:


Global Variables:(Button)
Variable Name Data Type Purpose
image Depends on the content of the Represents the image of the
image button (can be None).

x_pos Integer X-coordinate position of the


button.
y_pos Integer Y-coordinate position of the
button.
font Font Font used for rendering text
on the button.
base_color Color Base color of the button when
not hovered.
hovering_color Color Color of the button when
hovered.

25
Omar El Tayeb

text_input String Input text to be displayed on


the button.
text Surface Surface object holding the
rendered text.
rect Rect Rectangle that represents the
button.
text_rect Rect Rectangle that represents the
text position.

Methods:(Button)
Method
Name Type Purpose Parameters Return Type Actions
__init__ Constructor Initializes the image, pos, None Sets up
Button object. text_input, attributes
font, such as image,
base_color,
hovering_col position, text,
or and colors for
the button.
update Renderer Updates the screen None Blits the
button on the image and
screen. text on the
specified
screen.
CheckFor Interaction Checks if a position Boolean Returns True
given position if the given
is within the position is
button within the
boundaries. button
boundaries,
else False.

Input
changeColor Interaction Changes the position None Changes the
text color text color to
based on hovering
mouse color if the
position. mouse is over
the button,

26
Omar El Tayeb

otherwise
sets it to the
base color.

Global Variables:(Menu)
Variable Name Data Type Purpose
SCREEN Pygame Surface Represents the game window.
BG Pygame Surface Represents the background
image.
PBG Pygame Surface Represents the play
background image.
PLAY_MOUSE_POS Tuple (int, int) Stores the current mouse
position in the play loop.
INSTRUCTIONS_MOUSE_POS Tuple (int, int) Stores the current mouse
position in the instructions
loop.
MENU_MOUSE_POS Tuple (int, int) Stores the current mouse
position in the main menu
loop.
MENU_TEXT Pygame Surface Represents the text for the
main menu.
PLAY_BUTTON, Button Objects Represent buttons in the main
INSTRUCTIONS_BUTTON, menu.
QUIT_BUTTON

Methods:(Menu)
Method
Name Type Purpose Parameters Return Type Actions
play() Game Loop Runs the None None Continuously
game loop for updates the
the play screen,
screen. monitors
mouse
position and
button clicks,
renders level
selector text
and buttons,
redirects to
the main
menu when
the "BACK"
button is
clicked.

27
Omar El Tayeb

instructions Game Loop Runs the None None Continuously


() game loop for updates the
the screen,
instructions monitors
screen. mouse
position and
button clicks,
renders
instructions
text and the
"BACK"
button,
redirects to
the main
menu when
the "BACK"
button is
clicked.
main_menu() Main Menu Runs the main None None Continuously
Loop menu loop. updates the
screen,
monitors
mouse
position and
button clicks,
renders main
menu text and
buttons (Play,
Instructions,
Quit),
redirects to
the play
screen,
instructions
screen, or
exits the
game based
on button
clicks.

Class diagram

28
Omar El Tayeb

29
Omar El Tayeb

Algorithms
Game state

30
Omar El Tayeb

lives

31
Omar El Tayeb

Gamertag editor

32
Omar El Tayeb

movement

33
Omar El Tayeb

pause

34
Omar El Tayeb

How do all algorithms link

SDLC

35
Omar El Tayeb

The waterfall model is linear, sequential approach to the SDLC that is popular in software engineering
and product development .The waterfall model uses a logical progression of SDLC steps for a project,
similar to the direction water flows over the edge of a cliff. Its sets distinct endpoints or a goal for each
phase of development .Those endpoints or goals can't be revisited after their completion

Agile methodology

Agile methodology is a project management framework that breaks projects down into several dynamic
phases, commonly known as sprints. In this article, get a high-level overview of Agile project
management, plus a few common frameworks to choose the right one for your team.

How will the game be developed


With most of the development lifecycles they all start with analysis and design, the game will follow this
development process however it will follow an agile development cycle. This works by coming up with
the backbones for your idea and brainstorming (analysis) and then designing game prototypes such as
screen designs (design). Agile has an emphasis on game iterations which will be best for my game, an
procedure or iteration is developed for the game it is then checked for bugs and if there are errors then
a new iteration is coded. This development methodology will be the best for my game it will enable me
to produce bug free thoroughly thought through code

Test data for development

playing

Test data type


w valid
a valid
s valid
d valid
‘Up arrow’ invalid
‘Down arrow’ invalid
‘Right arrow’ invalid
‘Left arrow’ invalid
e invalid
q invalid

36
Omar El Tayeb

p invalid

Customizable gamertag

Test data type


Enter tag with 0 characters invalid
Enter tag with 7 characters valid
Enter tag with 11 characters invalid
Enter tag with 10 characters valid
Enter tag with 1 character valid

Rhythm mini game

Test data type


Up arrow valid
Down arrow valid
Right arrow valid
Left arrow valid
w invalid
a Invalid
s invalid
d invalid
p invalid

menu

Test data LC type


Select play LC valid
Select instructions LC valid
Select exit LC valid
Click background LC invalid
Click background RC invalid
Select play RC invalid
Select instructions RC invalid
Select exit RC invalid
Over

37
Omar El Tayeb

Test data type


Game won valid
Game lost valid
Game exit valid
Game return valid
p invalid

Instructions

Test data type


Select return valid
p invalid
w invalid

pause

Test data type


p
a
y

navigation

Test data type


RC valid
LC Invalid
RC backrgound invalid

38
Omar El Tayeb

Test data for beta testing


Enemies and character

What is being tested? explanation Expected outcome


Enemy spawn Enemies will appear where Enemy will appear
declared in the code in the
middle of the path

Enemy battle initiations Battles will start when player Rhythm battle is initiated
enters certain perimeter inside
near the enemy
enemy despawn When the player wins or loses Enemy despawn after battle
mob has to despawn

Player start spawn The player will start at the of Player spawn at the start of the
maze which will be declared in maze
the code
Player walls Player will not be able to phase
through walls

Lose all lives Player loses when he loses alll Game ends
lives and game ends

Menus

What is the test for explanation Expected outcome


When game start loading screen When i started the loading Loading screen appears
appears shoudl appear until done and
player will have to press enter
to proceed
Main menu appears Main menu will appear when Main menu screen appears
player presses back button or
after loading screen

Red box around selected option Red box behind selected option Red box appears behind
to show user what he is selected options
selecting

39
Omar El Tayeb

User can navigate menu Using can use the mouse to Mouse allows user to navigate
navigate using left mouse
button

Exit button should close the Exit button on the main menu Exit button closes game
game will close after being clicked

Display level selector screen Level selector screen will Level selector screen appears
appear after play has been
selected in the main menu

Display gamertag editor screen Gamertag editor screen will pop Gamertag editor screen appears
up after a players selects a level

Back button Back button will take player allows


back to main menu after being
clicked

Display instructions Instrcutions screen will pop up Instructions screen appears


after being selected in the main
menu

Transition to over menu screen Over menu screen will appear Over screen will appear
after finishing level or dying

controls

What is the test for Input/action taken/explanation outcome

40
Omar El Tayeb

Player movement The movement keys are Characters x and y coordinates


presed”w,a,s,d” will change

Using power-up Valid:”e” key is pressed when Player will choose


power-up is obtained corresponding power-up
Invalid:”e” key is pressed with
no power-up available

Switching between power-up Valid:”q” key is pressed when Valid:will switch between
more than one power-up is power-ups
available Invalid:nothing will happen
Invalid:”q” is pressed with one
power-up available
Wether the game continues Valid: gamertag no larger than Valid:game will start (playing
when a correct gamertag is 10 charcaters state)
entered Invalid:bigger than 10 or Invalid:nothing will happen
nothing

Wether controls correspond Keys with a function will be Desired function will happen
with desired outcome pressed

Pause feature “P” key is pressed Pause screen will load up

Rythm battles/sountracks

What is being tested Action taken outcome


Rythm battle screen shows up Initiate battle Rythm battle screen pops up
when initiated

Arrows keys pressed work when Rhythm icons are pressed when Game will continue
pressed in time they reach arrows on screen

Icon come down to the on Rhythm icons are pressed when Game will continue
screen in rhythm with song

41
Omar El Tayeb

player returns to playing screen Return winning or losing Return to main playing state
after rhythm battle depending on if you have 2 lives
or not
Right song plays with right icon Song will be in rhythm with the Right song will play
rhythms icons

Songs for game states Every part of teh game plays the Right song is played
right song

Timer and vinyl


What is the test for explanation outcome
Vinyl spawn and despawn Vinyl will spawnwhere declared Spawn and despawn when
in the code and despawn when collected
collected
Background song changed when Background song changes Song changes
vinyls collected
Counter increases when more As more vinyls are collected Counter increases
vinyls are collected counter increases
Game ends when timer ends The game ends when the timer Game ends
ends
Timer goes down Timer goes down as time goes Timer goes down
on
Timer appears

SIGN OFF PROPOSAL


Interview with client
Maysoun
Q. Are you happy with what has currently been shown in terms of the menus and screen
designs?
A. Yes the current screen designs are very good, so I’m happy with that.

42
Omar El Tayeb

Q. I can’t directly copy the screen when I go to code the game in pygame buti will try and keep
it as close to the screen designs that I have at the moment.
A. Yes that is fine, I would like to see these designs and actual screens as we go along.

Q. Is there anything else that you would like to be added to the screens?
A. Nothing that I can think off but I wouldn’t mind adding ideas later on.

Signature of approval

Omar El - Tayeb
DEVELOPING THE CODED SOLUTION (“THE DEVELOPMENT STORY”)

The software development of my game follows an iterative process where after each module has been
produced I will provide a prototype in which I will hold an interview with my client maysoun where he
will see the development and will be able to make comments and improvements for the next iteration
where I will produce a new prototype. I will develop modules based on the systems diagram produced
within the design as this keeps the development logical and easier to follow which makes good practice
for software development. In reality this process will repeat until the client runs out of money for the
software development, the software has been completed or it has reached a publishable standard.
However, I will only perform these iterations until I run out of time or if the game has been completed.

Code analysis
Prototype 1.1 of the game

[Link]

import pygame

from fakersettings import *

from support import *

• Imports the necessary modules pygame and fakersettings.


• Also imports support, which contains utility functions.

class Player([Link]):

def __init__(self,pos,group):

super().__init__(group)

43
Omar El Tayeb

• Defines a class Player that inherits from [Link].


• Initializes the player object with a position (pos) and a sprite group (group).

self.import_assets()

[Link] = 'down'

self.frame_index = 0

• Calls the import_assets() method to load player animations.


• Sets the initial status of the player to 'down'.
• Initializes the frame index for animation.

[Link] = [Link][[Link]][self.frame_index]

[Link] = [Link].get_rect(center = pos)

• Sets the initial image of the player based on the current status and frame index.
• Creates a rect object for the player's image and centers it at the specified position.

#movement attributes

[Link]= [Link].Vector2()

[Link] = [Link].Vector2([Link])

[Link] = 200

• Initializes movement attributes:


o direction: A vector representing the direction of movement.
o pos: A vector representing the current position of the player.
o speed: The speed of the player's movement.

def import_assets(self):

[Link] = {'dead':[],'down':[],'left':[],'right':[],'up':[]}

for animation in [Link]():

44
Omar El Tayeb

full_path= '../graphics/character/' + animation

[Link][animation] = import_folder(full_path)

• Defines the import_assets method to load player animations.


• Creates a dictionary animations to store different animation sequences.
• Iterates over each animation type and loads images for each animation using the
import_folder function.

def animate(self,dt):

self.frame_index += 4 *dt

if self.frame_index >= len([Link][[Link]]):

self.frame_index = 0

[Link] = [Link][[Link]][int(self.frame_index)]

• Defines the animate method to update player animation.


• Advances the frame index based on elapsed time (dt).
• Resets the frame index if it exceeds the number of frames in the current animation
sequence.
• Updates the player's image based on the current status and frame index.

def input(self):

keys = [Link].get_pressed()

if keys[pygame.K_w]:

[Link].y = -1

[Link] = 'up'

elif keys[pygame.K_s]:

[Link].y = 1

[Link] = 'down'

else:

[Link].y = 0

45
Omar El Tayeb

if keys[pygame.K_a]:

[Link].x = -1

[Link] = 'left'

elif keys[pygame.K_d]:

[Link].x = 1

[Link] = 'right'

else:

[Link].x = 0

• Defines the input method to handle player input.


• Checks for pressed keys (W, S, A, D) to determine movement direction and status.
• Updates the direction vector and sets the player's status accordingly.

def move(self,dt):

if [Link]() >0:

[Link] = [Link]()

[Link].x += [Link].x * [Link] * dt

[Link] = [Link].x

[Link].y += [Link].y * [Link] * dt

[Link] = [Link].y

• Defines the move method to update player position based on input.


• Normalizes the direction vector if its magnitude is greater than 0.
• Updates the player's position based on the direction, speed, and elapsed time (dt).

def update(self,dt):

[Link]()

[Link](dt)

46
Omar El Tayeb

[Link](dt)

• Defines the update method to update the player's state.


• Calls the input, move, and animate methods to handle input, movement, and
animation updates, respectively.

[Link]

from os import walk

import pygame

• Imports the walk function from the os module and the pygame module.

def import_folder(path):

surface_list= []

for _,__,img_files in walk(path):

for image in img_files:

full_path = path + '/'+ image

image_surf = [Link](full_path).convert_alpha()

surface_list.append(image_surf)

return surface_list

• Defines the import_folder function to load images from a folder.


• Takes a path argument indicating the folder path.
• Iterates over all image files in the folder and loads each image using
[Link]().
• Converts each loaded image to an alpha surface using convert_alpha() to enable
transparency.
• Appends the loaded surface to a list surface_list.
• Returns the list of loaded surfaces.

This function facilitates the loading of multiple images from a specified folder path.

[Link]
47
Omar El Tayeb

from [Link] import Vector2

#screen

SCREEN_WIDTH = 1280

SCREEN_HEIGHT=720

TILE_SIZE = 32

#overlay positions

OVERLAY_POSITIONS ={

'tool' : (40,SCREEN_HEIGHT - 15),

'seed' :(70,SCREEN_HEIGHT -5)}

LAYERS = {

'floor': 0,

'wall1': 1,

'wall2': 2,

'wall2': 3,

• Imports Vector2 from [Link].


• Defines various game settings such as screen dimensions (SCREEN_WIDTH,
SCREEN_HEIGHT), tile size (TILE_SIZE), overlay positions (OVERLAY_POSITIONS),
and layers (LAYERS).

In this version of the game the player was only was only a rectangle because i did not add
the animations to the graphics

48
Omar El Tayeb

Prototype 2
In this version of the game i added animation to the movement

49
Omar El Tayeb

Initialization:

[Link] and [Link] are set based on the initial status and frame index of the player's animation.

Importing Assets:

The import_assets method loads the player's animations from files into [Link], which is a
dictionary containing different animations for various directions and states (e.g., 'up', 'down', 'left',
'right', 'dead').

Input Handling:

The input method checks for key presses. If the player presses the 'W' key, the player's direction.y is set
to -1, indicating upward movement, and the player's status is set to 'up'. Similar logic applies to other
movement directions ('S' for down, 'A' for left, 'D' for right).

When the player presses the spacebar (pygame.K_SPACE), the use_power method is called via a timer.

Movement:

50
Omar El Tayeb

The move method updates the player's position based on the current direction and speed. It first
normalizes the direction vector to ensure consistent speed in diagonal movement, then adjusts the
player's position accordingly along the x and y axes.

Animation:

The animate method updates the player's image based on the current animation frame index. It
increments the frame index based on the elapsed time (dt) and loops back to the beginning of the
animation if necessary.

Status and Power Use:

The get_status method checks if any powers are being used based on active timers. If the 'power use'
timer is active, it indicates that a power is being used.

Update:

The update method is called every frame to update the player's state. It calls the input handling,
movement, animation, and status methods sequentially.

So, when a player presses a movement key (W, A, S, D), the input method updates the player's direction
and status. Then, in the update method, the move method adjusts the player's position, and the
animate method updates the player's image accordingly based on the direction. Finally, the get_status
method checks if any powers are being used. This process repeats every frame, providing smooth
movement and animation transitions.

The `import_folder` function is a utility function used to load all images within a specified folder. Here's
how it works:

51
Omar El Tayeb

1. Importing Modules: The function imports the `walk` function from the `os` module and the `pygame`
module.

2. Function Definition: The `import_folder` function is defined with one parameter `path`, which
represents the path to the folder containing the images.

3. Initializing Surface List: Inside the function, an empty list named `surface_list` is initialized. This list will
hold the loaded images.

4. Walking Through the Folder: The `walk` function is used to traverse through the specified folder
(`path`). It returns a tuple containing three values: the current directory path, a list of subdirectories,
and a list of files in the current directory.

5. Iterating Through Image Files: The function iterates over the list of image files (`img_files`) obtained
from the `walk` function.

6. Loading Images: For each image file in the folder, the full path to the image is constructed by
concatenating the `path` and the image file name. Then, the `[Link]` function is used to
load the image. The `convert_alpha()` method is called to convert the image to a format suitable for
display with per-pixel transparency.

7. Appending to Surface List: The loaded image surface (`image_surf`) is appended to the `surface_list`.

8. Returning Surface List: Once all images in the folder have been loaded, the function returns the
`surface_list` containing all the loaded image surfaces.

The `import_folder` function is used within the `Player` class's `import_assets` method to load the
player's animation frames from a folder in the graphics directory. This allows for easy management and
addition of new animations without modifying the code, enhancing flexibility and scalability.

Images below show the player animation when moving

52
Omar El Tayeb

What is being input Justification of outcome How to solve


tested input
Left horizontal Key a This is the key Left animation is N/A
movement that will make the being used
animation player move to
the left
Right horizontal Key d This is the key Right animation N/A
Movement that will make the being used
animation player move to
the rigth
Upward vertical Key w This is the key Up animation N/A
Animation that will make the being used
movement player move up
Downward Key s This is the key Down animation N/A
vertical animation that will make the being used
movement player move
down

In prototype 3

In this prototype powers were added and when used the player glowed

53
Omar El Tayeb

54
Omar El Tayeb

55
Omar El Tayeb

56
Omar El Tayeb

1. Powers Creation:

The `Player` class has a list attribute `[Link]` which holds the names of different powers available
to the player. In the provided code, two powers are defined: 'speed' and 'phasing'. And more powers
can be added to this list if needed.

2. Adding Animations to Powers:

The animations for each power are stored in the `[Link]` dictionary within the `Player` class.
In the provided code, animations for different directions and powers are loaded from files using the
`import_assets()` method. Each animation is stored under a specific key in the dictionary corresponding
to the player's status and power combination (e.g., 'up_speed', 'down_phasing', etc.).

To add animations for a new power i created animation files for each direction (up, down, left, right)
specific to that power and place them in the appropriate directory. Then i could load these animations
using the `import_assets()` method.

3. Activating Powers:

When a power is activated (e.g., by pressing the 'E' key), the `use_power()` method is called. In this
method where i can define the behavior of the power, such as altering the player's movement speed,
allowing them to phase through objects, or any other desired effect. In the provided code, the
`use_power()` method simply prints the name of the currently selected power.

4. Updating Player Status with Powers:

The `get_status()` method updates the player's status based on whether a power is being used or not.
If a power is active (i.e., its corresponding timer is running), the player's status is updated to include the
name of the power (e.g., 'up_speed', 'down_phasing'). This allows the player's animation to reflect the
currently active power.

57
Omar El Tayeb

5. Switching Powers:

The player can switch between powers using the 'Q' key. When the 'Q' key is pressed and the power
switch timer is not active, the player's selected power is updated, and the corresponding animation is
displayed. The `power_index` attribute is used to keep track of the index of the currently selected power
in the `[Link]` list.

The images below are the player animation for the power yellow for speed and grey for phasing which i
created myself. I chose yellow/orange as i felt it suited the power(lightning) speed and made phasing
grey to make it look like a ghost

A problem i ran into when making the game is that the power animations sprites were not being found
and this was happening because when i was inputting the location of the code i forgot to add ‘..’ to go
out of the game files where all the programs are stored and fixed this by adding ‘..’ at the start of the
location

Image below shows the different folders for each animation of the player one the of the sprite file

58
Omar El Tayeb

What is being input Justification of outcome How to solve


tested input
Animation of Key e Player animation Player animation N/A
player movement changes changes for a
changes for speed depending on certain amount of
power selected power time
Animation of Key e Player animation Player animation N/A
player movement changes changes for a
changes for depending on certain amount of
phasing power selected power time

Able to change Key q Changes the Selected power N/A


power selected power changes

Prototype 4

In prototype 4 i had made an overlay for powers so the player could know which power is
selected before being used

I cannot find the file for prototype 4 so i will include it all in the next prototype

Prototype 5

In prototype 5 i had imported the image of the map

59
Omar El Tayeb

60
Omar El Tayeb

1. Overlay Creation: You created an `Overlay` class that handles displaying overlays on the game screen.
In the `__init__` method of the `Overlay` class, i loaded images for each power in the player's repertoire.
These images represent icons or visual indicators for each power. By associating each power with its
respective image, i can easily display the appropriate overlay when needed.

2. Displaying the Overlay: Within the `display` method of the `Overlay` class, i determine which power is
currently selected by the player. Once identified, i retrieve the corresponding image from the dictionary
`powers_surf`. This image is then blitted onto the screen at a predetermined position, indicating to the
player which power is currently active.

how i imported the ground :

1. Generic Sprite: i created a `Generic` class that represents a generic sprite in the game. This class
inherits from `[Link]`, making it compatible with Pygame's sprite system.

2. Loading Ground Image: Within the `setup` method of the `Level` class, i instantiated a `Generic` object
to represent the ground. i loaded the ground image using `[Link]`, passing the file path of
the image. The image was then converted to the appropriate format using `.convert_alpha()` to optimize
it for display in Pygame.

3. Adding to Sprite Groups: After creating the `Generic` object, i added it to the `all_sprites` group. This
ensures that the ground sprite is managed along with other sprites in the game, making it easier to
update and draw on the screen.

By following these steps, i effectively imported the ground image and integrated it into my game level.
This allows players to interact with the ground environment while exploring the game world.

61
Omar El Tayeb

Additionally, the use of overlays enhances the player experience by providing visual feedback on the
current power in use.

The image above shows the ground/map

The image above shows the overlay for the speed power

The image above shows the overlay for the phasing power

62
Omar El Tayeb

INTERVIEW WITH MAYSOUN:

[Link] you like how the current game is looking?

e. Yes i think it looks pretty good , looking retro while also keeping it modern

Q. do you like the way the way each power up has an overlay to show the power selected?

e. yes this was really needed other else the game would be too hard to play

[Link] there anything which you think could be improved?

e. i think if the overlay was smaller it would be easier for the player to see as its hiding some part of
the map.

I will try to make the overlays smaller when i finish the other part of the game.

What is being input Justiification of Outcome How to solve


tested input
Speed overlay Key q Test wether the Speed overlay N/A
pops up the overlay for shows up
speed shows up
Phasing overlay Key q Test wether the Phasing overlay N/A
pop up overlay for shows up
phasing pops up
The overlay being N/A Test wether the Right overlay N/A
show is the actual overlay shown is being shown
overlay the same as teh
selected power
Overlays change Key q Overlay changes Overlay switches N/A

63
Omar El Tayeb

Prototype 6
In this version of the game i tried implementing rectangles for the walls which the player can collide
and also created a player hitbox

64
Omar El Tayeb

65
Omar El Tayeb

1. Collision Map (lvl_1_collision_map and lvl_1_grid):

- The `lvl_1_collision_map` is a textual representation of the game level where certain characters
represent different types of terrain or objects.

- i convert this map into a 2D list called `lvl_1_grid`, where each element in the list corresponds to a
tile in the game level.

66
Omar El Tayeb

2. Hitbox ([Link]):

- For each game object, including the player, i define a hitbox. A hitbox is an invisible rectangle that
surrounds the object and is used to detect collisions with other objects.

- i initialize the hitbox based on the position and dimensions of the game object's sprite.

3. Collision Detection:

- In the `collision` method of the `Level` class, i iterate over each tile in the `lvl_1_grid`. If the tile
represents a collidable object (e.g., indicated by the character '#'), i create a corresponding rectangle
representing the collidable area.

- These rectangles are stored in the `collidable_rects` list.

4. Checking Collisions:

- In the `check_collisions` method, i iterate over the `collidable_rects` list and check if the player's
hitbox collides with any of the collidable rectangles.

- If a collision is detected, i handle it accordingly (in my case, printing `True`).

5. Movement and Updating Hitbox:

- In the `move` method of the `Player` class, i update the position of the player based on user input
and movement attributes.

- i also update the position of the hitbox to match the player's position.

- By doing this, the hitbox moves along with the player sprite, ensuring accurate collision detection.

Overall, by using a collision map to represent the game level and hitboxes to represent objects within
that level, combined with collision detection logic, im able to implement robust collision handling in my
game. This allows for interactions between the player and the game environment, such as avoiding
obstacles or colliding with enemies.

67
Omar El Tayeb

Image above shows the game printing False when the player does not collide with the walls

68
Omar El Tayeb

Image above shows the game printing True when the player collides with the walls

69
Omar El Tayeb

What is being input Justification of outcome How to solve


tested input
When player Key w,a,s,d Test whether True True is printed N/A
collides with walls is printed when
True is printed Player collides
with walls
When player is Key w,a,s,d Test whether False is printed N/A
not colliding with False is printed
walls False is when the player is
printed not colliding with
the walls
If the position of Key w,a,s,d Test whether the True printed in N/A
the wall collisions position of the the right aereas
are right collisions wall rect
and where they
should be

Prototype 7
In this prototype I've added the part of collision which stops player movement if they hit a wall ,
vinyl's which can be collected and determine player score and also gave the powers something they
do, for example speed increases player speed and phasing which makes it so the player can run
through walls but the player is slower. I changed some the powers as i did not figure out how to
implement the enemies with mini battles.

70
Omar El Tayeb

71
Omar El Tayeb

72
Omar El Tayeb

73
Omar El Tayeb

74
Omar El Tayeb

1. Collision Detection (`check_collisions` method):

- In the `Level` class, the `check_collisions` method is responsible for detecting collisions between the
player and wall_rects.

- The method iterates over each `map_rect` in `collidable_rects`, which represent the walls or
obstacles in the level.

- If a collision is detected (`[Link](map_rect)`), it adjusts the player's position and


prevents them from moving past the wall_rect.

75
Omar El Tayeb

2. Vinyl Collection (`vinyl_collisions` method):

- i've implemented a system to collect vinyl, which serves as a coin or collectible item in the game.

- The method `vinyl_collisions` iterates over each `vinyl_rect` in `collidable_vinyl_rects`.

- When the player collides with a vinyl (`[Link](vinyl_rect)`), it updates the vinyl
count and marks the vinyl as collected.

3. Power Usage (`powers_use` method):

- The `powers_use` method handles the usage of powers by the player.

- It checks if the timer for power usage is active (`[Link]['power use'].active`).

- Depending on the selected power (`self.selected_power`), it adjusts the player's speed or other
attributes accordingly.

4. End Game Condition (`endgame` method):

-i've implemented an end game condition where the player reaches the end of the level.

- The `endgame` method checks if the player's hitbox collides with the winning_rect
(`[Link](winning_rect)`).

- If a collision occurs, the game status is set to 'won', and a winning image is displayed on the screen.

Additionally, ive included the display of the player's score (`vinyl_count`) on the screen using the
`display_vinyl_count` method.

Overall, my implementation effectively manages collisions, collectibles, powers, and end game
conditions to create an engaging gameplay experience.

While creating the power uses i ran into a problem and it was that when speed was activated the
players speed would increase and stay like and not go [Link] or freeze of the code can be seen
below

76
Omar El Tayeb

def powers_use(self):

if [Link]['power use'].active:

while self.selected_power == 'speed':

[Link] = 200 while self.selected_power == 'phasing':

[Link] = 50

self.map_collision = False

print(self.power_being_used)

print([Link])

This was happening because i was using while loops to continuously set the speed attribute based on
the selected power however once a power is selected and the respective while loop is entered, it
continues looping indefinitely because there is no condition to break out of the loop

This causes the program to hang as it gets stuck in an infinite loop freezing the game, and i have fixed
this by using if statements instead which can be seen in the code above

77
Omar El Tayeb

This image shows that when the speed power is activated the players speed also increases

78
Omar El Tayeb

The image above shows that when the phasing power is activated collisions is false allowing the player
to walk through walls but also decreasing player speed by a half

The image above is what is used for vinyls which is the coin for a coin system

79
Omar El Tayeb

The image above is what is shown on screen with the score when the player reaches the end of the
maze which is the other gate which resembles the first

80
Omar El Tayeb

What is being input Justification of outcome How to solve


tested input
Player speed Key e This key will cause Player speed N/A
increases when the selected increases when
power is used power to be power is activated
activated and goes back to
normal
Phasing power Key e This key will cuase Phasing power is N/A
works collisions the selected activated speed
become false and power to be decreases
speed decrease activated collision is false
Vinyl count works any No input but if Vinyl cout N/A
payer collides increases
vinyl count
increases
Player cannot Key w,a,s,d Player cannot go Player cannot I will change
move past walls past the wall move past [Link]
walls ,on some instead to see if
parts of the map that fixes it
player is
teleported to the
other side of the
wall

Interview with Mayoun(stakeholder)


[Link] there anything which makes the game you think could be better?

E. yes i think you either need to add enemies to chase the player or a countdown
[Link] else?
[Link] i think the game is looking pretty good right now
In conclusion i think i will add a countdown and if the player does not reach the end and the
countdown they will lose and I will try to implement this in the next prototype if i can but im
not sure if i can do it in time

Main menu
Main menu this where the chooses the level and and can look at intructions

81
Omar El Tayeb

82
Omar El Tayeb

83
Omar El Tayeb

`Button` class functions:

1. Initialization: The `__init__` method initializes the button with various parameters such as image,
position, text input, font, base color, and hovering color. If no image is provided, it uses the rendered
text as the image.

2. Update: The `update` method blits the button image and text onto the screen.

3. Check for Input: The `checkForInput` method checks if the mouse position is within the button area by
comparing it with the button's rectangle.

4. Change Color: The `changeColor` method changes the button's text color based on whether the
mouse is hovering over it or not.

the `Button` class is integrated into the existing code to create a menu system:

84
Omar El Tayeb

1. Main Menu: In the `main_menu` function, it'll create instances of the `Button` class for the "PLAY,"
"INSTRUCTIONS," and "QUIT" buttons. These buttons will be displayed on the screen and updated in
each iteration of the main menu loop.

2. Play and Instructions Screens: Similarly, in the `play` and `instructions` functions, i created a back
button using the `Button` class. This button allows users to navigate back to the main menu.

3. Event Handling: it will use the `checkForInput` method to detect if the user clicks on any of the
buttons. Depending on which button is clicked, we'll either transition to the corresponding screen (e.g.,
play or instructions) or quit the game.

4. Button Colors: The `changeColor` method will change the color of the button text when the mouse
hovers over it. This provides visual feedback to the user.

By integrating the `Button` class into the existing code, i easily created interactive buttons for navigating
the menu system. The `Button` class handles the rendering, position, and interaction logic, making it
easier to manage and update the menu interface.

Image below is the image for the instructions which might be updated in the future
85
Omar El Tayeb

In this image it shows the main menu also showing that when the player mouse hovers over the options
the text changes colour

The image above is the image for the level selection screen

86
Omar El Tayeb

Prototype 8
In this version of the game i added a countdown ,an end image and sound when the countdown ends
and player does not finish maze and also changed the position of the overlay as asked from maysoun

87
Omar El Tayeb

88
Omar El Tayeb

Here is how i implemented the countdown and losing functionality :

1. Creating the Countdown:

- In the `create_countdown` method of the `Level` class, there's a countdown timer implemented
using the `countdown_amount` variable.

- Initially set to 9000, this variable is decremented by 2 in each game loop iteration
(`self.countdown_amount -= 2`).

- If the game status is 'won', the countdown amount is increased by 2, which effectively slows down
the countdown if the game is won (`self.countdown_amount += 2`).

- If the countdown amount reaches 0 or below, the game status is set to 'lost' (`self.playing_status =
'lost'`).
89
Omar El Tayeb

2. Displaying the Losing Image and Playing Sound:

- In the `show_lost_image` method of the `Level` class, if the game status is 'lost', a losing image is
displayed using `self.display_surface.blit(self.losing_image, (250, 50))`.

- Additionally, a laughing sound is played using `self.lose_sound.play()`.

So, when the countdown reaches 0, the game status changes to 'lost', triggering the display of the losing
image and the playing of the laughing sound. This effectively signals the end of the game.

The image above is the image shown when the player loses

90
Omar El Tayeb

What is being input Justification of outcome How to solve


tested? input
Does the picture N/A N/A The image pops N/A
load up when up when the
timer ends player the
countdown ends
Does the song N/A N/A I got a error I checked and it
play when the saying there was was because the
timer ends no file in that name of the file
location was not written
properly
variables
module Variable name Data type justification
‘pygame’ Pygame is a popular
library for game
development in
Python.
‘sys' The sys module
provides access to
some variables used or
maintained by the
Python interpreter.
‘[Link]’ SCREEN_WIDTH Interger Defines the width of
the game screen in
pixels.
SCREEN_HEIGHT Interger Defines the height of
the game screen in
pixels.
start_pos Vector2 Specifies the starting
([Link]) position of the player
character.
OVERLAY_POSITIONS Dictionary Defines positions for
various overlay
elements on the
screen.
Lvl_1_collision_map List of strings Defines the collision
map for level 1 of the
game.
Lvl_1_grid List of lists Converts the
lvl_1_collision_map
into a grid format.
‘[Link]’ Level Class Manages aspects of the
game level, such as

91
Omar El Tayeb

collisions, item
collection, and
countdown.
CameraGroup Class Extends
[Link]
and adds custom
drawing functionality.
‘[Link]’ Generic Class Represents a generic
sprite in the game.
‘[Link]’ Contains utility
functions for importing
images from a folder.
[Link]’ Player Class Represents the player
character in the game.
‘[Link]’ Timer Class Implements a timer for
the game.
‘[Link]’ Overlay Class Handles displaying
overlays, such as power
icons, on the screen.
‘[Link]’ Game Class Initializes the game and
controls the main game
loop.

Evaluation test table


Menus

What is the test for explanation Expected outcome Requirements met?


When game start When i started the Loading screen appears Unfortunately i was not
loading screen appears loading shoudl appear able to add this feature
until done and player to the menu to the
will have to press enter menu
to proceed
Main menu appears Main menu will appear Main menu screen Yes when the player
when player presses appears loads the game the
back button or after main menu screen
loading screen appears
Red box around Red box behind Red box appears Yes when the player
selected option selected option to behind selected hovers over the
show user what he is options selected option a red
selecting box will appear

92
Omar El Tayeb

User can navigate Using can use the Mouse allows user to Yes when the player
menu mouse to navigate navigate left clicks an option
using left mouse they can navigate the
button menu

Exit button should Exit button on the main Exit button closes game Yes when the player
close the game menu will close after clicks the exit button it
being clicked will make them exit the
game

Display level selector Level selector screen Level selector screen Yes i was able to add a
screen will appear after play appears level selector screen
has been selected in when the player clicks
the main menu play on the main menu

Display gamertag Gamertag editor screen Gamertag editor screen Unfortunately i was not
editor screen will pop up after a appears able to implement this
players selects a level due to time restraints

Back button Back button will take allows Yes there is a back
player back to main button when the player
menu after being clicks play or
clicked instructions to take
them back to main
menu
Display instructions Instrcutions screen will Instructions screen Yes when teh player
pop up after being appears clicks instruction an
selected in the main instruction screen will
menu pop telling the player
how to play
Transition to over Over menu screen will Over screen will appear Yes when the player
menu screen appear after finishing finishes the level by
level or dying either winning or losing
a screen will pop up

controls

What is the test for Input/action outcome Requirements met?


taken/explanation
Player movement The movement keys Characters x and y Yes when the player
are presed”w,a,s,d” coordinates will change player presses those
keys the will move

93
Omar El Tayeb

Using power-up Valid:”e” key is Player will choose Yes when the player
pressed when power- corresponding power- clicks ‘e’ the power will
up is obtained up be used however i
Invalid:”e” key is made i so that the
pressed with no power- player starts with the
up available power because i didn't
have enough time to
add as a collectible
Switching between Valid:”q” key is pressed Valid:will switch Yes the player will
power-up when more than one between power-ups switch power-up when
power-up is available Invalid:nothing will they press q and there
Invalid:”q” is pressed happen is no invalid outcome
with one power-up the player gets the
available powers at the start
Wether the game Valid: gamertag no Valid:game will start No i was not able to
continues when a larger than 10 (playing state) add this due to time
correct gamertag is charcaters Invalid:nothing will restraints
entered Invalid:bigger than 10 happen
or nothing

Wether controls Keys with a function Desired function will Yes all the controls
correspond with will be pressed happen correspond to the right
desired outcome action

Pause feature “P” key is pressed Pause screen will load No i was not able to
up add this to the game
due to time restraints

Rythm battles/sountracks

What is being tested Action taken outcome Requirements met?


Rythm battle screen Initiate battle Rythm battle screen No i was not able to
shows up when pops up add this due to time
initiated restraints

Arrows keys pressed Rhythm icons are Game will continue No i was not able to
work when pressed in pressed when they add this due to time
time reach arrows on screen restraints

94
Omar El Tayeb

Icon come down to the Rhythm icons are Game will continue No i was not able to
on screen in rhythm pressed when add this due to time
with song restraints

player returns to Return winning or Return to main playing No i was not able to
playing screen after losing depending on if state add this due to time
rhythm battle you have 2 lives or not restraints
Right song plays with Song will be in rhythm Right song will play Unfortunately i was not
right icon rhythms with the icons able to implement this
feature due to time
restraints

Songs for game states Every part of teh game Right song is played Yes i have added a song
plays the right song for when the player
loses

Timer and vinyl


What is the test for explanation outcome Requirements met?
Vinyl spawn and Vinyl will spawnwhere Spawn and despawn Yes i was the vinyl
despawn declared in the code when collected spawns the game starts
and despawn when and despawns when
collected the player collides with
them
Background song Background song Song changes No unfortunutley i was
changed when vinyls changes not able to add due to
collected time restraints
Counter increases As more vinyls are Counter increases Yes counter increase
when more vinyls are collected counter when the player
collected increases collects a vinyl
Game ends when timer The game ends when Game ends Yes when the timer
ends the timer ends ends teh game will also
end
Timer goes down Timer goes down as Timer goes down Yes the timer goes
time goes on down when the game
starts
Timer appears Timer appears whne Timer appears Yes the timer appears
the game starts when teh game starts

95
Omar El Tayeb

I have added video evidence for the level


Which shows the player playing using the powers winning and losing and also at the end before
the winning image the collision lag happens

SIGN OFF PROPOSAL


Interview with client
Maysoun
Q. Are you happy with what has been achieve in the initial development?

A. I am happy with what has been achieved, however I am also concerned with some of the
features that haven’t been included in comparison to our agreement.
Q. Would you want the program to be further developed?
A. yes i think the enemies and powers being collected rather than achieved at the start would
of drastically chanegd the game
Signature of approval
Omar El – Tayeb

96
Omar El Tayeb

Evaluation of solution
Menu

• When the game is started the loading screen will appear and be loaded,the player will then have
to click enter the main menu
• On the main menu there will be a number of options consisting of 3 buttons: play , instructions
and exit
• Clicking on the level selector is the most important button as it leads to the game as it’s the only
thing that leads to the main game and level selector which lets the player select a level after
completing the level and also view previous high scores after clicking / selecting a level
• After confirming /selecting the level the player will be asked to select a gamertag/username for
the player which will be displayed on the high scores for the level
• Instructions will include controls and what a the aim of the game is
• There is also an exit button at the bottom right of the screen which will close the game

Play
• This would allow the user to start the game, will be in main menu to enable easy access for
players
• This will lead to level selector and gamertag editor
• Player will be able to leave by pressing “esc” on the keyboard

Level selector
• When this button is clicked on the main menu it will display a screen consisting of 4 levels which
will be labelled as level 1 and so on to level 4
• It will also be displayed which aren’t are playable as there will be an image of the lock on the
image of the level and will be locked until the player completes the level and wins
• They can go back to the main menu by pressing “esc”
• When a player selects a level the current highscores will pop up
• If a player tries to select a locked level nothing happens

Gamertag editor
• This option will appear after selecting a level letting the player change username

97
Omar El Tayeb

Music
• Each game state will have a different soundtrack for example pause menu, loading menu, main
menu, playing and after collecting vinyl's
• The rhythm games will only be 15 secs of the original song
• Each power-up will have a different song corresponding the power-up for example destroying
blocks rager/rock, speed boost=(thinking) or a song with a high bps, and elimanating an enemy
will be slow jazz

Instructions
• When this option is clicked on the main menu a screen with large text and pictures will be
displayed
• This will be an in-depth guide about the game teaching the player how to play and also the
mechanics such as the vinyls
• They will also be a back button which will be the “esc” button on the keyboard

Does solution for main menu meet requirements

• As i had planned when the player loads the game the main menu screen appears
• I have also coded 3 options for the main menu this includes play/level selector,
instructions and exit these
• Using the ‘play’ button only one option appears as i was only able to complete 1 of
the levels
• There is an instruction which has an Indepth instruction on how to complete the
game
• There is also an exit button which can be pressed to take the player back to the
main menu

HAVE ANY FUNCTIONS OR FEATURES OF THE MENU BEEN CHANGED FROM DESIGN?

• I have removed the fact that the player to click level selector after play which
reduces work and time for both game developers(me) and players

98
Omar El Tayeb

WHAT HASN’T BEEN ACHIEVED AND HOW MIGHT IT BE?

• One of my biggest changes was through how the navigation was different to what I
had wanted to have during the designing of my game was the gamertag editor where
the player the player inputs the gamertag and it would be used to show a
leaderboard or the score at the end . I would of just made a box before the level
starts so the player could input and when a suitable username was inputted it
would start the level
• A leaderboard for the players I would have added this just by saving the previous
scores into a normal text file and just imported them when needed
• I was not able to add music for each game state due to time restrictions but i would
of added music the way I added music to when the player loses the level

Levels
• Level needs to be loaded, level graphics need to be loaded into array as well as characters and
enemies.
• Characters need to be loaded and set in the right position.
• Count down from 3 before starting the level.
• vinyl's need to spawn.
• vinyl's score needs to be set to 0.
• the timer needs to be set to 350.
• When count down finishes and level starts timer counts down from 350.
• vinyl score is incremented when a vinyl is collected.

Does solution meet requirements

• The level as designed is drawn to the screen and fits the screen, the level consists of
different walls which will get harder as the levels progress. However I have only
been able to implement 1 level into my game, this game is also lacking a wide
variety of functions that I expected to have in my game. Ideally during design I
wanted around 4 level
• When the players loads into the level he will be loaded at the start which will be a the
gate closest to the top left
• Vinyls spawns when the level loads, timer is set to 900, the vinyl score is incremented
when a vinyl is collected

99
Omar El Tayeb

HAVE ANY FUNCTIONS OR FEATURES BEEN CHANGED FROM THE DESIGN?

• The only thing which i have changed form the design is the amount of the timer which
has been increased to around 7 minutes as i had discovered that 3 minutes only was
too short and the player would of not been able to complete ethe game in the limited
given time even with the power –ups

What hasn’t been achieved and how might it be?


• Other levels, i originally wanted the next levels to start when the player wins the current
level but i was not able to implement this as i was not able to complete the other levels

Power-ups
• There will be a total of 3 powerups in my game which can either be found from eliminating
mobs or be found and will be very similar to the ones in bomber-man will last about 20 seconds
depending on the type of power-up : enhancement/ move
• One type of enhancement will be a speed boost which will increase player movement for 20
seconds as it is an enhancement
• Second power-up will let let the payer eliminate an enemy/skip them amount of time this can
be used will depend on how many the player has collected
• Third power-up will let the player destroy a certain block essentially letting them skip a large
part of the maze or either just an enemy i intend to make this power-up have a large activation
like 1 second because it is the best one however all the other powe-up activation time will be
instant

DOES SOLUTION MEET REQUIREMENTS?

• Yes there is two power-ups one speed and phasing which also last for 20 secs

HAVE ANY FUNCTIONS OR FEATURES BEEN CHANGED FROM THE DESIGN

• I have changed the powers as the fact i could not implement enemies so i just gave the player
powers at the start
• I have also changed the powers to a speed boost and phasing , speed which increases the player
overall speed and phasing will lets the player move through walls but at a cost that the player
speed massively decreases as i think this would of made the game way too easy for the player

WHAT HASN’T BEEN ACHIEVED AND HOW MIGHT IT?

• One part i could not implement is the fact the player achieves the powers through
battling enemies would could of been created by just a statement and if the player wins
against the enemy they would of been awarded a power

100
Omar El Tayeb

Controls
• “a” and “d” will be be used to move the character to the left and right this will be done by using
the players current co-ordinates when i code it for instance clicking “a” will move the players
current x co-ordinates by a certain amount
• “w” and “s” will be used to move the character forward and backward this will be done by using
the players current co-ordinates when i code it, for instance clicking “w” will move the players
current y co-ordinates by a certain amount
• Arrow keys will be used when in the rhythm mini games against enemies this will make it easier
to use as the player can have both hands opn the two set of keys “w,a,s,d” and the arrow keys

DOES SOLUTION MEET REQUIREMENTS?

• Yes everything that i have previously stated has been implemented into the game,
nothing has been changed

Rhythm fights
• Rhythm fights will have 15 seconds segments of songs and the player will have to use the arrow
keys according to the rhythm/song
• Will make it so that when the player clicks the arrow keys when the ryhtm icon reaches a certain
part of the screen and will use the icons y coordinates
• Arrow keys will be used when in the rhythm mini games against enemies this will make it easier
to use as the player can have both hands on the two set of keys “w,a,s,d” and the arrow keys

DOES SOLUTION MEET REQUIREMENTS?

• No rythm fights at all as per requirements thus there is no enemies which is the
reason why i had to change the powers and how they were acquired
HAVE ANY FUNCTIONS OR FEATURES BEEN CHANGED FROM THE DESIGN

• Yes even though the player cannot fight enemies and acquire powers from them
they still have powers
WHAT HASN’T BEEN ACHIEVED AND HOW MIGHT IT?

• I wasnt able to add ryhtm battles i would of added them by adding a rect and
collisions and if teh player collided with the enemy rect the mini game would of
started

Vinyls
• Vinyls will be obtained through the level by eliminating an enemy or collecting them from the
floor and disappear after being collected
101
Omar El Tayeb

• They will also change the background music when collected


• They will also be needed to calculate the high score by multiplying the number collected with
the time elapsed
• There is also going to be counter for the amount of vinyl's collected

DOES SOLUTION MEET REQUIREMENTS?

• Vinyls spawn when teh game starts


• They disappear after being collected by goign aroudn the maze
• There is also a counter for the vinyls

HAVE ANY FUNCTIONS OR FEATURES BEEN CHANGED FROM THE DESIGN

• Instead of been collected from enemies they are collected from the ground
• Instead of multiplying the time left and vinyl count i did not and just left it alone as it would be
more fit for speed runners who are trying to complete the game in the least amount of time

WHAT HASN’T BEEN ACHIEVED AND HOW MIGHT IT?

• I have not added the fact that music changes when the player picks up a vinyl due to due
restraints but would of have been fairly easy to do and would of done it teh same way i added
the losing sound

Collisons
Usability features
• There will be collisions for the walls not allowing the player to go past them

Does solution meet requirements?

• Yes i have been able to implement collisions for eveyrhting in the game end part and
vinyls

102
Omar El Tayeb

Pausing
Usability features
• Maysoun requested that she should be able to to pause the game while playing but i did
not think it would be useful and just make it easier for the player and thought of it as a
hindrance
WHAT HASN’T BEEN ACHIEVED AND HOW MIGHT IT BE?

• If i had time to add this feature i would of just had to pause the timer and player
movement as those are the only things which could change the player score while
pausing
Game ending

Usability features

• The game will end if the player either loses all lives or the timer finishes
• Then a screen will up with the score and option to go back to the main menu or to go
back to the start of the level

Does solution meet requirements?

• When the player either wins or loses the end screen will pop up
• There is no button too reset or return however
What hasn’t been achieved and how might it be?

• I could of implemeted the reset and return button the same way i did and reset would
of been done by just resetting everything

Lives
Usability features

• The lives system is very similar to teh one in bomberman and is something i want to
reuse
• Player lives will start with 3
• Level ends if lives reach 0
• Player loses a life it loses a mini game battle

103
Omar El Tayeb

Does solution meet requirements?:

• No lives system at all as per requirements, thus no 5 lives when the game starts or
gaining or losing of lives.
• Player would of lost a life if they lost a mini game battle
Have any function or feature been changed from the design

• In my current game state there is no lives however the player still loses if teh timer
reaches its end
What hasn’t been added and how might it ?

• Having a lives system could be a normal counter and could be just displayed whilst
the player is playing

Graphics

Requirements:
Graphics will involve cartoonish sprites.
Justification:
While designing the game i thought this would be more suitable for my game as teh gae
requirement is pretty low yet average

And yes i have met these requirements by using images from a cartoon for the losing
screen but also used a sprites sheet which looks like a cartoon / retro game

104
Omar El Tayeb

Maintainence
Bugs that currenly exist within my game and would have been changed
before release
My game currently only has one bug and it is with the collisions

• In certain parts of the map the player when the player collides with a wall they will
be teleported to the other end of the wall
Updates to the game
After my game has been released in order to maintain it then I will need to add updates to
the game which would be the requirements that were not achieved in the original
development of the game.

• One of the main parts of my game that i wanted to implement was the enemies/
mini games , i think this part of the game greatly would impacted the gameplay but
also would of impacted the genre giving the whole game a different feel as they
could have rewarded the player with power-ups . This could have easily be done by
adding a rect for enemies same way as vinyl's
• One other feature is a box at the start of the level for player to input gamertags for
the leaderboard
• One other feature would have been a leaderboard before entering the level
• One other feature i would of like to implement would be the music for each game
state which could make the game more enjoyable
• As per requested by maysoun also a pause feature would be useful but i would
make it hide the current map so that the player could not predict there next moves
to find a more efficient way out
• And lastly the most obvious would be more levels including all the wanted features

Project appendixes

105
Omar El Tayeb

Faker

[Link]

106
Omar El Tayeb

107
Omar El Tayeb

[Link]

108
Omar El Tayeb

[Link]

109
Omar El Tayeb

110
Omar El Tayeb

111
Omar El Tayeb

[Link]

112
Omar El Tayeb

[Link]

113
Omar El Tayeb

114
Omar El Tayeb

[Link]

[Link]

Main menu code

[Link]

115
Omar El Tayeb

116
Omar El Tayeb

[Link]

117
Omar El Tayeb

118

You might also like