SlideShare una empresa de Scribd logo
1 de 46
EVOLUTION EXPLOSION
Background
 Story
  •   Scientist caught in lab explosion
  •   Needs to navigate world looking for lost vials
  •   To obtain vials puzzles need to be completed
  •   All vials make scientist human again
  •   Otherwise stuck as animal
 Chosen because:
  • Experience in the adventure-puzzle genre
  • Related to degree specifications
Introduction
Evolution Explosion is an adventure-puzzle game written in C++ and DirectX for the Personal Computer with a
    Windows operating system. This project was designed to demonstrate the following:

   A complete game that can be played from start to finish
   The coding structure of a complete game
   Multiple handling of different user inputs and selecting the appropriate handler at the beginning of the
    game
   Customisable user options
   Saving and Loading
   Selecting appropriate libraries from both C++ and DirectX to optimise, refine and refactor code
   In-Game sound
   Global Highscores
   Professional deployment of a game for the Windows operating system
   Multiple playable characters, rewards and punishments
   A complete game storyline outlined by a game design document
   Game pre-loading, pre-compiled assets, initialisation, real-time text rendering, error handling and cleanup
   Image manipulations such as rotation and scaling
   Powered by an in-house game engine
   Error handling
   Follows coding rules fully with Hungarian notation
Research and Planning
 Gantt Chart
 Methodology
     • Agile Software Development
   Game Design Document
   Technical Design Document
   Similar Games
   Integrated Developer Environments
   Language and Application Development Interfaces
   Modelling
     • Jackson Structured Diagram
 HCI
     •   Screen kept as simple and ‘clutter free’ as possible.
     •   Error Handling
     •   Consistency
     •   Instructions
Quality Assurance
 Developer Testing (Rapid Test)
  • Black Box Testing
  • Obvious bugs fixed immediately
 User Testing (Stress Testing)
  • White Box Testing
  • Less visible bugs and confusions resolved
 Soak Test
Front End
 Five Buttons
 Two Sub-menus
 Quit confirmation
 Continue game button disabled if no save
  game is found
 Checks if the front end is brought up in-game
  (esc) or from starting a new game
Frontend
Levels
   Five levels
   Graphics selection methods
   Character selection methods
   Scrolling the backgrounds
    • Updating (paging on level 5)
    • Parallax
    • Relative to characters velocity
 Other animations
    • Star rotation
    • Door opening
Level One: Racecourse
Mini-Games Structure
 Four states per mini-game
  •   Introduction
  •   Play
  •   Win
  •   Lose
 Class structure
  • Mini-games factory
  • Completely independent (mini-game only knows
    what it needs to know)
Pseudo Code
enum MinigameStates
{
     intro state   =   0,
     play state    =   1,
     win   state   =   2,
     lose state    =   3
} eMinigameStates;



void Draw()
{
     switch(eMinigameStates)
     {
     case intro state:
             draw introduction screen;
             break;
     case play state:
             draw play screen;
             break;
     case win state:
             draw win screen;
             break;
     case lose state:
             draw lose screen;
             break;
     }
}
Memory Game
Aim: To match all of the cards in the required timeframe.

 16 Cards
 2 Pairs – 8 matches
 Difficulty determines how much time the mini-game
  runs for
 Win condition
   • All cards have been matched
 Lose condition
   • Timer hits zero
Memory Game
Issues Faced
 Initially randomising the cards
  • Create a two-dimensional array with a while loop
    that checks that a position on the x and y axis was
    free. If so, fill it. If not, look again
 Crash when swapping a blank card with an
  image card
  • Changed the checking system to coordinate based
    so if the clicked variables do not match the cards
    position then the card stays blank
Level Two: Stamping Ground
Slider Game
Aim: To rotate all of the slide into their required positions within the
   set timeframe.

 Randomly Rotated
 Each click rotates 90 degrees
 Difficulty determines how much time the mini-game runs for
 Animation in the rotations
 Score only incremented for the first time the slides are rotated to 0
  degrees
 Win Condition
    • All slides are rotated back to 0 degrees
 Lose Condition
    • The timer hits zero
Slider Game
Issues Faced
 Rotating the slides
  • Create a function with a local pointer to a Sprite
  • Get the clicked sprite and convert rotation into
    degrees
  • Compare the current rotation position with the
    desired position
  • Convert position back to radians and update until
    desired position is met
Level Three: Flying High
Sequence Game
Aim: To correctly follow each sequence the computer creates
  within the set timeframe.

 Randomly generated
 Each new round is same as previous with one extra
  sequence added
 Difficulty determines how many rounds there are
 Win Condition
   • All rounds complete
 Lose Conditions
   • Incorrect sequence
   • Timer hits zero
Sequence Game
Issues Faced
 Constantly looping through a case invalidating it
   • Create a NULL case which is called once the read
     marker has been validated
 Last lit tile remaining on in the next round
   • Set up a SetHotspot function that returns a boolean
     true
   • Change that boolean value to ‘false’ once the game
     begins the next round
 Setting the timing of the game
   • Define a constant show frequency variable and divide
     it into the round length
Level Four: Swim Gym
Lights Game
Aim: To switch on all of the lights within the set
  timeframe.

 Lights array toggles all surrounding lights
 Flickering animation and SFX when user does not click
  for extended period of time
 Difficulty determines how many lights there are
 Win Condition
   • All lights turned on
 Lose Condition
   • Timer hits zero
Lights Game
Issues Faced
 Toggling Lights Crash
  • Put in checks so if light is on the edge of the grid,
    do not try to toggle the light on the side of the
    edge that it is on
 Win state check returns true if only one light is
  on
  • Move the ‘for’ loop to an external function and
    assume that the win condition is false until it has
    checked every light and they are all on
Level Five: Vine Climb
Quiz Game
Aim: To answer all of the questions within the set timeframe.

 Questions are randomly set
 The same question is never asked twice in one game
    • Link a boolean variable to the for loops ‘i’ variable
 Difficulty determines how difficult the questions are
    • Three structures; easy, medium, hard
 Timer resets itself after every question answered
 Win Condition
    • All questions answered correctly
 Lose Condition
    • A question is answered incorrectly
    • The timer hits zero
Quiz Game
Issues Faced
 Same questions repeating themselves
  • Created a boolean variable that is set to true
    when a number of an array has been chosen
 Comparing the answers to the correct answer
  • Used ‘strcmp’ to compare the string selected with
    the correct string
     • Returned 0 = correct
     • Otherwise incorrect
Game Structure
 Engine in separate library
 Each animal and mini-game completely
  separate and managed by factories
 Everything initialised while the introduction
  screen is shown so no loading times
 Easily editable
  • Levels / characters can be swapped with one line
    of code
 Game can be restarted from anywhere
Art
 Loaded in by resource
  • Bigger executable
  • No resource errors by users deleting assets
 Can either be a:
  •   Bitmap
  •   Sprite
  •   Static Background Layer
  •   Scrolling Background Layer
Audio
 Loaded in by resource
   •   Bigger executable
   •   No resource errors by users deleting assets
   •   Played asynchronously (new sound overrides previous sound)
   •   As opposed to synchronously (current sound needs to finish
       before new sound can begin)
 Sound effects played by in-game events
   • Card being flipped
   • Correct selection
   • Random number modularised to zero
 Support for background audio with pause and rewind
   • Not implemented as no relevant music found
External Data Handling - Loading
 Use the <sys/stat.h> header file
   •   Call a structure from the header
   •   Use this structure to see if a file exists
   •   File is not opened, just checked
   •   Boolean TRUE or FALSE is returned
 If Save file exists:
   • Enable the ‘Continue Game’ button
   • If clicked, send boolean file requested to Levels
   • Use custom written Load function to iterate through
     each byte in the file and apply it to the correct
     variable
Pseudo Code
structure saveTypes
{
   enum Level currentLevel;
   int        difficulty;
   bool       checkFullscreen;
   int        score;
   bool       miniGameWinStates[4];
} sSaveTypes;

BOOL LoadGame()
{
   open existing file EvoEx.dat;

    Set saveTypes structure to in-game variables;

    loop through each byte in the file and apply that byte to the
    correct variable;

    close the file;
}
External Data Handling - Saving
 Called each time a new level begins
 Check if a save file exists. If not, create one
 Use custom written Save function to write each
  variable value to the file as a byte
 If a variable has not been set then fill the
  corresponding byte with a placeholder value
 Saved data includes:
   •   Current level
   •   If the game should be fullscreen or windowed
   •   The users score (written in 5 bytes)
   •   The win states of each mini-game
Pseudo Code
structure saveTypes
{
   enum Level currentLevel;
   int        difficulty;
   bool       checkFullscreen;
   int        score;
   bool       miniGameWinStates[4];
} sSaveTypes;

BOOL Save()
{
   open existing file EvoEx.dat, if one does not exist,
   create it;

    set in-game variables to saveTypes structure;

    format each variable into bytes (e.g ‘true’ becomes ‘1’);

    write the bytes to file;

    close the file;
}
External Data Handling
           – High Scores
 Uses same method as saving and loading the
  game
 Two extra functions used:
  • Update – Checks if the current score is higher than
    a highscore and places it
  • Draw – Draws the scores to the screen
Debugging
 Breakpoints
  • Show each iteration of a segment of code and
    what each value contains
 Print to screen
  • Use TCHAR to format variables and print them to
    screen
 os stream
  • Prints the results to the Integrated Development
    Environment console
Optimisation
   Images
     •   Different Bit Depths
             •   Main Images – 24-Bit
             •   Secondary Images – 16-Bit
             •   Background Images – 8-Bit
     •   RLE compression used – halves the image size
     •   SetColour function used to change colour of image
     •   Sprite sheet flipping technique used – halves animation size
     •   Sprite class batch processes all images at once so adding extra images produces virtually no extra load time
     •   Loaded in by resource so already compiled
   Audio
     •   Stereo sound for major sounds
     •   Mono for less significant sounds
     •   Looping rather than one long effect
     •   Loaded in by resource so already compiled
   Fonts
     •   Loaded using the Sprite manager (batch processed)
     •   Splits the image into small tiles – one for each character
   Variables
     •   Pointers to memory – less overhead
     •   Use floating point variables as little as possible
     •   Use a vector container to manager all of the images (entity manager)
Future Improvements
Weather System
   • Randomly selected when the game is opened

 Sun
   • Use a light source for the sun
 Rain
   • Randomly create lines that fall from the top to the bottom of the screen
 Snow
   • Randomly create white pixels that randomly ‘sway’ left to right as they fall
   • Or create a small image of a snowdrop and replicate many times
 Wind
   • Play sound effect with volume relative to the wind strength
   • Slow down or speed up the characters speed depending on wind direction
Future Improvements
Multiplayer

 Support already implemented for multiple
  controllers
 Instead of facing a timer, user faces another
  user. Winner gets the score multiplier and the
  next character
Future Improvements
Computer AI

 Add in extra, computer controlled animals
   • Bird character has birds flying in opposite direction and
     avoiding it
      • Already a distance checker so all that is required is a ‘for’ loop to
        check each computer controlled characters distance from user and
        if the animal is to close, to move up or down to avoid it
   • Elephant has baby elephant following it around
      • Scale the original elephant down
      • Check the distance from the big elephant and the facing direction
        and update accordingly
Miscellaneous Improvements
 Audio button in front end options so user can turn off
  in-game sounds
 Create a resource cache to manage all game entities
 Add ambient lighting so transitions can be
  implemented
 Better debug support
 Check memory and CPU requirements
 Add three-dimensional engine support
   • Camera class, lights class and mesh class required
   • Entity manager updated to check if the asset is a mesh or a
     Bitmap
Conclusion
 Fully tested and bug free game that can be played from start to
  finish
 Five different games in one game world
 Demonstrates common game aspects
   •   Saving / Loading
   •   Highscores
   •   Multiple Levels
   •   Multiple input device support
   •   User customisable options
 Industry standard Game Design Documents, Technical Design
  Documents and Asset Lists
 On schedule with Gantt Charts
 Followed methodology as much as ably possible
The End

Más contenido relacionado

Similar a Evolution Explosion - Final Year Project Presentation

Performance, Games, and Distributed Testing in JavaScript
Performance, Games, and Distributed Testing in JavaScriptPerformance, Games, and Distributed Testing in JavaScript
Performance, Games, and Distributed Testing in JavaScriptjeresig
 
GDC 2009 Game Design Improv
GDC 2009 Game Design ImprovGDC 2009 Game Design Improv
GDC 2009 Game Design ImprovSusan Gold
 
Bethesda's Iterative Level Design Process for Skyrim and Fallout 3
Bethesda's Iterative Level Design Process for Skyrim and Fallout 3Bethesda's Iterative Level Design Process for Skyrim and Fallout 3
Bethesda's Iterative Level Design Process for Skyrim and Fallout 3Joel Burgess
 
cpbricks manual
cpbricks manualcpbricks manual
cpbricks manuali i
 
WindowsユーザのためのはじめてのPerlプログラミング
WindowsユーザのためのはじめてのPerlプログラミングWindowsユーザのためのはじめてのPerlプログラミング
WindowsユーザのためのはじめてのPerlプログラミングYosuke HASEGAWA
 
Web 2.0 Performance and Reliability: How to Run Large Web Apps
Web 2.0 Performance and Reliability: How to Run Large Web AppsWeb 2.0 Performance and Reliability: How to Run Large Web Apps
Web 2.0 Performance and Reliability: How to Run Large Web Appsadunne
 
Zombies vs. Humans
Zombies vs. HumansZombies vs. Humans
Zombies vs. HumansJeremy Snook
 
«Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ...
 «Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ... «Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ...
«Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ...Procontent.Ru Magazine
 
Revisiting the Sibling Head in Object Detector
Revisiting the Sibling Head in Object DetectorRevisiting the Sibling Head in Object Detector
Revisiting the Sibling Head in Object DetectorSungchul Kim
 
Candy crush levels
Candy crush levelsCandy crush levels
Candy crush levelsMichael York
 
BSidesDelhi 2018: Headshot - Game Hacking on macOS
BSidesDelhi 2018: Headshot - Game Hacking on macOSBSidesDelhi 2018: Headshot - Game Hacking on macOS
BSidesDelhi 2018: Headshot - Game Hacking on macOSBSides Delhi
 
Game Metrics and Biometrics: The Future of Player Experience Research
Game Metrics and Biometrics: The Future of Player Experience ResearchGame Metrics and Biometrics: The Future of Player Experience Research
Game Metrics and Biometrics: The Future of Player Experience ResearchLennart Nacke
 
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)jjhuff
 

Similar a Evolution Explosion - Final Year Project Presentation (20)

Performance, Games, and Distributed Testing in JavaScript
Performance, Games, and Distributed Testing in JavaScriptPerformance, Games, and Distributed Testing in JavaScript
Performance, Games, and Distributed Testing in JavaScript
 
GDC 2009 Game Design Improv
GDC 2009 Game Design ImprovGDC 2009 Game Design Improv
GDC 2009 Game Design Improv
 
Bethesda's Iterative Level Design Process for Skyrim and Fallout 3
Bethesda's Iterative Level Design Process for Skyrim and Fallout 3Bethesda's Iterative Level Design Process for Skyrim and Fallout 3
Bethesda's Iterative Level Design Process for Skyrim and Fallout 3
 
Game Production
Game ProductionGame Production
Game Production
 
cpbricks manual
cpbricks manualcpbricks manual
cpbricks manual
 
WindowsユーザのためのはじめてのPerlプログラミング
WindowsユーザのためのはじめてのPerlプログラミングWindowsユーザのためのはじめてのPerlプログラミング
WindowsユーザのためのはじめてのPerlプログラミング
 
Pong
PongPong
Pong
 
Web 2.0 Performance and Reliability: How to Run Large Web Apps
Web 2.0 Performance and Reliability: How to Run Large Web AppsWeb 2.0 Performance and Reliability: How to Run Large Web Apps
Web 2.0 Performance and Reliability: How to Run Large Web Apps
 
Zombies vs. Humans
Zombies vs. HumansZombies vs. Humans
Zombies vs. Humans
 
«Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ...
 «Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ... «Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ...
«Sprinlke - how to float in an ocean of games» - Mediocre's presentation at ...
 
Revisiting the Sibling Head in Object Detector
Revisiting the Sibling Head in Object DetectorRevisiting the Sibling Head in Object Detector
Revisiting the Sibling Head in Object Detector
 
Candy crush levels
Candy crush levelsCandy crush levels
Candy crush levels
 
BSidesDelhi 2018: Headshot - Game Hacking on macOS
BSidesDelhi 2018: Headshot - Game Hacking on macOSBSidesDelhi 2018: Headshot - Game Hacking on macOS
BSidesDelhi 2018: Headshot - Game Hacking on macOS
 
Web Wednesday - First 2 Forward Game Show
Web Wednesday - First 2 Forward Game ShowWeb Wednesday - First 2 Forward Game Show
Web Wednesday - First 2 Forward Game Show
 
Connect 4
Connect 4Connect 4
Connect 4
 
Game Metrics and Biometrics: The Future of Player Experience Research
Game Metrics and Biometrics: The Future of Player Experience ResearchGame Metrics and Biometrics: The Future of Player Experience Research
Game Metrics and Biometrics: The Future of Player Experience Research
 
What Can Compilers Do for Us?
What Can Compilers Do for Us?What Can Compilers Do for Us?
What Can Compilers Do for Us?
 
Gamification v3
Gamification v3Gamification v3
Gamification v3
 
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
Inside Picnik: How We Built Picnik (and What We Learned Along the Way)
 
Provenance Games
Provenance GamesProvenance Games
Provenance Games
 

Último

NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...
NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...
NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...Amil baba
 
Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...
Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...
Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...Amil Baba Company
 
NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...
NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...
NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...Amil Baba Dawood bangali
 
Call Girls SG Highway 7397865700 Ridhima Hire Me Full Night
Call Girls SG Highway 7397865700 Ridhima Hire Me Full NightCall Girls SG Highway 7397865700 Ridhima Hire Me Full Night
Call Girls SG Highway 7397865700 Ridhima Hire Me Full Nightssuser7cb4ff
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607dollysharma2066
 
定制(UofT毕业证书)加拿大多伦多大学毕业证成绩单原版一比一
定制(UofT毕业证书)加拿大多伦多大学毕业证成绩单原版一比一定制(UofT毕业证书)加拿大多伦多大学毕业证成绩单原版一比一
定制(UofT毕业证书)加拿大多伦多大学毕业证成绩单原版一比一lvtagr7
 
NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...
NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...
NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...Amil baba
 
(伦敦大学毕业证学位证成绩单-PDF版)
(伦敦大学毕业证学位证成绩单-PDF版)(伦敦大学毕业证学位证成绩单-PDF版)
(伦敦大学毕业证学位证成绩单-PDF版)twfkn8xj
 
Call Girls CG Road 7397865700 Independent Call Girls
Call Girls CG Road 7397865700  Independent Call GirlsCall Girls CG Road 7397865700  Independent Call Girls
Call Girls CG Road 7397865700 Independent Call Girlsssuser7cb4ff
 
8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR
8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR
8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCRdollysharma2066
 
Call Girls Sanand 7397865700 Ridhima Hire Me Full Night
Call Girls Sanand 7397865700 Ridhima Hire Me Full NightCall Girls Sanand 7397865700 Ridhima Hire Me Full Night
Call Girls Sanand 7397865700 Ridhima Hire Me Full Nightssuser7cb4ff
 
Call Girls Near Taurus Sarovar Portico Hotel New Delhi 9873777170
Call Girls Near Taurus Sarovar Portico Hotel New Delhi 9873777170Call Girls Near Taurus Sarovar Portico Hotel New Delhi 9873777170
Call Girls Near Taurus Sarovar Portico Hotel New Delhi 9873777170Sonam Pathan
 
Call Girls Ellis Bridge 7397865700 Independent Call Girls
Call Girls Ellis Bridge 7397865700 Independent Call GirlsCall Girls Ellis Bridge 7397865700 Independent Call Girls
Call Girls Ellis Bridge 7397865700 Independent Call Girlsssuser7cb4ff
 
Udaipur Call Girls 9602870969 Call Girl in Udaipur Rajasthan
Udaipur Call Girls 9602870969 Call Girl in Udaipur RajasthanUdaipur Call Girls 9602870969 Call Girl in Udaipur Rajasthan
Udaipur Call Girls 9602870969 Call Girl in Udaipur RajasthanApsara Of India
 
Cash Payment Contact:- 7028418221 Goa Call Girls Service North Goa Escorts
Cash Payment Contact:- 7028418221 Goa Call Girls Service North Goa EscortsCash Payment Contact:- 7028418221 Goa Call Girls Service North Goa Escorts
Cash Payment Contact:- 7028418221 Goa Call Girls Service North Goa EscortsApsara Of India
 
Call Girls Sabarmati 7397865700 Ridhima Hire Me Full Night
Call Girls Sabarmati 7397865700 Ridhima Hire Me Full NightCall Girls Sabarmati 7397865700 Ridhima Hire Me Full Night
Call Girls Sabarmati 7397865700 Ridhima Hire Me Full Nightssuser7cb4ff
 
Amil Baba in karachi Kala jadu Expert Amil baba Black magic Specialist in Isl...
Amil Baba in karachi Kala jadu Expert Amil baba Black magic Specialist in Isl...Amil Baba in karachi Kala jadu Expert Amil baba Black magic Specialist in Isl...
Amil Baba in karachi Kala jadu Expert Amil baba Black magic Specialist in Isl...Amil Baba Company
 
Call Girls In Moti Bagh (8377877756 )-Genuine Rate Girls Service
Call Girls In Moti Bagh (8377877756 )-Genuine Rate Girls ServiceCall Girls In Moti Bagh (8377877756 )-Genuine Rate Girls Service
Call Girls In Moti Bagh (8377877756 )-Genuine Rate Girls Servicedollysharma2066
 
Taken Pilot Episode Story pitch Document
Taken Pilot Episode Story pitch DocumentTaken Pilot Episode Story pitch Document
Taken Pilot Episode Story pitch Documentf4ssvxpz62
 
Call Girls Near Delhi Pride Hotel New Delhi 9873777170
Call Girls Near Delhi Pride Hotel New Delhi 9873777170Call Girls Near Delhi Pride Hotel New Delhi 9873777170
Call Girls Near Delhi Pride Hotel New Delhi 9873777170Sonam Pathan
 

Último (20)

NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...
NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...
NO1 WorldWide Amil baba in pakistan Amil Baba in Karachi Black Magic Islamaba...
 
Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...
Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...
Amil baba in Pakistan amil baba Karachi amil baba in pakistan amil baba in la...
 
NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...
NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...
NO1 Certified Black magic specialist,Expert in Pakistan Amil Baba kala ilam E...
 
Call Girls SG Highway 7397865700 Ridhima Hire Me Full Night
Call Girls SG Highway 7397865700 Ridhima Hire Me Full NightCall Girls SG Highway 7397865700 Ridhima Hire Me Full Night
Call Girls SG Highway 7397865700 Ridhima Hire Me Full Night
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377087607
 
定制(UofT毕业证书)加拿大多伦多大学毕业证成绩单原版一比一
定制(UofT毕业证书)加拿大多伦多大学毕业证成绩单原版一比一定制(UofT毕业证书)加拿大多伦多大学毕业证成绩单原版一比一
定制(UofT毕业证书)加拿大多伦多大学毕业证成绩单原版一比一
 
NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...
NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...
NO1 Certified Black magic/kala jadu,manpasand shadi in lahore,karachi rawalpi...
 
(伦敦大学毕业证学位证成绩单-PDF版)
(伦敦大学毕业证学位证成绩单-PDF版)(伦敦大学毕业证学位证成绩单-PDF版)
(伦敦大学毕业证学位证成绩单-PDF版)
 
Call Girls CG Road 7397865700 Independent Call Girls
Call Girls CG Road 7397865700  Independent Call GirlsCall Girls CG Road 7397865700  Independent Call Girls
Call Girls CG Road 7397865700 Independent Call Girls
 
8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR
8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR
8377087607 Full Enjoy @24/7 Call Girls in Patel Nagar Delhi NCR
 
Call Girls Sanand 7397865700 Ridhima Hire Me Full Night
Call Girls Sanand 7397865700 Ridhima Hire Me Full NightCall Girls Sanand 7397865700 Ridhima Hire Me Full Night
Call Girls Sanand 7397865700 Ridhima Hire Me Full Night
 
Call Girls Near Taurus Sarovar Portico Hotel New Delhi 9873777170
Call Girls Near Taurus Sarovar Portico Hotel New Delhi 9873777170Call Girls Near Taurus Sarovar Portico Hotel New Delhi 9873777170
Call Girls Near Taurus Sarovar Portico Hotel New Delhi 9873777170
 
Call Girls Ellis Bridge 7397865700 Independent Call Girls
Call Girls Ellis Bridge 7397865700 Independent Call GirlsCall Girls Ellis Bridge 7397865700 Independent Call Girls
Call Girls Ellis Bridge 7397865700 Independent Call Girls
 
Udaipur Call Girls 9602870969 Call Girl in Udaipur Rajasthan
Udaipur Call Girls 9602870969 Call Girl in Udaipur RajasthanUdaipur Call Girls 9602870969 Call Girl in Udaipur Rajasthan
Udaipur Call Girls 9602870969 Call Girl in Udaipur Rajasthan
 
Cash Payment Contact:- 7028418221 Goa Call Girls Service North Goa Escorts
Cash Payment Contact:- 7028418221 Goa Call Girls Service North Goa EscortsCash Payment Contact:- 7028418221 Goa Call Girls Service North Goa Escorts
Cash Payment Contact:- 7028418221 Goa Call Girls Service North Goa Escorts
 
Call Girls Sabarmati 7397865700 Ridhima Hire Me Full Night
Call Girls Sabarmati 7397865700 Ridhima Hire Me Full NightCall Girls Sabarmati 7397865700 Ridhima Hire Me Full Night
Call Girls Sabarmati 7397865700 Ridhima Hire Me Full Night
 
Amil Baba in karachi Kala jadu Expert Amil baba Black magic Specialist in Isl...
Amil Baba in karachi Kala jadu Expert Amil baba Black magic Specialist in Isl...Amil Baba in karachi Kala jadu Expert Amil baba Black magic Specialist in Isl...
Amil Baba in karachi Kala jadu Expert Amil baba Black magic Specialist in Isl...
 
Call Girls In Moti Bagh (8377877756 )-Genuine Rate Girls Service
Call Girls In Moti Bagh (8377877756 )-Genuine Rate Girls ServiceCall Girls In Moti Bagh (8377877756 )-Genuine Rate Girls Service
Call Girls In Moti Bagh (8377877756 )-Genuine Rate Girls Service
 
Taken Pilot Episode Story pitch Document
Taken Pilot Episode Story pitch DocumentTaken Pilot Episode Story pitch Document
Taken Pilot Episode Story pitch Document
 
Call Girls Near Delhi Pride Hotel New Delhi 9873777170
Call Girls Near Delhi Pride Hotel New Delhi 9873777170Call Girls Near Delhi Pride Hotel New Delhi 9873777170
Call Girls Near Delhi Pride Hotel New Delhi 9873777170
 

Evolution Explosion - Final Year Project Presentation

  • 2. Background  Story • Scientist caught in lab explosion • Needs to navigate world looking for lost vials • To obtain vials puzzles need to be completed • All vials make scientist human again • Otherwise stuck as animal  Chosen because: • Experience in the adventure-puzzle genre • Related to degree specifications
  • 3. Introduction Evolution Explosion is an adventure-puzzle game written in C++ and DirectX for the Personal Computer with a Windows operating system. This project was designed to demonstrate the following:  A complete game that can be played from start to finish  The coding structure of a complete game  Multiple handling of different user inputs and selecting the appropriate handler at the beginning of the game  Customisable user options  Saving and Loading  Selecting appropriate libraries from both C++ and DirectX to optimise, refine and refactor code  In-Game sound  Global Highscores  Professional deployment of a game for the Windows operating system  Multiple playable characters, rewards and punishments  A complete game storyline outlined by a game design document  Game pre-loading, pre-compiled assets, initialisation, real-time text rendering, error handling and cleanup  Image manipulations such as rotation and scaling  Powered by an in-house game engine  Error handling  Follows coding rules fully with Hungarian notation
  • 4. Research and Planning  Gantt Chart  Methodology • Agile Software Development  Game Design Document  Technical Design Document  Similar Games  Integrated Developer Environments  Language and Application Development Interfaces  Modelling • Jackson Structured Diagram  HCI • Screen kept as simple and ‘clutter free’ as possible. • Error Handling • Consistency • Instructions
  • 5. Quality Assurance  Developer Testing (Rapid Test) • Black Box Testing • Obvious bugs fixed immediately  User Testing (Stress Testing) • White Box Testing • Less visible bugs and confusions resolved  Soak Test
  • 6. Front End  Five Buttons  Two Sub-menus  Quit confirmation  Continue game button disabled if no save game is found  Checks if the front end is brought up in-game (esc) or from starting a new game
  • 8. Levels  Five levels  Graphics selection methods  Character selection methods  Scrolling the backgrounds • Updating (paging on level 5) • Parallax • Relative to characters velocity  Other animations • Star rotation • Door opening
  • 10. Mini-Games Structure  Four states per mini-game • Introduction • Play • Win • Lose  Class structure • Mini-games factory • Completely independent (mini-game only knows what it needs to know)
  • 11. Pseudo Code enum MinigameStates { intro state = 0, play state = 1, win state = 2, lose state = 3 } eMinigameStates; void Draw() { switch(eMinigameStates) { case intro state: draw introduction screen; break; case play state: draw play screen; break; case win state: draw win screen; break; case lose state: draw lose screen; break; } }
  • 12. Memory Game Aim: To match all of the cards in the required timeframe.  16 Cards  2 Pairs – 8 matches  Difficulty determines how much time the mini-game runs for  Win condition • All cards have been matched  Lose condition • Timer hits zero
  • 14. Issues Faced  Initially randomising the cards • Create a two-dimensional array with a while loop that checks that a position on the x and y axis was free. If so, fill it. If not, look again  Crash when swapping a blank card with an image card • Changed the checking system to coordinate based so if the clicked variables do not match the cards position then the card stays blank
  • 16. Slider Game Aim: To rotate all of the slide into their required positions within the set timeframe.  Randomly Rotated  Each click rotates 90 degrees  Difficulty determines how much time the mini-game runs for  Animation in the rotations  Score only incremented for the first time the slides are rotated to 0 degrees  Win Condition • All slides are rotated back to 0 degrees  Lose Condition • The timer hits zero
  • 18. Issues Faced  Rotating the slides • Create a function with a local pointer to a Sprite • Get the clicked sprite and convert rotation into degrees • Compare the current rotation position with the desired position • Convert position back to radians and update until desired position is met
  • 20. Sequence Game Aim: To correctly follow each sequence the computer creates within the set timeframe.  Randomly generated  Each new round is same as previous with one extra sequence added  Difficulty determines how many rounds there are  Win Condition • All rounds complete  Lose Conditions • Incorrect sequence • Timer hits zero
  • 22. Issues Faced  Constantly looping through a case invalidating it • Create a NULL case which is called once the read marker has been validated  Last lit tile remaining on in the next round • Set up a SetHotspot function that returns a boolean true • Change that boolean value to ‘false’ once the game begins the next round  Setting the timing of the game • Define a constant show frequency variable and divide it into the round length
  • 24. Lights Game Aim: To switch on all of the lights within the set timeframe.  Lights array toggles all surrounding lights  Flickering animation and SFX when user does not click for extended period of time  Difficulty determines how many lights there are  Win Condition • All lights turned on  Lose Condition • Timer hits zero
  • 26. Issues Faced  Toggling Lights Crash • Put in checks so if light is on the edge of the grid, do not try to toggle the light on the side of the edge that it is on  Win state check returns true if only one light is on • Move the ‘for’ loop to an external function and assume that the win condition is false until it has checked every light and they are all on
  • 28. Quiz Game Aim: To answer all of the questions within the set timeframe.  Questions are randomly set  The same question is never asked twice in one game • Link a boolean variable to the for loops ‘i’ variable  Difficulty determines how difficult the questions are • Three structures; easy, medium, hard  Timer resets itself after every question answered  Win Condition • All questions answered correctly  Lose Condition • A question is answered incorrectly • The timer hits zero
  • 30. Issues Faced  Same questions repeating themselves • Created a boolean variable that is set to true when a number of an array has been chosen  Comparing the answers to the correct answer • Used ‘strcmp’ to compare the string selected with the correct string • Returned 0 = correct • Otherwise incorrect
  • 31. Game Structure  Engine in separate library  Each animal and mini-game completely separate and managed by factories  Everything initialised while the introduction screen is shown so no loading times  Easily editable • Levels / characters can be swapped with one line of code  Game can be restarted from anywhere
  • 32. Art  Loaded in by resource • Bigger executable • No resource errors by users deleting assets  Can either be a: • Bitmap • Sprite • Static Background Layer • Scrolling Background Layer
  • 33. Audio  Loaded in by resource • Bigger executable • No resource errors by users deleting assets • Played asynchronously (new sound overrides previous sound) • As opposed to synchronously (current sound needs to finish before new sound can begin)  Sound effects played by in-game events • Card being flipped • Correct selection • Random number modularised to zero  Support for background audio with pause and rewind • Not implemented as no relevant music found
  • 34. External Data Handling - Loading  Use the <sys/stat.h> header file • Call a structure from the header • Use this structure to see if a file exists • File is not opened, just checked • Boolean TRUE or FALSE is returned  If Save file exists: • Enable the ‘Continue Game’ button • If clicked, send boolean file requested to Levels • Use custom written Load function to iterate through each byte in the file and apply it to the correct variable
  • 35. Pseudo Code structure saveTypes { enum Level currentLevel; int difficulty; bool checkFullscreen; int score; bool miniGameWinStates[4]; } sSaveTypes; BOOL LoadGame() { open existing file EvoEx.dat; Set saveTypes structure to in-game variables; loop through each byte in the file and apply that byte to the correct variable; close the file; }
  • 36. External Data Handling - Saving  Called each time a new level begins  Check if a save file exists. If not, create one  Use custom written Save function to write each variable value to the file as a byte  If a variable has not been set then fill the corresponding byte with a placeholder value  Saved data includes: • Current level • If the game should be fullscreen or windowed • The users score (written in 5 bytes) • The win states of each mini-game
  • 37. Pseudo Code structure saveTypes { enum Level currentLevel; int difficulty; bool checkFullscreen; int score; bool miniGameWinStates[4]; } sSaveTypes; BOOL Save() { open existing file EvoEx.dat, if one does not exist, create it; set in-game variables to saveTypes structure; format each variable into bytes (e.g ‘true’ becomes ‘1’); write the bytes to file; close the file; }
  • 38. External Data Handling – High Scores  Uses same method as saving and loading the game  Two extra functions used: • Update – Checks if the current score is higher than a highscore and places it • Draw – Draws the scores to the screen
  • 39. Debugging  Breakpoints • Show each iteration of a segment of code and what each value contains  Print to screen • Use TCHAR to format variables and print them to screen  os stream • Prints the results to the Integrated Development Environment console
  • 40. Optimisation  Images • Different Bit Depths • Main Images – 24-Bit • Secondary Images – 16-Bit • Background Images – 8-Bit • RLE compression used – halves the image size • SetColour function used to change colour of image • Sprite sheet flipping technique used – halves animation size • Sprite class batch processes all images at once so adding extra images produces virtually no extra load time • Loaded in by resource so already compiled  Audio • Stereo sound for major sounds • Mono for less significant sounds • Looping rather than one long effect • Loaded in by resource so already compiled  Fonts • Loaded using the Sprite manager (batch processed) • Splits the image into small tiles – one for each character  Variables • Pointers to memory – less overhead • Use floating point variables as little as possible • Use a vector container to manager all of the images (entity manager)
  • 41. Future Improvements Weather System • Randomly selected when the game is opened  Sun • Use a light source for the sun  Rain • Randomly create lines that fall from the top to the bottom of the screen  Snow • Randomly create white pixels that randomly ‘sway’ left to right as they fall • Or create a small image of a snowdrop and replicate many times  Wind • Play sound effect with volume relative to the wind strength • Slow down or speed up the characters speed depending on wind direction
  • 42. Future Improvements Multiplayer  Support already implemented for multiple controllers  Instead of facing a timer, user faces another user. Winner gets the score multiplier and the next character
  • 43. Future Improvements Computer AI  Add in extra, computer controlled animals • Bird character has birds flying in opposite direction and avoiding it • Already a distance checker so all that is required is a ‘for’ loop to check each computer controlled characters distance from user and if the animal is to close, to move up or down to avoid it • Elephant has baby elephant following it around • Scale the original elephant down • Check the distance from the big elephant and the facing direction and update accordingly
  • 44. Miscellaneous Improvements  Audio button in front end options so user can turn off in-game sounds  Create a resource cache to manage all game entities  Add ambient lighting so transitions can be implemented  Better debug support  Check memory and CPU requirements  Add three-dimensional engine support • Camera class, lights class and mesh class required • Entity manager updated to check if the asset is a mesh or a Bitmap
  • 45. Conclusion  Fully tested and bug free game that can be played from start to finish  Five different games in one game world  Demonstrates common game aspects • Saving / Loading • Highscores • Multiple Levels • Multiple input device support • User customisable options  Industry standard Game Design Documents, Technical Design Documents and Asset Lists  On schedule with Gantt Charts  Followed methodology as much as ably possible