Example
Example
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)
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..
2
Omar El Tayeb
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
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.
Topic development
9
Omar El Tayeb
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 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
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
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
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
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
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
Requirements Justification
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
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.
14
Omar El Tayeb
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
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.
‘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
18
Omar El Tayeb
19
Omar El Tayeb
Main Menu
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
• 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
25
Omar El Tayeb
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
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
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.
playing
36
Omar El Tayeb
p invalid
Customizable gamertag
menu
37
Omar El Tayeb
Instructions
pause
navigation
38
Omar El Tayeb
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
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
Transition to over menu screen Over menu screen will appear Over screen will appear
after finishing level or dying
controls
40
Omar El Tayeb
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
Rythm battles/sountracks
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
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
class Player([Link]):
def __init__(self,pos,group):
super().__init__(group)
43
Omar El Tayeb
self.import_assets()
[Link] = 'down'
self.frame_index = 0
[Link] = [Link][[Link]][self.frame_index]
• 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
def import_assets(self):
[Link] = {'dead':[],'down':[],'left':[],'right':[],'up':[]}
44
Omar El Tayeb
[Link][animation] = import_folder(full_path)
def animate(self,dt):
self.frame_index += 4 *dt
self.frame_index = 0
[Link] = [Link][[Link]][int(self.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
def move(self,dt):
if [Link]() >0:
[Link] = [Link]()
[Link] = [Link].x
[Link] = [Link].y
def update(self,dt):
[Link]()
[Link](dt)
46
Omar El Tayeb
[Link](dt)
[Link]
import pygame
• Imports the walk function from the os module and the pygame module.
def import_folder(path):
surface_list= []
image_surf = [Link](full_path).convert_alpha()
surface_list.append(image_surf)
return surface_list
This function facilitates the loading of multiple images from a specified folder path.
[Link]
47
Omar El Tayeb
#screen
SCREEN_WIDTH = 1280
SCREEN_HEIGHT=720
TILE_SIZE = 32
#overlay positions
OVERLAY_POSITIONS ={
LAYERS = {
'floor': 0,
'wall1': 1,
'wall2': 2,
'wall2': 3,
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.
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.
52
Omar El Tayeb
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.
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.
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
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
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.
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 overlay for the speed power
The image above shows the overlay for the phasing power
62
Omar El Tayeb
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
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.
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
- 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.
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.
- 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
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
- 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.
75
Omar El Tayeb
- i've implemented a system to collect vinyl, which serves as a coin or collectible item in the game.
- When the player collides with a vinyl (`[Link](vinyl_rect)`), it updates the vinyl
count and marks the vinyl as collected.
- Depending on the selected power (`self.selected_power`), it adjusts the player's speed or other
attributes accordingly.
-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:
[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
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
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
- 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
- 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))`.
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
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.
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
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
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
95
Omar El Tayeb
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
• 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
• 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.
• 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
• 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
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
• Yes there is two power-ups one speed and phasing which also last for 20 secs
• 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
• 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
• 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
• 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
• 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
• 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
• 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
• 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
• 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]
[Link]
115
Omar El Tayeb
116
Omar El Tayeb
[Link]
117
Omar El Tayeb
118