Zaragoza wood tile producer, CEVISAMA exhibitor, China producer
nsqrd.files.wordpress.com · Web viewDuring the production phase, we will meet in Final Project...
Transcript of nsqrd.files.wordpress.com · Web viewDuring the production phase, we will meet in Final Project...
Production DocumentOperation Blast
Bryan Solero [email protected] Santoro [email protected] Weeks [email protected] Guzman [email protected] Farnie [email protected] Herner [email protected] Ghosalkar [email protected] Hernandez [email protected] Helmink [email protected] Kilmas [email protected] Zhu Chen [email protected]
Table of ContentsGame Charter……………………………………………………………………………1Interactivity……………………………………………………………………………….6Detailed Design Breakdown………………………………………………………….13Characters……………………………………………………………………………...19Weapons………………………………………………………………………………..31Power-ups……………………………………………………………………………...44Levels and Maps………………………………………………………………………49Combat System………………………………………………………………………..57Game Logic, Algorithms, and Rules…………………………………………………58Reference of Key Elements…………………………………………………………..67Art and Production Design……………………………………………………………69Technical Design Overview…………………………………………………………..84Milestone Deliverables………………………………………………………………..85Development Environment…………………………………………………………...86System Architecture…………………………………………………………………...87System Architecture Flow Chart……………………………………………………..88System Architecture Context Model Description…………………………………...89Module Breakdowns…………………………………………………………………..90FX Manager…………………………………………………………………………….91Memory Map……………………………………………………………………………93Code Review Plan……………………………………………………………………..94Integration Plan………………………………………………………………………...95Testing Plans…………………………………………………………………………..96Game Folder Hierarchy…...................................................................................97
Game Charter
Vision Statement
Our vision as team N Squared is to create a game that will serve to display the astonishing talents and skills in the areas of programming and art through the development of a creative and enjoyable game. To meet this goal, we plan to create a game that is innovative and of exemplary quality. Furthermore we will implement quality assurance, quality control, and frequent debugging to accomplish our goals as well as creating a feasible schedule and holding to it as well as we can. Through dedication and hard work we plan to achieve our goal and present a game worthy of presenting during Final Project Presentation and to GP Staff.
Meeting Schedule
The schedule will take into account for all the team including Internal Producer(s) during Month One of Final Project having a second class, Month Two of Final Project all art and programmers have a second class, online or on campus. Month Three of Final Project Internal Producer(s) have a second class and Month Four of Final Project all art team members have a second class.
During the pre-production phase, which includes development of the design document and technical document, we will meet at school in one of the Final Project rooms, Open Labs or available room designated by the Internal Producer(s) between four to eight hours six days a week. Task will be assigned at the beginning of the work day and will be submitted for review by the determined deadline. The whole team will put forth full effort during the meetings.
During the production phase, we will meet in Final Project rooms, Open Labs or available room designated by the Internal Producer(s). If no rooms are available we will meet outside of school at a team member's house (TBD). We will meet eight hours a day at least six days a week. At least three times a week the leads will go to school to test the game build on the test machine. Sunday will be left free for all team members to go home and rest up unless the Internal Producer(s) deems it necessary to meet, or ask a team member to complete an assignment before the next meeting on Monday. All meetings will be presided over by one or more of the Internal Producer(s) and the team are expected to maintain a high level of productivity and efficiency during the meeting period.
Hours Worked Per Week
1
Team N Squared will be meeting for the next five months, six days a week. The hours per week will be at least 48 hours, but will not exceed 60 hours. If the Internal Producer(s) deems working on the seventh day the team is expected to work 5 hours, max 8 hours. Teams are required to meet certain deadlines during the week; if a certain team member is behind he/she will be taking that assignment home and try to complete it before the next meeting. All team members are required to take a lunch/dinner break for one hour before the fifth hour of the work day. All team members can freely take small breaks on their own discretion between 10 to 15 minutes.
Emergency Plans When Things Go Wrong
In the event of a team member becoming too ill to attend a meeting, the team member is to notify the Internal Producer(s) promptly by email, Skype, or a phone call. The team member is to maintain communication with the team though Skype and work from home. If the team member is too ill to work, the Internal Producer(s) will reassign the team member's tasks, if necessary.
In the event of a team lead becoming ill to attend a meeting, they will follow the above procedures. If the team lead is too ill to work at all, the Internal Producer(s) will either appoint an acting team lead or direct team member to report to the other team leads.
If the work location must be changed due to any circumstances, the Internal Producer(s) will procure a new location and inform all team members of the change.
In the event of a lag in the schedule, the Internal Producer(s) will notify the team that we have entered crunch time and will be meeting on the weekend, or for longer hours during the day.
Any team issue which occur during the project(ex. Lack of cohesiveness, miscommunication, subpar performance for any reason, etc.), the Internal Producer(s) will be notified by email or either in person and action will be taken by the Internal Producer(s) or the team leads to rectify the situation by sending documentation on what happened to the GP staff and External Producer(EP) and Art Director(AD).
Any weather related issues such as flood or a hurricane will be dealt with by the Internal Producer(s). If a new location must be found, the Internal Producer(s) will find it and notify the team. If the meeting must be rescheduled, the Internal Producer(s) will pick a new meeting time and notify the team as well as adjust the schedule accordingly.
2
In the event the Internal Producer(s) had an emergency or fallen ill, they will follow the above procedures. If the Internal Producer(s) is too ill to work at all, the team leads will take over assigning task and keep constant communication with the Internal Producer(s). Decision-Making Process
Any team decisions that need to be made for the game will be done in team meetings. Discussion during these meetings will be limited to 20 minutes per discussion point. If the team cannot come to a decision after 20 minutes of discussion, the Internal Producer(s) will make the final decision.
Any team member is allowed to dispute this final decision either in a subsequent meeting or by submitting a change request form to the team leads or the Internal Producer(s). It is up to each team member to voice their opinion on any given topic and they waive their right to complain constructively if they choose not to speak during a team meeting.
Rules of Conduct
When any team member doesn’t follow Rules of Conduct the Internal Producer(s) are subject to follow the disciplinary actions listed below in order of warnings:
1. For a first offense of a minor rule, such as tardiness or creating a distraction, the team member will be notified by the Internal Producer of the infraction and asked to curb that behavior. A repeat offense of a minor rule will be treated as a first major offense.
2. For the first major offense, the team member will be notified by the Internal Producer and be given a warning, and the action conducted will be documented and saved for future involvement.
3. If the team member infracts upon a major rule for a second time, he will be pulled outside with both Internal Producers notifying him of the ongoing problem; a document will also be written up and sent to the GP staff to advise them of a potential situation.
4. If the team member continues to infract upon the established rules for a third time, another document will be written up and sent to the GP staff requesting a meeting be held with the offending team member.
All Team members are expected to show respect to one another. Fighting, negative sarcasm, insulting is not to be tolerated and will be dealt with via appropriate channels. Any critiques given to any team member are to be constructive only and the person giving the critique should have a possible solution ready when making the critique.
3
All team members are expected to show up on time to all meetings. If a team member is late they must have a valid excuse. With or without an excuse, the tardiness will be documented. If a team member knows ahead of time that they will be late, they must notify the Internal Producer(s) promptly.
All team members are expected to behave in a professional manner. Any issues related to anything outside the workplace are to be kept outside the workplace. If the issue is dire, the team member may approach the Internal Producer(s) for guidance and/or conflict resolution with the situation. Any grievances among the team member are to be kept civil during the work day. There will be no sabotaging of other team member's work or property; this will not be tolerated and will be dealt with via appropriate channels.
All team members are expected to work in a professional environment, not using YouTube unless it's work related, not playing games unless one is on break or lunch/dinner break, not surfing web sites that are not work related, idle chit-chat only if it involves work related topics, and not having loud music that will agitate all team members . All team members are not to abuse small or lunch/dinner breaks; this will not be tolerated and will be documented as tardiness or two hours out.
Team Roles
These are the roles that students in Final Project will have to take part in. Furthermore, given the team’s size, each student will have two or more roles in order to complete all tasks and complete the ultimate objective of creating a game.
Internal Producer: Santoro, Dominic and Solero, Bryan. Leads the team in each meeting, schedules project tasks and meeting times, manages all project risks and constraints, and maintains the morale and work ethic of each team member in order to lead them to success.
ArtistsArt Lead: Klimas, Andrew. Assist the Internal Producers in leadership and maintenance of the art team and relate information given by the Internal Producers and GP Staff to the artists.Environmental Artist: Herner, Michael. Model all 3D assets needed to lay out each level of the game.Technical Artist: Chen, Hao Zhu. Develop all rigs, scripts, and GUI for 3D assets that need to be animated in the game.Animator: Chen, Hao Zhu. Animate all 3D assets that need to be animated in the game.Character Artist: Chen, Hao Zhu. Create all 3D characters that will be featured in the game.
4
UI Artist: Herner, Michael. Design and create all menus and HUD assets for the game to help the user be aware of and navigate through the game world.Effects Artist: Klimas, Andrew. Create all visual effects, weapon projectiles, and skybox assets for the game.Concept Artist: Chen, Hao Zhu; Herner, Michael; and Klimas, Andrew. Create all 2D conceptual art for the game to act as a guideline for how game’s art elements will look and feel.
ProgrammersTech Lead: Farnie, TJ. Assist the Internal Producers in leadership and maintenance of the development team and relate information given by the Internal Producers and GP Staff to the programmers.AI Programmer: Weeks, Camron “Dante”. Generate AI Logic for all not-player-controlled (NPC) assets such as enemies and remove any bugs or errors found during creation.Graphics/Rendering Programmer: Ghosalkar, Kahran. Create a functioning import and export system for all art assets and remove any bugs or errors found during creation.Tech Engineer: Ghosalkar, Kahran. Create a functional game engine for the entire game to run on, create collision boxes for all 3D art assets found in the game world that can be collided with, and remove any bugs or errors found during creation.Scripting Programmer: Farnie, TJ. Create all scripting events, gameplay triggers, and events, and remove any bugs or errors found during creation.UI Programmer: Guzman, Nicholas. Relay all statistical information to the user in real time via the HUD, and remove any bugs or errors found during creation.Animation Programmer: Helmink, Tristan. Create an exporter for all animations and remove any bugs or errors found during creation.Special FX Programmer: Ghosalkar, Kahran. Create all effects and shaders in the game world and remove any bugs or errors found during creation.Gameplay Programmer: Hernandez, Alex. Create a front-end audiovisual feedback system for the game including a camera system and audio manager.
5
Interactivity Summary
Operation BLAST is a competitive sidescroller with tons of shoot 'em up action. In the game, the player runs and guns through hordes of enemies while evading their attacks. To add to the action, players will split up and compete in their own separate planes, trying to best each other's scores.
Goal
The goal of the game is to best your opponent's score and complete the level. As you kill enemies, your score increases. Faster killing also allows for a score multiplier to build up, further increasing the points awarded for killing an enemy.
Defeat the end boss
Interface
1. Score - The current amount of points the player has received. This number will change when certain actions have been completed (See Reference of Key Elements pg.62). At pre-determined point amounts; 100, 500, 1000, 5000, 10000 etc. the score will render twice as large to alert the player of their accomplishment and fade away after a second.
6
2. Lives – Shows the number of lives the player has. When a player has died, if they have a life they may use it to return to the game where they left off, with 3 second invulnerability. This will use one of the lives. When the player uses up their 3 lives without successfully completing the level they trigger the lose condition.
3. Health Bar - One bar represents 1 hit for the player. When hit, one bar will be destroyed via an explosion. And the player flashes for 2 seconds with invulnerability.
4. Weapon – Displays the current weapon of the player. This image only changes when the player receives a pickup or the current pick up expires. Also displayed is the current amount of ammunition for the current weapon.
5. Player Identifier/Combo Multiplier - Shows the current multiplier of the specified player. It is shown under the player identifier symbol. When the multiplier changes a larger number flashes on the screen and scales down as it sets to its location, this process will only take a second. See (Reference of Key Elements pg.62).
6. Ultimate Bar - Applies to pickups. It is a way for players to clear the screen yet also attempt to hinder the other player. A bar underneath the player’s health will fill up over time at a rate of 2% per second times the current multiplier, when the bar fills up it will flash to indicate that an ultimate is ready to be used. If a player has one of the 4 obtainable weapons they may activate the attack that will do damage and if the other player is hit by the attack they will lose half their multiplier and will be affected by an affect.
MenusThe Main Menu presents a conveyer belt that carries enemy robots
to the foreground on the right side of the screen. On the torso of the robot will be the selectable options. On the bottom left the title of the menu will be displayed. A selection option will be a cursor looking like a bullet on the left side of the selectable option, when the player presses up or down the bullet moves in the appropriate direction, signifying the highlighted option; the audio associated with this action is a single bullet being fired lasting 1 second. Any additional information pertaining to the highlighted option explaining what the option is will be displayed in the bottom left under the title of the menu. When an option has been selected bullets will fill the foremost “enemy” option screen, the sound associated with this is a machine gun bullets hitting a metal surface, lasting for 1.5 seconds. The enemy falls forward and under the viewable screen, at the same time as the enemy is falling off screen the conveyer belt moves and the next enemy is brought to the foreground presenting the selected menu, a 2 second transition. This same procedure will be used for all menu transitions
7
including the back option, with the only exception being the Start option. When the Start option has been selected, the same sound effect of a machine gun will play. Explosions will begin to fill the entire screen, accompanied by explosion sounds. After the screen has been completely filled, the explosions will fade revealing the character select screen.
Main Menu
High Score Table
8
Options Menu
9
Control Menu
Character Select
10
Pause Menu
Controls
11
Combat Controls Keyboard Player 1
A - Move Left D – Move Right S - Crouch or Prone W – Jump Q - Aim Up-Left E - Aim Up-Right Z- Aim Down Left C – Aim Down Right F- Alt Fire Space – Fire 1 – Ultimate
Player 2
I - Jump J - Left L - Right K - Crouch or Prone U - Aim Up-Left O - Aim Up-Right M – Aim Down-Left ; - Aim Down-Right N – Fire H – Alt Fire 8 - Ultimate
Controller Left Joystick - Movement Right Joystick - Aiming Right Trigger – Shoot Left Trigger – Alt Fire A Button - Jump X Button - Ultimate
Interactive Rhythm
A typical play session should last 6-8 minutes. A level of the game should last 6-8 minutes as well. Play is broken down to three phases that either the player and AI or two players will experience: light wave, heavy wave, and rest period. The light wave is a wave of enemies that will contain 3-6 enemies of both types (melee and ranged) on the screen at once. A heavy wave contains 6-10 enemies of both types (melee and ranged) on the screen at once. A light wave of enemies should take 10 seconds to kill, while a heavy wave will take 20 seconds. Single enemies should take the player 2 seconds to kill. Depending on the weapon, groups of enemies would take the same time to kill due to AoE
12
damage. The rest period will be an area of the level that does not spawn enemies, allowing the player reprieve or the opportunity to clean up any remaining enemies.
At pre-designated parts in the level, the players will split up and take
separate paths on different planes. Immediately after this, the players will enter a shooting gallery area. Here the players will compete to see who can clear their screen of enemies faster. After this section, the rhythm of light, heavy, and rest will resume until the players hit a pre-designated merge point, and rejoin each other on the same plane. . As players progress further into the game the spawn timer between enemies will decrease, which will result in an increase of enemies. Enemy health will also increase as the players get further into the level.
The rhythm then resumes in this manner until the end of the level is
reached. Here the player will fight the end boss
The waves of enemies will spawn from both the front and back of the screen. Both enemy types will spawn, and while it will be random, it will always be in the ratio of 2:1 melee to ranged.
How the Player Marks Progress
Players progress by moving right on the screen. The player’s score or multiplier increases as the player gets more kills thus showing progression. As the multiplier increases, enemies are worth more points. A player regresses as the player loses lives and their score is reduced.
13
Detailed Design Breakdown
Front End Flow Chart
Game Flow Chart
14
Glossary of Terms
Characters Player characters
Attributes Height – Height of the character Width – Width of the character Speed – Rate at which the character moves Jump Height – Height the character may jump Health – The amount of damage the player can take
before dying Lives – The amount of times that the player can lose all
their health before the game ends Charge – The amount of charge the character has.
When full, the player may use their ultimate move if they have collected a weapon
Behaviors Run - Move at the Speed of the character Jump – Move vertically until the player reaches the
Jump Height. While jumping, the player is still free to move laterally in either direction at Speed.
Shoot – Fire the currently equipped weapon Go Prone – Lie on the ground with the weapon pointed
forward Aim – Align the weapon forward, 45 degrees up, 45
degrees down, straight up, or straight down Collect Pickup – When colliding with a weapon pickup,
receive the associated weapon type that the pickup represents
Enemies Melee
Attributes Height – Height of the enemy Width – Width of the enemy Speed – Rate at which the enemy moves Health – Amount of damage the enemy can sustain
before dying Jump Height – Height the enemy may jump Damage – Amount that the enemy’s attack will
remove from the player’s life bar Behaviors
Run – Move horizontally at the Speed of the enemy Explode – Suicide attack when colliding with player
15
Jump – Move vertically until the enemy reaches the Jump Height. The enemy will continue in the direction they were previously moving at Speed
Range Attributes
Height – Height of the enemy Width – Width of the enemy Health – Amount of damage the enemy can sustain
before dying Projectile Speed – How quickly the enemy’s bullet
will travel Damage – Amount that the enemy’s attack will
remove from the player’s life bar Behaviors
Shoot – Fire a projectile at the targeted player Flying
Attributes Height – Height of the enemy Width – Width of the enemy Health – Amount of damage the enemy can
sustain Speed – Rate at which the enemy moves
Behaviors Shoot- Fire a projectile at the targeted player Move – Move at Speed Projectile Speed – How quickly the enemy’s
bullet will travel Damage – Amount that the enemy’s attack will
remove from the player’s life bar Boss
Attributes Phase – The current phase the boss is in, three
different Rocket Speed – Speed the projectile travels at Debris Speed – Speed the projectile falls down the
screen Smart Laser Speed – Speed the projectile travels
at Smart Laser Pause – Length of time the smart
laser pauses before resuming movement towards player
Laser Speed – Speed the projectile travels at Stomp Speed – Velocity that the enemy stomps
their foot down at Smash Speed – Velocity that the enemy smashes
their fist at
16
Health – Damage the enemy can take before dying Height – Height of the enemy Width – Width of the enemy Speed – Rate at which the enemy moves Damage – Amount that the enemy’s attack will
remove from the player’s life bar Behaviors
Change Phase – The enemy changes phases, granting access to a new set of moves as well as a full life bar
Shoot Rocket – Fire a rocket at the player at Rocket Speed
Shoot Smart Laser – Fire a laser at the player at Smart Laser Speed, which will track the player for 3 seconds, then delay for Smart Laser Pause, then head towards the player again. This process repeats 4 times
Stomp – The enemy thrusts his foot down at the player at Stomp Speed
Drop Debris – The enemy drops items from the top of the screen down at the player, which fall at Debris Speed. The items will start at the far left, then the center, then the right. At this point it will go back to center then far left, creating a back and forth wave
Smash – The enemy raises his fist and smashes it at the player at Smash Speed
Shoot Laser – The enemy fires a projectile at the player that travels at Laser Speed
Move – Move at Speed towards the player Weapons
Attributes Rate of Fire – How quickly the weapon fires per second Alt Rate of Fire – How quickly the weapon can use its
alternate firing method Range – Distance that the weapon will be able to deal
damage Alt Range – Distance that the weapon’s alternate fire will be
able to deal damage Damage – Amount of damage the weapon deals Alt Damage – Amount of damage the weapon’s alternate fire
deals Ammo – Amount of ammunition the player starts with after
pick up of weapon Alt Ammo Usage – Amount of ammunition the weapon’s
alternate fire consumes
17
Projectile Speed – How fast a bullet moves across the screen
Alt Projectile Speed – How fast the alternate fire moves across the screen
Kill Box – The collision box of a weapon Alt Kill Box – The collision box of the alternate fire Alt Fire – The secondary fire of the weapon. Differs for each
weapon AoE – Area that the weapon may damage enemies with one
shot Ultimate – A powerful move, able to kill multiple enemies at
once and lower the other player’s combo multiplier should they be hit. Differs for each weapon
Ultimate Effect – The effect that the ultimate will apply to the other player, should they be hit by the ultimate
Behaviors Shoot – The process of firing a bullet that travels at Projectile
Speed Fire Alternate – The process of firing the weapon’s alternate
fire Fire Ultimate – The process of firing the weapon’s ultimate
move Objects
Crate Attributes
Position – Where the crate starts on the screen Contents – Weapon pickup the crate contains Height – Height of the crate Width – Width of the crate
Behaviors Explode – Explodes when the player shoots it, dropping
a weapon pickup Floating Crate
Attributes Position – Where the crate starts on the screen Contents – Weapon pickup the crate contains Fall Speed – How quickly the crate floats downward Move Speed – How quickly the crate moves left and
right Height – Height of the crate Width – Width of the crate
Behaviors Move – The crate moving horizontally at Move Speed Fall – The crate dropping vertically at Fall Speed Land – The crate colliding with the ground or a platform,
becoming a normal crate
18
Explode – Explodes when the player shoots it, dropping a weapon pickup
Flamethrower Pickup Attributes
Position – Location of the pickup Lifetime – The time until the pickup despawns Height – Height of the pickup Width – Width of the pickup
Behaviors Collect – Giving the player the associated weapon
Rocket Launcher Pickup Attributes
Position – Location of the pickup Lifetime – The time until the pickup despawns Height – Height of the pickup Width – Width of the pickup
Behaviors Collect – Giving the player the associated weapon
Shotgun Pickup Attributes
Position – Location of the pickup Lifetime – The time until the pickup despawns Height – Height of the pickup Width – Width of the pickup
Behaviors Collect – Giving the player the associated weapon
Lightning Pickup Attributes
Position – Location of the pickup Lifetime – The time until the pickup despawns Height – Height of the pickup Width – Width of the pickup
Behaviors Collect – Giving the player the associated weapon
Explosive Barrel Behaviors
Explode – After being shot twice, explode Levels
Behaviors Plane Swap – Forcing the players to separate on to different paths,
one in the foreground, one in the background
19
Characters
Name/IDo Barron (The Bulk)
Brief Description
o Hot headed war veteran, who loves to see things blow up Visual Design
o Exaggerated proportions, leg length is the same head height; torso slightly longer than legs, also the widest part of the body. On top, Barron, wears an unfastened Kevlar helmet. He has high cheek bones and a wide jaw, with black mutton chops that frame his cleft chin. Barron is not wearing a shirt displaying the definition of his muscles. Stretching from the upper right pectoral to the bottom right pectoral stretches an old battle scar. Hanging from his left shoulder, laying across his chest he has an ammo strap fully loaded. On his left arm he wears a rust colored armband around his bicep. On both hands he has black fingerless gloves. Barron wears ACU Trousers, black combat boots. The trousers are accompanied by a black belt. The right trouser leg is tucked in; the left trouser leg is not. Around his left thigh Barron wears a grey holster with a black strap.
Behaviors
o Runo Jump
20
o Shooto Go Proneo Aimo Collect Pickup
Attributes
o Height: 2 unitso Width: 1 unito Speed: 3 units/secondo Jump Height: 3 unitso Health: 3o Lives: 3
Name/IDo Claire (Sassy Lass)
Brief Description
o Rogue militant, enjoys long walks on the beach Visual Design
o Clair has a round face with black hair framing the right side of her face. Her eyes are elongated and larger proportioned with high arching eyebrows. Claire has a band-aid on her right cheek. On top of her head she is wearing a green beret with a single gold armed forces crest. Claire is wearing a white fitted tank top with, a black ammo strap across her left shoulder. She has a slim torso, and exaggerated hips. A white bandana is tied around her left bicep. She is wearing blue cargo pants tucked into
21
black combat boots. There is a wide black belt holding her pants up, with a utility holsters attached. Around her left leg she carries a knife.
Behaviors
o Runo Jumpo Shooto Go Proneo Aimo Collect Pickup
Attributes
o Height: 2 unitso Width: 1 unito Speed: 3 units/secondo Jump Height: 3 unitso Health: 3o Lives: 3
22
Name/IDo Weebos Striker
Brief Description
o Primary soldier of the robot army Visual Design
o Weebos Striker is a white humanoid cyborg. Every section of the Weebos Striker is a capsule with one side wider than the other, progressing outward from the torso. The head is smooth with a single red circular lens centered where the face would be. The torso is split in two sections; from the head the torso is wide then becomes thin about two thirds of the torso, this section sits on a sphere. Where the hand would be are three exaggerated claw shaped blades.
Behaviors
o Runo Explodeo Jump
Attributes
o Height: 1.5 unitso Width: 1 unito Speed: 2 units/secondo Health: 2o Jump Height: 3 units
23
o Damage: 1
Name/ID
o Weebos Assaulter Brief Description
o Support soldier of the robot army Visual Design
o Weebos Assaulter is similar to the Weebos Striker. The color of the Assaulter is Bright red, and the proportions of the capsule sections are slightly more exaggerated than the Striker. Instead of claw shaped blades for hands, the Assaulter only has wide wrists. There is a yellow ring around the wrist.
Behaviors
o Shooto Explode
Attributeso Height: 2 unitso Width: 1 unito Health: 1o Projectile Speed: 4 units per secondo Damage: 1
24
Name/IDWeebos Helios
Brief Descriptiono Aerial unit of the robot army
Visual Designo Silver Egg shaped robot with propeller blades extending from the top.
There is a cross section hatch on the bottom.
Behaviorso Shooto Explodeo Move
Attributeso Height: 1 unito Width: 1 unito Health: 1o Speed: 3 units per secondo Projectile Speed: 4 units per secondo Damage: 1
25
Name/ID
o Weebos Ultimus Brief Description
o General and leader of the robot army Visual Design
o The Weebos Ultimus is broken into three parts, first the head; second the torso and arms, and the third part being the hips and legs. The face of the Ultimus has a single red lens in the center. The torso appears in three parts, a thin frame with large shoulder plates that overlap other metal plates appearing staggered and angular, rounding out just above the hips. The biceps are sleek and then, while the forearms are thicker and angular.
26
The hands are two thirds the length of the forearm and are sharp claws. Below the torso begins the hips, this connection is exposed and very mechanical looking with overlapping sheets of metal, the thigh is half as long as the calf of the Ultimus. Beginning at the knee the calf bells out until the foot. The foot is slightly wider than the widest part of the leg and thins as it approaches the heel. The foot is slightly longer than the diameter of the base of the leg.
Boss Phases
27
28
29
Behaviorso Change Phaseo Shoot Rocketo Shoot Smart Lasero Stompo Drop Debriso Smasho Shoot Lasero Move
Attributeso Phase: 1 through 3o Rocket Speed: 2 units per secondo Debris Speed: 3 units per secondo Smart Laser Speed: 4 units per secondo Smart Laser Pause: 1 secondo Laser Speed: 10 units per secondo Stomp Speed: 4 units per secondo Smash Speed: 3 units per secondo Health: 80 per phaseo Height: 7.5 unitso Width: 10 unitso Speed: 5 units per secondo Damage: 1
30
31
Weapons
Name/IDMachine Gun
Brief DescriptionA rapid fire automatic gun, with unlimited ammo
Visual DesignThe female character holds an Mp5. The male character holds a M60.Well used metal shows the wear and tear of constant use.
Behaviorso Shoot
Attributeso Damage - 2o Rate of Fire – 3 per secondo Range –16 unitso Ammo – Unlimitedo Kill Box – See graph diagram below concept arto AoE – Noneo Projectile Speed – 4 units per second
TransitionsWhen a player picks up another weapon, this weapon will disappear and the new weapon will flash into the characters hands with its appropriate sound effect. If that weapon runs out of ammo that will disappear out of player’s hands and the machine gun will return to their hands with Sfx_CockingGun.* .
32
Machine Gun Kill Box
1 Box = 1 Unit
33
Name/IDFlamethrower
Brief DescriptionA short-range weapon that deals incredible AoE damage.
Visual DesignEither character can hold this backpack fueled M2A1-7
Behaviorso Shooto Fire Alternateo Fire Ultimate
Attributeso Damage – 2o Alt Damage - 2o Rate of Fire – 10 per secondo Alt Rate of Fire – 1 per secondo Range – 6 unitso Alt Range – 16 unitso Ammo – 100o Alt Ammo Use – 20 o Killbox – See graph diagram below concept arto Alt KillBox – See graph diagram below concept arto AoE – Attack passes through all enemies, dealing equal damage to all
affected targets and lighting them on fire. o Alt Fire - Creates a large fire ball that moves across the screeno Projectile Speed – 6 units per secondo Alt Projectile Speed – 3 units per secondo Ultimate – Two waves of flame spawn at the player, each traveling
towards opposing edges of the screen. The waves follow the ground, destroying all enemies in their path, and reducing the other players’ score multiplier should he be hit
o Ultimate Effect – The player will be slowed, having their movement speed cut in half, and their rate of fire cut in half
Transitionso When a player picks up the flamethrower, the weapon in the player’s
hands will disappear and this one will flash into the characters hands with its Sfx_flamethrower.* sound effect. If this weapon runs out of ammo that will disappear out of player’s hands and the machine gun will return to their hands with Sfx_CockingGun.* . When using the ultimate fire it will switch the skybox to something flashy to catch the player’s eye for a quick second.
34
Flame Thrower Hit Box
35
1 Box = 1 Unit
Alternate Fire Kill Box
1 Box = 1 Unit Name/IDShotgun
Brief DescriptionA short range multi-shot, stock pump weapon
Visual DesignMilitary M-4.
Behaviorso Shooto Fire Alternateo Fire Ultimate
Attributeso Damage – 5o Alt Damage - 5o Rate of Fire – 1.3 times per secondo Alt Rate of Fire – 1.3 times per secondo Range – 16 unitso Alt Range – 16 unitso Ammo – 25
36
o Alt Ammo Usage - 5o Killbox – See graph diagram below concept arto Alt Killbox – See graph diagram below concept arto AoE – 5 bullets arc out from the gun, expanding until they go off screen.
The bullets will start at the barrel of the gun in a tight formation, widening the arc as they travel further away from the gun
o Alt Fire – Fires a slug that will pierce through several enemies.o Projectile Speed – 3 units per secondo Alt Projectile Speed – 6 units per secondo Ultimate – The bullets of the shotgun do not dissipate, but instead bounce
around the screen, reflecting the vector when proper collision occurs, for the next 5 seconds. They will destroy any enemy they collide with, and reduce the other players’ score multiplier by 2 should he be hit
o Ultimate Effect – The player will have their left and right lateral movement controls switched
TransitionsWhen a player picks up the shotgun, the weapon in the player’s hands will disappear and this one will flash into the characters hands with its Sfx_GunPump.*. If this weapon runs out of ammo that will disappear out of player’s hands and the machine gun will return to their hands with Sfx_CockingGun.* . When using the ultimate fire it will switch the skybox to something flashy to catch the player’s eye for a quick second.
Shotgun Hitbox
37
1 Box = 1 Unit
Shotgun Projectile Spread
1 Box = 1 Unit
Alternate Fire Kill Box
38
1 Box = 1 Unit
Name/IDLightning Gun
Brief DescriptionAn auto target weapon, low in damage, and range, but arcing over multiple enemies in rapid succession with a max of 3 enemies. The arc will collide with one enemy and checks a perimeter of 2 units. An enemy in the perimeter will be hit and then pass on to the next enemy. The lightning gun fires off a bolt of lightning, when the bolt hits an enemy, it will be an electricity line from the player to the enemy. Once it arcs to the next target, the line will be reset and will be between the two targets only. This process will repeat. The lightning arc will only ever be between two points on the screen at once.
Visual DesignThe lightning gun is a futuristic weapon with simple a form. The handle is smooth black, with no protection around the trigger. A trigger that when pulled retracts inside the handle. The barrel is twice as long as the grip is long; the grip extends at an angle causing the grip to extend behind the length of the barrel. Protruding out of the barrel is a metal rod the same length as the barrel. Near the end of the rod it begins to expand to become wider, creating a flat circular surface. A short tiered cone sits on the flat surface.
Behaviorso Shooto Fire Alternateo Fire Ultimate
39
Attributeso Damage – 1.5, 1.0, 0.5o Alt Damage - 2o Rate of Fire – 2 per secondo Alt Rate of Fire – 10 per secondo Range – 8 units with consecutive hits increasing range up to a max of 14o Alt Range – 8 unitso Ammo – 75o Alt Ammo Usage - 15o Killbox – See graph diagram below concept arto Alt Killbox - See graph diagram below concept arto AoE – After making contact with the initial target, the bullet will find the
next closest enemy within a 4x5 unit area centered around the target. It does this twice for a total of 3 potential hits. Each jump decreases the damage.
o Alt Fire – Fires a sustained lightning bolt that functions like the flamethrower’s primary fire
o Projectile Speed – 6 units per secondo Alt Projectile Speed – 14 units per secondo Ultimate – A single bolt of lightning strikes the ground at a designated
spot. The spot will be shown as a blue-lit area, and after a delay of 0.5 seconds, the lightning will strike. A new bolt will strike immediately. This behavior is repeated for the next 5 seconds, with the bolts becoming quicker and quicker. Each bolt will lower the time between the next bolt by 0.05 seconds. They will destroy any enemy they collide with, and reduce the other players’ score multiplier by 2 should he be hit
o Ultimate Effect – The player is grounded, and can’t jump for 4 seconds
TransitionsWhen a player picks up the Lightning Gun, the weapon in the player’s hands will disappear and this one will flash into the characters hands with its Sfx_Lightning.*. If this weapon runs out of ammo that will disappear out of player’s hands and the machine gun will return to their hands with Sfx_CockingGun.*. When using the ultimate fire it will switch the skybox to something flashy to catch the player’s eye for a quick second.
40
Lightning Gun Killbox
1 Box = 1 Unit
Lightning Gun Ricochet Effect
41
1 Box = 1 Unit
Alternate Fire Kill Box
1 Box = 1 Unit
Name/IDRocket Launcher
42
Brief DescriptionA low ammo weapon that fires a low moving projectile that explodes, highly damaging a large area
Visual DesignRPG-7
Behaviorso Shooto Fire Alternateo Fire Ultimate
Attributeso Damage – 5o Alt Damage - 5o Rate of Fire – 1 per secondo Alt Rate of Fire – 1 per secondo Range – 16 unitso Alt Range – 16 unitso Ammo – 5o Alt Ammo Usage - 2o Killbox – See graph diagram below concept arto AoE – After making contact with a target, the rocket explodes in a blast
radius of a 6x7 unit centered on the point of impact. This deals the full 5 damage to all enemies within the blast radius.
o Alt Fire – Fires the rocket in a curved fashiono Projectile Speed – 3 units per secondo Alt Projectile Speed – 3 units per secondo Ultimate – An air raid is called in. The entire ground except for one 1 unit
wide will be covered in bright red X markers. After a delay of 2 seconds, bombs will be dropped on the marked spots. They will destroy any enemy they collide with, and reduce the other players’ score multiplier by 2 should he be hit
o Ultimate Effect – For the next 5 seconds, any kills made by the player have their point value given to the other player
TransitionsWhen a player picks up the Lightning Gun, the weapon in the player’s hands will disappear and this one will flash into the characters hands with its Sfx_Explosion#.*. If this weapon runs out of ammo that will disappear out of player’s hands and the machine gun will return to their hands with Sfx_CockingGun.*. When using the ultimate fire it will switch the skybox to something flashy to catch the player’s eye for a quick second.
43
44
Rocket Launcher Kill Box
1 Box = 1 Unit
Rocket Launcher Explosion Box
45
1 Box = 1 Unit
Alternate Fire Kill Box
1 Box = 1 Unit
Power-ups
Note: All Pickups have a lifetime of 10 seconds. When the pickups lifetime is at 5 sec will begin to flash. The pickups will flash at a rate of 1 second, meaning they will be visible for 1 second, then invisible for 1 second, alternating until they despawn.
Note: All Crates exist until destroyed by player. Crate content will be specific to the area in level that they are spawned. The contents will all be predetermined. (see Map & Intensity Timeline pg.xx).
Name/IDCrate
Brief DescriptionA crate that is placed in the level, which when destroyed will produce a power up
Visual DesignA wooden crate
Behaviorso Explode
46
Attributeso Position – On ground plane, coming in from the screen on the right.
Determined by level placement.o Contents – Random weapon pickup of four possible oneso Height – 2 unitso Width – 2 units
Name/IDFloating Crate
Brief DescriptionA crate that floats to the ground (and becomes stationary) from the top of the screen using a parachute. As the crate falls, it will move at a low lateral speed, so that it travels in a diagonal towards the ground. This crate will not be collidable with anything except for the level and bullets.
Visual DesignWooden crate with parachute
Behaviorso Moveo Fallo Lando Explode
Attributeso Position – Top of screen, centeredo Contents – Random weapon pickup of four possible oneso Fall Speed – 2 units per secondo Move Speed – 2 units per secondo Height – 2 unitso Width – 2 units
Name/IDFlamethrower Pickup
Brief DescriptionWhen this pickup collides with a player that player gets the Flamethrower weapon at full ammo (see Combat System pg.47)
Visual DesignThe Flamethrower pickup is a 3-D rectangle with a red “F” on the front. There is a fire particle effect emitting from it.
Behaviors
47
o Collect
Attributeso Position – Location of spawning crateo Lifetime – 10 secondso Height – 1 unitso Width – 1 units
Name/IDRocket Launcher Pickup
Brief DescriptionWhen this pickup collides with a player that player gets the Rocket Launcher weapon at full ammo(see Combat System pg.47)
Visual DesignThe Rocket Launcher pickup is a 3-D rectangle with a white “R” on the front. There is particle effect of explosions emitting from it.
Behaviorso Collect
Attributeso Position – Location of spawning crateo Lifetime – 10 secondso Height – 1 unitso Width – 1 units
48
Name/IDShotgun Pickup
Brief DescriptionWhen this pickup collides with a player that player gets the Shotgun weapon at full ammo
Visual DesignThe Shotgun pickup is a 3-D rectangle with a yellow “S” on the front. There is particle effect of shotgun shells emitting from it.
Behaviorso Collide and be picked up by player
Attributeso Position/Orientationo Lifetime
Name/IDLightning Pickup
Brief DescriptionWhen this pickup collides with a player that player gets the Lightning weapon at full ammos
Visual DesignThe Lightning pickup is a 3-D rectangle with a blue “L” on the front. There is particle effect of sparks emitting from it.
Behaviorso Collide and be picked up by player
Attributeso Position/Orientationo Lifetime
49
50
Levels and Maps
Name/ID
Beach\Jungle\City Level
Goal
Get more points than your companion at the end of the level, by gaining points, by killing minions and gaining point multipliers for multiple kills in a short period.
Level Travel
RunJump1 second to traverse screen-height3 seconds to traverse screen-length
Scale
12 Units Height672 Units Width
Environmental Interactions - Behaviors
Exploding BarrelsSpawning MinionsPlane SplitsShooting GalleriesRest PeriodsBoss Fight
Attributes
Spawn Points
Ambient Environmental Aspects / Objects in the Level
PlatformsExploding Barrels
Time
2-3 minutes to traverse level unimpeded by combat8-10 minutes to traverse level with combat, shooting galleries and rest periods
51
Map & Intensity TimelineKey
SG: Shooting Gallery/Split (Not the first one) Light: Light ActionHeavy: Heavy ActionRest: Period of clean up
Start ---->
52
53
54
Level Walkthrough – Verbal MapTutorialo Enter The level
Player(s) will have full health, and have the machine gun (infinite ammo)
o The Player(s) will be temporarily "trapped" in a Shooting Gallery They will learn movement controls
Move left Move right Jump Prone Down Jump (through platforms) And the fact that they can stand on platforms
They will learn firing controls Angular aim
Up Left
55
Down Left Up Right Down Right
Shoot They will see Crates, power ups, and Explosive Barrels which they
mist destroy/collect to continue to the right Crates will drop power ups that when the player touches will
change their current weapon These power ups will have an ammo counter so we will
introduce the Weapon Type & Ammo Remaining visuals These will give them points and we will introduce the Score &
Multiplier visuals This will also demonstrate the Continue Forward visual If a single player is playing an AI companion will accompany
them, and act as the second player. The AI will not complete the Tutorial area For you
o The Player(s) will walk to the right They will be introduced to melee enemies
These will run to and damage the player and we will introduce the Health Bar & Lives visual
The player, using their weapon, may damage the melee enemies and gain points
The Player(s) will be introduced to ranged enemies These will fire bullets that travel across the screen toward the
player, that they can avoid The player, using their weapon, may damage the ranged
enemies and gain points The Player(s) will be introduced to flying enemies
These will fire bullets down that travel down the screen toward the player, that they must avoid
The player, using their weapon, may damage the flying enemies and gain points
o The Players Will encounter Light Resistance Melee, Ranged, and Flying enemies
o The players Will Experience Heavy Resistanceo The number of enemies that appear in a zone is described in Interactive
Rhythmo The Player(s) will continue to the Right while enemies continue to be
spawned and try to damage the playero The Player(s) will come to an area, where they must clear any previously
spawned enemies before continuing, A Rest Areao The Player(s) avatars will pose and say a line, and the two players will be
moved to separate planes, A Plane Split One Player cannot directly affect the others plane, while on split planes
o The Player(s) will be temporarily "trapped" in a Shooting Gallery, each on their own planes
56
The a certain number of enemies will be spawned When either side is cleared the other side is cleared The first person to clear their side gets a large point bonus Once both sides are cleared the Player(s) may continue to the right
o The players will continue on the separate planes Meeting Light and Heavy resistance
o The Player(s), on their separate planes, will encounter a Rest Period where the must clear any enemies that have been previously spawned
o When no enemies remain The Player(s) avatars will pose and then will be moved to the same plane again, A Plane Merge
Repeated Zoneso The Player(s), continuing to the right will encounter varying patterns of Light,
Heavy, Plane Split sections, Shooting Galleries, and Rest Periods as displayed in the Intensity Timeline
Bosso The Player(s) (If they have survived) will come to the Bosso This is a Shooting Galleryo The players will be riding motorcycles
This is only a visual(motorcycle model) and somatic(motor sound effects) change as game play will remain the same
o The Boss has 3 Phases Each phase has its own health bar
The Death of one triggers the next phase Phase 1
The Player(s) must avoid Falling Debris Debris (Enemy Spawned Bullets of large size, and slow
movement) Crates (Mixed in with the falling Debris)
The Player(s) must avoid the Feet of the Boss Stomping (Enemy Spawned Explosions of large size)
The Player(s) must damage the Legs of the Boss Phase 2
The Player(s) must avoid Debris in the road by jumping Debris (Enemy Spawned Bullets of large size, and faster
movement) Crates (Mixed in with the road debris)
The Player(s) must avoid Eye Lasers from the Boss's Eyes Eye Blasts (Enemy Spawned Explosions of large size)
The Player(s) must avoid the Hands of the boss Smashing (Enemy Spawned Explosions of large size)
The Player(s) must damage the Torso of the Boss Phase 3
Crates fall from sky The Player(s) must avoid Missiles from the Bosses Head
Missiles (Enemy Spawned Bullets of large size, that spawn explosions on collision)
57
The Player(s) must avoid Eye Lasers from the Boss's Eyes Eye Blasts (Enemy Spawned Explosions of large size)
The Players(s) must Avoid Smart Lasers Smart Lasers (Similar to the Lighting Gun's discharge, but
each lasers lives longer and only spawns another when they die)
The Player(s) must damage the bosses head When the final phase is defeated the Game goes to the Game
Score screenDeath, Dying, End Conditiono When a player is damaged they lose a portion of healtho When they have no health they dieo When a player dies they lose a life and re-spawn near their death positiono When the player loses all their lives they remain out of the combato When both players lose all lives(or the single player loses all lives) the game
goes to the Game Score Screen
58
Combat System1. Player combat is all ranged
Attacking is handled by pressing the fire or alt. fire button (see Controls pg.8)
Five weapon types Default machine gun Shotgun Lightning gun Flamethrower Rocket launcher
All weapons aside from default have limited ammo All weapons aside from default have an alternate fire All weapons aside from default have an ultimate Weapon pickups received via floating crates or stationary creates
dropped by an off-screen plane or placed in the level Aiming is in one of the 8 cardinal directions
Up Down Left Right Up-Right Up-Left Down-Right Down-Left
59
Game Logic, Algorithms, and Rules
Interaction Component Matrix
Chart does not account for ownership of bullet or explosion
Part 1 Player Platform Crate Power Up
Player NA NA NA Collides/ Changes players weapon (2)
Platform Collides (1) NA Collides (9) Collides (9)
Crate NA NA Collides (9) NA
Power Up Collides/Picks Up/Changes held weapon (2)
NA NA NA
Weapon Holds NA NA Changes (2)
Bullet Creates (3) Conditionally stops (7)
Collides/Stops/Takes damage (10)
NA
Explosive Barrel
NA NA Collides (9) NA
Explosion NA Conditionally blocks (8)
NA NA
Melee Enemies
Collide/Takes Damage (4)
NA NA NA
Ranged Enemies
Collide/Take Damage (4)
NA NA NA
Flying Enemies
Collide/Takes Damage (4)
NA NA NA
Triggers Trigger (Position) (5)
NA Trigger (Death) Trigger (Pick Up)
60
Boss Collides/Takes Damage (6)
NA NA NA
Part 2 Weapon Bullet Explosive Barrel Explosion
Player Is Held by Damages (11) NA Damages (12)
Platform NA Conditionally Collides (7)
Collides (9) NA
Crate NA Damages (11) Collides (9) NA
Power Up Changed by (2)
NA NA NA
Weapon NA Produced by(3) NA NA
Bullet Produces (3)
TBD Collides/Stops/Takes damage (10)
NA
Explosive Barrel
NA Damages (11) Collides (9) Damages (12)
Explosion NA NA Produces (8) NA
Melee Enemies
NA Damages (11) NA Damages (12)
Ranged Enemies
Is Held by Damages (11) NA Damages (12)
Flying Enemies
NA Damages (11) Damages (12)
Triggers NA NA Trigger (Death) NA
Boss NA Damages (11) TBD Damages (12)
61
Part 3 Melee Enemies
Ranged Enemies
Flying Enemies
Triggers
Boss
Player
Collide/Damage(4)
Collides/Damages (4)
Collides/Damages (4)
NA Damages (4)
Platform
Collides(13) Collides (13) NA NA NA
Crate NA NA NA Produce
NA
Power Up
NA NA NA Produce
NA
Weapon
NA Holds Holds NA TBD
Bullet Collides/Stops/Takes damage (11)
Collides/Stops/Takes damage(11)
Collides/Stops/Takes damage(11)
Produce
Collides/Stops/Take damage (11)
Explosive Barrel
NA NA NA Produce
NA
Explosion
Collides/ Takes Damage (12)
Collides/ Takes Damage (12)
Collides/Takes Damage (12)
Produce
Collides/ Takes Damage/TBD(Produce?)
Melee Enemies
Collides (13) Collides (13) Collides (13) Produce
TBD (Produce?)
Ranged Enemies
Collides (13) Collides (13) Collides (13) Produce
TBD (Produce?)
Flying Enemies
Collides (13) Collides (13) Collides (13) Produce
TBD (Produce?)
Triggers
TBD(Trigger(Death)?)
TBD(Trigger(Death)?)
TBD(Trigger(Death)?)
NA TBD(Trigger(Death)?)
62
Boss TBD TBD TBD Produce
TBD (Produce?)
Interaction Matrix Assets Required Keyo 1)
Sounds Sfx_footstep.*,
Animations Anim_Male.* & Anim_Female.*
Prone Run Jump Stand/Idle
o 2) Specific Weapon Transitions are described in the Weapon
Description Sound
“Time to Rock-IT” – Sfx_pUp_Rockit.* “I Call Shotgun” – Stx_pUp_Shotgun.* “Shocking” – Sfx_pUp_Shocking.* “I’m On Fire” – Sfx_pUp_Fire.* “Awwww” – Sfx_pUp_Basic.*
o 3) Sounds
Sfx_machinegun.* Sfx_shelldrop.* Sfx_shotgun.* Sfx_electricity.* Sfx_flamethrower.*
Particles Muzzle_D.* Muzzle_smk_D.* Smoke_D.* Explo_D.* BulletMG_D.* BulletSG_D.* Rocket_D.* Flame_D.* Elect_D.*
Animations Anim_Male.* & Anim_Female.*
Shooto 4)
Sounds Sfx_female.*
63
Sfx_male.* Sfx_robot.*
Animations Anim_Enem.*
Take damage Anim_Helio.*
Take damage Anim_Male.* & Anim_Female.*
Take Damageo 5)
Sounds Sfx_male_d1.* Sfx_male_d2.* Sfx_male_d3.* Sfx_male_d4.* Sfx_male_d5.* Sfx_male_d6.* Sfx_female_d1.* Sfx_female_d2.* Sfx_female_d3.* Sfx_female_d4.* Sfx_female_d5.* Sfx_female_d6.*
Animations Anim_Male.* & Anim_Female.*
Specialo 6)
Sounds Sfx_female.* Sfx_male.*
Animations Anim_Male.* & Anim_Female.*
Take Damageo 7)
Sounds Sfx_mbullet.* Sfx_rbullet.* Sfx_wbullet.*
Particles BulletMG_D.* BulletSG_D.* Rocket_D.*
o 8) Sounds
Sfx_explosion_#.* Particles
64
Explo_D.*o 9)
Animations Crate_float.* Crate_static.* Pow_machine.* Pow_shotgun.* Pow_lightning.* Pow_flame.* Pow_rocket.* Explo_Barrels.*
o 10) Sounds
Sfx_mbullet.* Sfx_rbullet.* Sfx_wbullet.*
Particles BulletMG_D.* BulletSG_D.* Rocket_D.*
Animations Crate_float.* Crate_static.* Explo_Barrels.*
o 11) Sounds
Sfx_explosion_#.* Sfx_mbullet.* Sfx_rbullet.* Sfx_wbullet.* Sfx_female.* Sfx_male.* Sfx_robot.*
Particles BulletMG_D.* BulletSG_D.* Rocket_D.* Muzzle_D.* Muzzle_smk_D.* Smoke_D.* Explo_D.* BulletMG_D.* BulletSG_D.* Rocket_D.* Flame_D.* Elect_D.*
65
Animations Crate_float.* Crate_static.* Explo_Barrels.* Anim_Enem.*
Take damage Anim_Helio.*
Take damage Anim_Male.* & Anim_Female.*
Take Damageo 12)
Sounds Sfx_explosion_#.* Sfx_female.* Sfx_male.* Sfx_robot.*
Particles Explo_D.*
Animations Anim_Enem.*
Take damage Anim_Helio.*
Take damage Anim_Ultimus.* Anim_Male.* & Anim_Female.*
Take Damageo 13)
Sounds Sfx_robot.* Sfx_footstep.*
Animations Anim_Enem.*
Jump Shoot Run
Key Game Algorithms
Special AI conditions:In the event both the player and ranged enemy are on the same platform, and the ranged enemy’s firing line is blocked by platform geometry.
66
FAQ
What’s the overall objective of the game?The main objective is to beat your opponent’s score by killing enemies and stealing pickups
How many enemies are in the game?We will have 3 different types of enemies: a melee type, a range type and an aerial type. We also have a final boss that appears at the end of the level.
How many weapon types will be in the game?There will be 5 different weapon types: Machine gun, Flamethrower, Shotgun, Rocket Launcher, and a Lightening gun
How high can the player jump?1.5 times their height
Can a player gain extra lives?No, there aren’t any extra life pickups or any ways to get more lives. How do we handle the plane-swapping events?
67
Plane swapping will be handled with a simple cutscene animation that lasts approx. 2-3 seconds where the players will break off and head towards their respective planes.
What happens when the player AI dies on the second plane?They re-spawn from their location
Can enemies shoot towards the Z-Plane?No just along the X and Y-Plane
What will happen if one of the players goes inactive in multiplayer?The AI player will take over the character
Are all projectile speed the same?No, they vary between each weapon type.
Do all enemies have an AOE effect after their deaths?No, they just do a death animation.
How much damage does a player take when they are hit with either a melee attack or ranged attack?The player will only ever lose 1 bar from their life.
When a player is hit can they immediately be hit again?No, the player will have invincibility for 2 seconds.
Can I pick up more than one weapon? No, the weapon you currently have equipped will be replaced with the new weapon.
Can I run out of ammo?Yes, there are four weapon types that can. The Flamethrower, Shotgun, Lightning Gun and Rocket Launcher.
If I run out of ammo what happens?Your weapon will switch back to the default weapon, the Machine Gun.
How is the difficulty?The level will increase in enemies as the players progress further into it.
68
Reference of Key Elements
Scoring
Each player receives points by completing actions. When a player completes an action the value of the action is added to their score and displayed to the player in the HUD. The “Lives left” point value will be calculated when the player meets a win/loss condition. All actions are worth positive points with “Death” being the only exception. The actions that are worth points are as listed below:
Item / Action Score
Collecting Pickups +500
Kill Melee Enemy +50
Kill Range Enemy +100
Kill Boss +750
Death -1000
Lives left +1000 per life Action Combo Increase
Hits +(Hits * Weapon Damage)
Multiplier The max level is 4. The combo multiplier affects all scores i.e. If you are level 3 and you kill a melee enemy, your score increase will be 3 x 100. Your combo will decrease at a rate of 10% per second per level if you do not hit an enemy.
Winning/Losing
Winning the game is achieved by beating your opponent's score after level completion. When all lives have been lost or the end boss has been beaten, the level is completed and the score is tallied with the winner being displayed and the loser being shown crying. Completion:After the final boss has been defeated, we go into a cut scene where the boss will fall to the ground and create a massive explosion completely obliterating him all of his robot minions, sending a shower of metal and machinery flying
69
everywhere. Barron and Clair high five each other, climb back onto their Harleys and ride into the sunset as the credits slowly roll onto the screen.
Death:If both players lose their lives, the screen will slowly fade to black. Both Barron and Claire will be on the screen bloodied and bruised, hanging their heads in shame while the “Game Over” text is displayed above them.
Transitions
Saving and loading in the game will primarily only consist of the scores for the characters. The score will be saved when a win/loss condition has been met and the score has been tallied up. The player will not be able to save their progress throughout the level. Loading of the game will only include the leader board. Upon loss of life for the player the player will return to the screen from where they were killed, the player will be given invulnerability for 2 seconds before being able to receive damage again.In between game states there will be a transition state in which required assets will be loaded, and a simple animation will be displayed to inform the user the application has not ceased running. The transition screen will also include a progress bar that will inform the user how much has already been loaded. This transitional period will not exceed GRC standards.
Rewards
We reward our players with points throughout the level by killing enemies, getting weapon pickups, finishing the shooting gallery (reference pg.45) first, and doing more damage to the boss. Upon level completion you will gain points for each extra life.
70
Art and Production Design
3D Art & Animation Deliverables
o Explosive Bombs - Orange barrels with a warning label Explo_Barrel.*
o Decorative signs - Subtle signs that lead the player Deco_Sign.*
o Small plants Grass - luscious green
Grass_sm.* Grass_tall.*
Vines - rich green Vine_hori.* Vine_diag.*
o Medium plants Bushes - medium tropical plant
Plant_trop.* Ferns - large tropical fern
Plant_fern.*o Large plants
Trees - ficus Tree_ficus.*
Tropical - tropical tree Tree_trop.*
o Three types of rocks Boulder - large debris from rock formation
Rock_bould.* Cliff - large rock formation
Rock_cliff.* Large flat rocks
Rock_flat.*o Platforms
Metal - robotic platform Platform_metal.* Platform_msupport.*
Wood Platform_wood.* Platform_wsupport.*
Stone Platform_stone.* Platform_ssupport.*
o Accessories Sailor
o Acc_sail.*
71
Top hato Acc_top.*
Militaryo Acc_milit.*
Vikingo Acc_vik.*
Trucker hato Acc_truc.*
Foam cowboyo Acc_cow.*
Drinking cup hato Acc_cup.*
Sombreroo Acc_somb.*
Biker helmeto Acc_bike.*
Fedorao Acc_fedora.*
Southern belleo Acc_belle.*
Bombardier goggleso Acc_bomb.*
Bald cap with moustacheo Acc_bald
Tiarao Acc_tiara.*
Powdered wigo Acc_wig.*
Pirate hato Acc_pirate.*
Rice Farmero Acc_rice.*
Eye patcho Acc_eye.*
Animal earo Acc_animal.*
Yakuza Pompo Acc_yaku.*
o Catwalk Wooden
Catwalk_wood.* Catwalk_wsupport.*
Metal Catwalk_metal.* Catwalk_msupport.*
o Crates
72
Crate_float.* Crate_static.*
o Pick ups Pow_machine.* Pow_shotgun.* Pow_lightning.* Pow_flame.* Pow_rocket.*
o Freight Container Container_1.* Container_2.* Container_3.*
o Trains Train segment
o Train_seg.*o Train_head.*
o Train tracks Train_track.*
o Train platform Train_platform.*
o Bridge Bridge surface
o Bridge_surface.* Bridge support
o Bridge_support.* Bridge arch
o Bridge_arch.*o Buildings
Beach hut/house, small and mediumo Building_sm_beach.*o Building_md_beach.*
City building, large and mediumo Building_md_city.*o Building_lg_city.*
o Robot enemies Melee - Striker
Enem_striker.* Ranged - Assaulter
Enem_assaulter.* Flying – Helios
Enem_helio.* Boss - Ultimus
Enem_ultimus.*o Destroyed buildings - City and Jungle
Dbuild_city.* Dbuild_jung.*
73
o Robot structures Capsule - Large
Robostruct_caps.* Building - Medium
Robostruct_build.*o Back drops
City Bdrop_city.*
Beach Bdrop_beach.*
Mountain Bdrop_mount.*
Jungle Bdrop_jungle.*
o Animated backdrops Animated objects
Bprop_anim_city.* Bprop_anim_beach.* Bprop_anim_jungle.* Bprop_anim_mount.*
Scenery Bdrop_anim_city.* Bdrop_anim_beach.* Bdrop_anim_jungle.* Bdrop_anim_mount.*
o Male character animations Male
Prone Run Jump Stand/Idle Shoot Take damage Respawn SpecialA SpecialB SpecialC Victory Cry
o Anim_Male.*o Female character animations
Female Prone Jump Run Stand/Idle
74
Shoot Take damage Respawn SpecialA SpecialB SpecialC Victory Cry
o Anim_Female.*o Enemy robot animations
Robot Anim_Enem.*
o Jumpo Shooto Runo Take damage
Helio Anim_helio.*
o Flyo Take damageo Shoot
Ultimus Anim_Ultimus.*
o Runo Shooto Smasho Take damage
2D Art (HUD/Menu/Particle/Textures) Deliverables
o Particles Fire
Fire_D.* Muzzle flash - from gun barrel
Muzzle_D.* Muzzle smoke - from gun barrel
Muzzle_smk_D.* Smoke
Smoke_D.* Explosion - barrel and rocket
Explo_D.* Steam
Steam_D.* Water
Water_D.* Bullet - Machine gun and shotgun
75
BulletMG_D.* BulletSG_D.*
Rocket Rocket_D.*
Flame - Flamethrower Flame_D.*
Electricity - Electricity gun Elect_D.*
o Textures Explo_barrel_D.* Deco_sign_D.* Grass_sm_D.* Grass_tall_D.* Vine_hori_D.* Vine_diag_D.* Plant_trop_D.* Plant_fern_D.* Tree_ficus_D.* Tree_trop_D.* Rock_bould_D.* Rock_cliff_D.* Rock_flat_D.* Platform_metal_D.* Platform_msupport_D.* Platform_wood_D.* Platform_wsupport_D.* Platform_stone_D.* Platform_ssupport_D.* Catwalk_wood_D.* Catwalk_wsupport_D.* Catwalk_metal_D.* Catwalk_msupport_D.* Crate_float_D.* Crate_static_D.* Pow_machine_D.* Pow_machine_S* Pow_shotgun_D.* Pow_shotgun_S.* Pow_flamethrower_D.* Pow_flamethrower _S* Pow_lightning_D.* Pow_lightning_S.* Pow_rocket_D.* Pow_rocket_S.* Container_1_D.* Container_2_D.*
76
Container_3_D.* Train_seg_D.* Train_head_D.* Train_track_D.* Train_platform_D.* Bridge_surface_D.* Bridge_arch_D.* Bridge_support_D.* Building_sm_beach_D.* Building_md_beach_D.* Building_md_city_D.* Building_lg_city_D.* Enem_striker_D.* Enem_assaulter_D.* Enem_helios_D.* Enem_ultimus_D.* DBuild_city_D.* DBuild_jung_D.* Robostruct_caps_D.* Robostruct_build_D.* Bdrop_city_D.* Bdrop_jung_D.* Bdrop_mount_D.* Bdrop_beach_D.* Bprop_anim_city_D.* Bprop_anim_beach_D.* Bprop_anim_jungle_D.* Bprop_anim_mount_D.* Scene_anim_city_D.* Scene_anim_beach_D.* Scene_anim_jungle_D.* Scene_anim_mount_D.* Acc_sail_D.* Acc_milit_D.* Acc_vik_D.* Acc_truc_D.* Acc_cow_D.* Acc_cup_D.* Acc_somb_D.* Acc_bike_D.* Acc_fedora_D.* Acc_belle_D.* Acc_bomb_D.* Acc_bald_D.* Acc_tiara_D.* Acc_wig_D.*
77
Acc_pirate_D.* Acc_rice_D.* Acc_eye_D.* Acc_animal_D.* Acc_yaku_D.* Explo_barrel_S.* Deco_sign_S.* Grass_sm_S.* Grass_Sall_S.* Vine_hori_S.* Vine_Siag_S.* Plant_Srop_S.* Plant_fern_S.* Tree_ficus_S.* Tree_Srop_S.* Rock_bould_S.* Rock_cliff_S.* Rock_flat_S.* Platform_metal_S.* Platform_msupport_S.* Platform_wood_S.* Platform_wsupport_S.* Platform_stone_S.* Platform_ssupport_S.* Catwalk_wood_S.* Catwalk_wsupport_S.* Catwalk_metal_S.* Catwalk_msupport_S.* Crate_float_S.* Crate_static_S.* Container_1_S.* Container_2_S.* Container_3_S.* Train_seg_S.* Train_head_S.* Train_Srack_S.* Train_platform_S.* Bridge_surface_S.* Bridge_arch_S.* Bridge_support_S.* Building_sm_beach_S.* Building_md_beach_S.* Building_md_city_S.* Building_lg_city_S.* Enem_striker_S.* Enem_assaulter_S.*
78
Enem_helios_S.* Enem_ultimus_S.* DBuild_city_S.* DBuild_jung_S.* Robostruct_caps_S.* Robostruct_build_S.* Bdrop_city_S.* Bdrop_jung_S.* Bdrop_mount_S.* Bdrop_beach_S.* Bprop_anim_city_S.* Bprop_anim_beach_S.* Bprop_anim_jungle_S.* Bprop_anim_mount_S.* Scene_anim_city_S.* Scene_anim_beach_S.* Scene_anim_jungle_S.* Scene_anim_mount_S.* Acc_sail_S.* Acc_milit_S.* Acc_vik_S.* Acc_Sruc_S.* Acc_cow_S.* Acc_cup_S.* Acc_somb_S.* Acc_bike_S.* Acc_fedora_S.* Acc_belle_S.* Acc_bomb_S.* Acc_bald_S.* Acc_Siara_S.* Acc_wig_S.* Acc_pirate_S.* Acc_rice_S.* Acc_eye_S.* Acc_animal_S.* Acc_yaku_S.*
o Pause Menu Pause_menu_D.*
o Game Menu Menu_D.*
o HUD Life
o HUD_life_D.* Ammo
o HUD_ammo_D.*
79
Scoreo HUD_score_D.*
Multipliero HUD_multi_D.*
Sound Effects Deliverables
o Male hit – deep male voice, suggesting pain is inflicted, grunto Sfx_male.*
o Male dialogue – 6 different dialogueso “Did ya see that?” - Sfx_male_d1.*o “Boo-Yah” - Sfx_male_d2.*o “Haha” - Sfx_male_d3.*o Sfx_male_d4.*o Sfx_male_d5.*o “Maba-Sploom!” - Sfx_male_d6.*
o Female hit – mid-toned female shriek, suggesting pain is inflictedo Sfx_female.*
o Female dialogue – 6 different dialogueso “Did ya see that?” - Sfx_female_d1.*o “Boo-Yah” - Sfx_female_d2.*o “Haha” - Sfx_female_d3.*o Sfx_female_d4.*o Sfx_female_d5.*o “A little girl could do this… oh wait” Sfx_female_d6.*
o Motorcycleo Motor Hum – Sfx_motor_hum.*o Motor Rev – Sfx_motor_rev.*o Shift Gears – Sfx_motor_shift.*o Pop Clutch – Sfx_motor_pop.*
o Robot noise – hollow metallic sounding beeps and boopso Sfx_robot.*
o Weebo Ultimuso “BOOM” – Sfx_boss_stomp.*o Gears grinding – Sfx_boss_walk.*o “Crunch” – Sfx_boss_smash.*o Crawl Scrape – Sfx_boss_crawl.*o Missile Deploy – Sfx_boss_missile.*o Eyebeam – Sfx_boss_eyebeam.*
o Machinery sound – series of pumping pistons and some gearso Sfx_machine.*
o Footsteps – generic foot scuffling against the groundo Sfx_footstep.*
o Machine gun – intensified large bubble wrap being popped
80
o Sfx_machinegun.*o Sfx_CockingGun.*
o Shell drop – thin empty metal tube hitting concrete surfaceo Sfx_shelldrop.*
o Shot gun – a gun pump followed by a quick, loud and full sounding burst then two shells hit the floor
o Sfx_shotgun.*o Sfx_GunPump.*
o Electricity – low buzz, a rumbling hum, a hint of mechanical whirlingo Sfx_electricity.*
o Flamethrower noise – amplified sound of tires leaking air, with a bit of crackling paper
o Sfx_flamethrower.*o Bullet contact –
o Metal – metallic thunko Rock – sound of two large rocks smacked togethero Wood – sound of a stake being impaled through plywood
o Explosion –o Sfx_explosion_1.*o Sfx_explosion_2.*o Sfx_explosion_3.*
o Power Up Collectiono “Time to Rock-IT” – Sfx_pUp_Rockit.*o “I Call Shotgun” – Stx_pUp_Shotgun.*o “Shocking” – Sfx_pUp_Shocking.*o “I’m On Fire” – Sfx_pUp_Fire.*o “Awwww” – Sfx_pUp_Basic.*
Character DIALOGUES:Shotgun:Claire: I’ve got shotgun.Either: Shotgun!
Flamethrower:Barron: Oh, a flamethrower. I used to have one of these; burned off all the hair on top of my head lighting a cigar.Claire: A flamethrower, lovely. This ought to be hot enough to melt solder.Either: Burnt it up! Flame on!
Rocket:Barron: HA! A rocket lawn chair! Now THIS is what I was looking for.Claire: Rocket-propelled grenades: a simple solution to a messy problem.Either: BOOM baby! They don’t stand a chance!
81
Lightning:Barron: Heh-heh, somebody tazed me with one of these lightning guns during a bar fight. I’ll bet that was the last time he ever thought of doing that.Claire: I wonder how our robotic friends will like a little power surge?Either: 1.21 gigawatts! Set phasers for death!
Ultimate moves: Flame
o I love the smell of napalm…. Period.o Heat Wave!
Lightningo You’re about to be thunder struck!o Lightning Storm!
Shotguno Let me show you a bullet storm…o Shotgun Barrage!
Rocket Launchero Calling down the thunder!o Airstrike!
General Pickups This is my kind of machine I usually don’t like machines, but this is an exception This must be my lucky day I have the POWER! (just like in he-man) Ooh shiny What does this button do? Hell yeah! Let’s do it! Rock and roll!
Plane swapping Sometimes being around you is too much Time to make like a banana and split I just work better alone If we were dating, here is where we would “Split-Up” Claire: I’ve got top!
Baron: Ha ha!Claire: Ugh.
Claire: Try not to miss me.Baron: You’re breakin’ my heart! (sarcastic)
Claire: Race ya’!Baron: You’re on!
Baron: First one to finish buys dinner!
82
Claire: Oh you’re taking me some place classy.
Attacking bots:Barron: I love bashing robots to bits! Just look at those parts fly! There goes an arm. And there’s a leg! Watch out for that head, looks like the eye is still glowing. Oh-ho! That one blew up completely!
Anyone need scrap metal If you were music, you would be heavy metal When I’m done you’re going to be one hell of a cheese grater You are now a holy robot....ha-ha My toaster hurts more than that My blender is scarier than you Kick down sparky! Ha ha! *hard/insane laughter* Oh man, I love this job! Take a seat! Mass produced morons! God bless cannon fodder!
Destroying objects:Barron: Smash! Bash!! BLAMMO!!!Claire: I wonder who’s trying to move all of this cargo through an open warzone.
Fireworks… check! Always lights up my mood Campfire songs anyone? Robots roasting on an open fire. Another generic crate… eh? Boom! It’s… beautiful… I love Lamp!
Final bossIntro:Baron: Let’s ride!Claire: How long have you been waiting to say that?Baron: Forever and a day!
83
Phase 1:Claire: Hey Barron, can you even reach the shift pedal with those stubby legs of yours?Barron: You know, Claire, I’m amazed you haven’t tipped over, being top-heavy and all. *Boss Crash* What in the unholy stromboli of Nick Nolte is that?Claire: Looks like we missed one: the big one.
Baron: Bigger they are…Claire: Harder they fall!
Phase 2:Barron: You see that? I blew his kneecaps clean off! All on my own!Claire: Regardless of the fact that what you just said is patently untrue, he’s not DEAD yet.
Claire: This guy’s more persistent than you!Baron: Tell me about it!
Transition:Both: YEEEEEEEEEEEEEEEEEEEEEEHAAAAAAAAAW! (Duke’s of Hazard yell as they ramp off in to the air)
Phase 3:Barron: Why won’t this motherf*explosion* die?Claire: Maybe it’s because he heard what you said about his sister.Barron: Hey! I saw what I saw. You can’t sit there and tell me that she wasn’t trying to su-WOAH! This guy really does not like me, does he?
Ending dialogue:Barron: Well, that’s the last of that now, isn’t it.Claire: Yup, looks like we finally put the Ultimus down for good. One thing still bothers me though.Barron: Oh yeah? What’s that?Claire: Terminal velocity is about 120mph, or 2 miles every minute, and we must have been in free fall for at least a good 3 to 5 minutes. That means we must have fallen for at least 6 to 10 miles: that’s the depth of the whole troposphere… and on top of that, we lived through it.Barron: So… what’s the problem?Claire: You really don’t understand anything, do you?Barron: I understand you think I’m hot.Claire: You wish!*fading banter and laughter as characters walk toward the setting sun*
84
Music Deliverables
Menu Screens Fast paced techno metal Example: Megaman X - Storm Eagle
In Game Fast paced hardcore metal Example: Contra Hard Corps: Uprising Stage 2 Jungle Theme
Boss Stage 1: Just Drums Stage 2: Drums and Bass Guitar Stage 3: Drums, Bass Guitar, fast paced heavy Guitar Example: Two Steps from Hell
Score Screen Fast paced cheery victory music Example: Song Of Storms Dubstep Mix - Ephixa
85
Technical Design Overview
The overall purpose of the Technical Design document will provide a roadmap on how the teams will layout the technical procedures and implement these modules for our game Operation B.L.A.S.T. The Technical Design document will guide the team in understanding technical aspect of the game, how each module should be implemented, how they interact with other modules and the interface for using them.
86
Milestone Deliverables
Core Machine Gun
o Shootingo Collisions
Environment Enemy
o SFX For Weapon With environment With enemies
Enemy Strikero AI
Basic seek AI algorithmo Collisions
Environment Player Bullets
o SFXo Animations
Keyboard Input Playable Character
o Collisions Enemy Environment
o SFXo Animationso Character Actions
Run Jump Shoot
UIo HUD
Health Baro Menu Screeno Pause Screen
GamePlayo Wino Lose
Event System Shader System Lighting System
87
LUA System Gamepad Input
Alpha Competitive AI
o Movemento Jumpingo Attacking
Prioritizing Targetso Dodging Melee
Guno VFXo Four Weaponso Collisions
Environment Enemies
UI
o Ammo Trackingo Liveso Guno Multipliero Points
Environmento Beach Level
Plane Swappingo Waypoint Systemo Animations
Weapon Typeso Mesho Gun
Alt Fire SFX VFX Collisions
o Environmento Enemies
Weapon Pickupo VFXo Animationo SFXo Mesh Type
Enemy Assaultero AI
88
Prioritizing AI Trackingo Collisions
Environment Enemies Bullets
o Animationso SFX
Coop Play
Beta Playable Character
o Dialogueo Animation
Bikeo Collision
Ultimate Weapons Environment
o Jungle Levelo City Level
Plane Swappingo Dialogue
Bosso P1
Foot Stomp Debris
o P2 Eye Lasers Arm Swing
o P3 Eye laser Smart Lasers
o AI Systemo Animationso Collisions
Playable Character Environment Bullet
o VFXo Dialogueo SFX
Shooting Galleryo Stat Trackingo Collisionso SFX
89
o Dialogue Weapon
o Dialogue Ultimate Attack
o VFXo Animationo Collisions
Environment Player Enemy
o Stat Trackingo Dialogue
Competitive AIo Dodging Rangedo Dodging Bosso Dodging Ultimateso Attacking
Using Ultimates Using Alt-Fires
Enemy Helioso AI
Flying based AIo Collision
Environment Bullet Player
o SFXo Animations
Gold Character Poses
o Animationso Dialogue
Customizationo Mesheso Animations
Polish
90
Development Environment
Tool Version UseDirectX 9 June 2010 SDK Render Models to screen
Render Textures to screen
AudioKinetics Wwise 2010.3.3 Play audio on events caused by objects
Visual Studios C++ compiler
2008 Compile the game code
Maya 2010/ 2011 Create and animate models
Create level and level objects
Lua 5.1.4 Interface and edit game details to reduce compile time
FX Composer 2.1 Write and debug shadersAlienbrain 9.0.0.10674 Archive and share work
and documents among the team
3D Coat 3.5 Paint directly on existing models
Photoshop CS 4 Create textures for models and levels
Create concept art Touch up colors
91
System Architecture Flow Chart
92
Render System Flow Chart
93
System Architecture Context Model Description
CGameo Game States
PushState(IGameState* newState) PopState() ChangeState(IGameState* newState) Update(float dt) Render()
Game Stateso Particle Manager
GetInstance() UpdateParticles(float fTime) RenderParticles() KillParticle(int nID) KillParticle(string szType) KillAllParticles() SpawnParticle(string szType, float fPosX, float fPosY)
o Object Manager GetInstance() Initialize() Shutdown() Update(float dt) Render()
o Render System GetInstance() Clear(unsigned char ucRed, unsigned char ucGreen,
unsigned char ucBlue) DeviceBegin() DeviceEnd() Present() ChangeDisplayParam(int nWidth, int nHeight, bool
bWindowed)o Sound System
ProcessSound() GetInstance() SetFXVolume(float fVolume) SetDXVolume(float fVolume) SetMXVolume(float fVolume)
o Input
94
GetInstance() Init(HWND hWnd, HINSTANCE hInst) Shutdown() AddDevice(InputDevice* device) RemoveDevice(InputDevice* device) Update() GetAnyPressed() GetAction(Action action, int player) GetActionAmount(Action action, int player) MapAction(Action action, InputDeviceType devices,
InputType type, int value, int player) UnmapAction(Action action, InputDeviceType devices, int
player) GetDevice(InputDeviceType type)
Inputo Does not directly access any other module
Particle Managero Render System
GetInstance() Clear(unsigned char ucRed, unsigned char ucGreen,
unsigned char ucBlue) DeviceBegin() DeviceEnd() Present() ChangeDisplayParam(int nWidth, int nHeight, bool
bWindowed)o Collisions
AABBtoAABBCollision(tAABB first, tAABB second) AABBtoMeshCollision(tAABB player, D3DXMesh* mesh,
D3DXVECTOR3& point) AABBtoSphereCollision(tAABB player, D3DXVECTOR3
center, float fRadius) SpheretoSphereCollision(D3DXVECTOR3 firstCenter, float
fRad1, D3DXVECTOR3 secCenter, float fRad2) SphereToMeshCollision(D3DXVECTOR3 spherePos, float
fRad, D3DXMesh* mesh, D3DXVECTOR3& pos) AABBtoPlaneCollision(tAABB objAABB, D3DPlane plane)
Object Managero AI
Death() GetPosition() GetType() SetPosition(D3DXVECTOR3 position) Update(float fTime) ProcessAI(AIType type) AttackTarget(vector<Character*>
95
o Collisions AABBtoAABBCollision(tAABB first, tAABB second) AABBtoMeshCollision(tAABB player, D3DXMesh* mesh,
D3DXVECTOR3& point) AABBtoSphereCollision(tAABB player, D3DXVECTOR3
center, float fRadius) SpheretoSphereCollision(D3DXVECTOR3 firstCenter, float
fRad1, D3DXVECTOR3 secCenter, float fRad2) SphereToMeshCollision(D3DXVECTOR3 spherePos, float
fRad, D3DXMesh* mesh, D3DXVECTOR3& pos) AABBtoPlaneCollision(tAABB objAABB, D3DPlane plane)
o Camera Update(float f_ElapsedTime) GetViewProjection() GetView() GetProjection() GetWorldMatrix() GetNearFrustum() GetFarFrustum() SetProjection(float f_Field, float fWidth, float fHeight) SetNearFrustum(float fDistance) SetFarFrustum(float fDistance)
o GUI Update(float fTime) Draw() Add(CGuiBaseObject obj) Remove(CGuiBaseObject obj) ClearAll() GetInstance()
AIo Does not directly access any other module
Camerao Does not directly access any other module
GUIo Does not directly access any other module
Render Systemo Camera
Update(float f_ElapsedTime) GetViewProjection() GetView() GetProjection() GetWorldMatrix() GetNearFrustum() GetFarFrustum() SetProjection(float f_Field, float fWidth, float fHeight) SetNearFrustum(float fDistance)
96
SetFarFrustum(float fDistance)o Sound System
ProcessSound() GetInstance() SetFXVolume(float fVolume) SetDXVolume(float fVolume) SetMXVolume(float fVolume)
Sound Systemo Does not directly access any other module
Collisionso Sound System
ProcessSound() GetInstance() SetFXVolume(float fVolume) SetDXVolume(float fVolume) SetMXVolume(float fVolume)
97
Module Breakdowns
System: Math
Author(s): N/A
Description:This is the basic DirectX math functions.
System: LUA
Author(s): TJ “Doc X” Farnie
Description:This module is used to access the LUA side of the program. It is a
singleton that can be access anywhere, and will allow the user to request any variable and have it returned. The intent of this system is allow all the variables for the program to be stored on the LUA side, and have the actual C++ program gather data from the LUA file. Other modules will interface with the LUA system by calling the GetData method, which has been overloaded to accept any data type. The LUA singleton will then fill out the data passed in, allowing the C++ program to use the now populated data. This will allow us to keep all of our hard data in a language that we can easily tweak without stopping the program or recompiling. As an example, take weapon damage. It will need to be tweaked multiple times during the design process. We can easily just modify this number in the LUA script file instead of in the C++ program, allowing us to test it much more easily as there is no need to recompile and run.
Features:Global Data Acquirement
Completion Time:2 days
Methods:Return Name Parameters Description
Static CLuaEngine*
GetInstance None Returns an instance to the singleton
None GetData Float& data//The data that will be returnedChar* name
Fills out the data variable with the actual data from the Lua side
98
//Name of the variable to look up
None GetData String& data//The data that will be returnedChar* name//Name of the variable to look up
Fills out the data variable with the actual data from the Lua side
None GetData Bool& data//The data that will be returnedChar* name//Name of the variable to look up
Fills out the data variable with the actual data from the Lua side
None GetData D3DXVECTOR3& data//The data that will be returnedChar* name//Name of the variable to look up
Fills out the data variable with the actual data from the Lua side
System: CGame
Author(s):
Description: This module is the main loop for the entire game. It is a singleton that will
be called when the game is first started. A config file will be called in the init function that will set up any options that the user may have set before hand. All state changes will occur within CGame games main function call.
Dependencies Required:Particle CGameState
Features:Initialize gameShutdown game
Completion Time:3 days
Methods:
Return Function Name Parameters Description
99
Bool Load_Config Const char* Loads the config file for the game.
Static CGame* GetInstance NONE Returns an instance of CGame
void Init Hwnd wndHInstance instance,Int widthInt heightbool bfullscreen
Initializes the main game
Bool Main NONE The main loop of the entire game
Void Shutdown NONE Shutdown the main game loop and unloads anything that was loaded in
int GetScreenWidth NONE Return the width of the game screen
int GetScreenHeight NONE Returns the height of the game screen
int GetMusicVol NONE Returns current music volume
Int GetEffectVol NONE Return current sound effect volume
Int GetPan NONE Returns the PAN value right now.
100
Bool isWindowed NONE Returns true if the window is fullscreen
Void SetScreenWidth Int width Sets the width of the screen
Void SetScreenHeight Int height Sets the height of the screen
Void SetMusicVolume Int musicvol Sets volume of the music
Void SetEffectVolum Int effectvol Sets volume of the sound effects
Void SetPan Int panval Sets the pan values
Void SetisWindowed Bool windowed Sets full screen or window mode.
System: Game States Author(s): Tristan Helmink Description:
This module manages the various game states. This includes The menus, transitions, load screens, and options, as well as the high level interface for the gameplay state. This uses the Standard State Stack system. All states are rendered, only the top state is updated, and responds to input. These classes are responsible for how the user enters and changes options of the game.
101
Dependencies Required:
Renderer, Gui Features:
Loading LevelLoading Objects
CharactersEnemiesEnvironmentSpawn Points
Generate instances of objects to populate level according to layout Risks: Completion Time:
3-4 days for minimum requirements and basic funtionality Special Info: Classes
IGameStateReturn type
Name Parameters Description
Void Enter
Void Exit
Void Update float dt
Void Render Inheritors
CAttractStateCMainMenuStateCOptionsStateCSoundOptionsStateCGraphicsOptionsStateCLoadStateCGamePlayStateCPauseState
CStateStackReturn type
Name Parameters Description
Void PushState IGameState* newState;
102
Void PopState Only pops state from top if more than one left
Void ChangeState IGameState* newState
Clears stack and pushes newState
Void Update float dt Updates only top state
Void Render Renders all states
System: Object Manager Author(s): Tristan Helmink Description:
This module is Responsible for all game-play objects. This will update and render them. Check their collision. Load the instances into the game world and remove them from it at the appropriate time. The objects themselves will have references to the animation instances, and the LUA Files with the appropriate behavior and reactions.
Dependencies Required:
Renderer, Mesh Manager, Animation Manager Features:
Loading LevelLoading Objects
CharactersEnemiesEnvironmentEnemy Spawn Points
Generate instances of objects to populate level according to layout Risks:
Completion Time:3-4 days of close intense work with loaders, renderers, & game logic
Special Info: Classes
CObjectManagerLoader ???
103
IObjectInstanceCore interface
Return type Name Parameters Description
Void Update float dt
Void Render
CRenderContext*
GetRenderContext
InheritorsCBaseObjectInstance
CCrateObjectInstanceCExplosiveBarrelObjectInstanceCSkinnedObjectInstance
CCharacterObjectInstanceCBaronObjectInstanceCClairObjectInstance
CEnemyObjectInstanceCStrikerObjectInstanceCAssaulterObjectInstanceCHeliosObjectInstance
CEnemySpawnerObjectInstanceCObjectManager
Return type Name Parameters
Description
static CObjectManager* GetInstance
Lazy instantiation
Void Initialize
Void Shutdown
Void Update float dt
Void Render Culls using frustrumRender Modual sortRender Modual render
CObjectInstance* GetObject uint ID
104
CONTAINER<CObjectInstance>&
GetObjects
uint groupID
System: Event System Author(s): Tristan Helmink Description:
Global system to maintain include/inheritiance hierarchy while allowing cross class communication. A low level object will be able to alert high level systems of events. This system will also dispatch input messages for the game to react to. An event will be responded to by the individual object, and the reaction will be defined in LUA for fast efficient tweaking
Dependencies Required:
NONE: Global Features:
Registration for eventsDeregistration for eventsReceiving EventsDispatching Events
Risks:
Completion Time:3-4 days for minimum requirements and basic funtionality
Special Info:
EventsInput
UpDownLeftRightForward UpForward DownFire Weapon
def-AULTALT-ernate
105
ULT-imateEnterEscape
Creation/RemovalCharacterEnemy
StrikerAssaulterHeliosUltimus
Stage 1Stage 2Stage 3
BoxBarrelPower UpBulletMissileFlameElectricitySmokeExplosion
CollideSee Interaction MatrixCollision Reaction
RepositioningDamage
TriggersNo Barrels or Boxes on screen (tutorial)Start Spawning Enemies from spawners in rangeStop Spawning Enemies form spawnersNo Enemies on ScreenPlane SplitShooting Gallery CompletePlane MergeChange BackgroundLoad next portion of LevelStart Boss Encounter(players get on bikes, Stage 1 Boss Creation)
ClassesIListener
Return type
Name Parameters
Description
void Register Pure virtual
106
void Deregister Pure virtual
void React Pure virtualThis is the functionality called when processing an event
CEvent
Return type
Name Parameters Description
char* GetEventName
CEventManagerReturn type Name Parameters Descriptio
n
static CEventManager*
GetInstance() Lazy instantiation
Void Initialize
Void Shutdown
Bool CreateEvent char* newEventName
Make events
Void GetRegisteredEvents
char* eventName Find preexisting events
Void RegisterForEvent CEvent& eventToRegisterForfloat proccessingPriority,
If processing priority is equal to an already existing callbacks priority for this event this new one will be
107
lowered
Void DeregisterForEvent
CEvent& eventToRegisterFor,
Void DispatchEvent Cevent& eventToDispatch
Void ProcessEvents
System: Particle Manager
Author(s):
Description: The particle manager is a singleton that will be responsible for adding new
particles, updating the particles, handling any collisions for the particles, and finally passing the particles to the render system. The purpose of the particle system is to keep track of all the particles so that no other system has to. All particle data should be dealt with via the particle manager singleton.
Dependencies Required:Game States, Render System, Collisions
Features:Loading Particle EffectsUpdating Particle EffectsKilling Particles
Completion Time:4 days for minimum requirements and basic functionality
Methods:Return Name Parameters Description
Static CParticleManager*
GetInstance None Returns the instance of the particle manager singleton
Void UpdateParticles Float fTime//The time since the last update
Updates all the particles accordingly
Void RenderParticles None Sends all the particles to the
108
render system to be rendered
Void KillParticle Int nID//ID number of the particle to kill
Kills the specified particle emitter, turning off the particles
Void KillParticle String szType//Type of particle to kill
Kills the specified particle emitter type, turning off all occurrences of the particle type
Void KillAllParticles None Kills all particle emitters
Int SpawnParticle String szType//Type of particle to spawnFloat fPosX//X Position of particle to spawnFloat fPosY//Y Position of particle to spawn
Creates a particle emitter to spawn particles of szType at fPosX and fPosY, and returns the ID associated with the emitter
System: CWwiseManager
Author(s): Alex Hernandez
Description: The CWWiseManager will use WWise SDK calls, and create simpler
function calls. The CWWiseManager must be initialized at the beginning of the application, and ProcessSound must be called every frame. The CWWiseManager is responsible for playing, pausing, looping, stopping all sounds within the game. The CWWiseManager will be able to play 2-D and 3-D sounds. Sounds will be used with speaker panning.
Dependencies Required: CGame
Risks: Risk: Affected Resource: P C RF
Unfamiliar with the Audiokinetic’s
Alex Hernandez 0.2 0.8 0.84
Response or avoidance:
109
WWise
1.) Consult with Sound Director (Day 3)2.) Consult within studio (Day 4)3.) Consult out of studio ( Day 6)4.) Cut WWise and proceed with Direct Sound
implementation (Day 8)
Completion Time: 10 days Research 2 day Implementation 4 day Testing 2 day Integration 2 day
Special Info: Sound banks must be loaded during application start ProcessSound() must be called every frame
Methods:
Return Name Parameters DescriptionBool Init HWND hWnd Initializes the
sound engine and loads the sound banks
Bool Shutdown Void Closes the sound engine and deallocates memory used
Void ProcessSound Void Plays all necessary shounds, called each frame
CWwiseManager* GetInstance void Gets a pointer to the instance of the manager
Void SetFXVolume Float fVolume Sets the sound FX volume
Void SetDXVolume Float fVolume Sets the dialogue volume
Void SetMXVolume Float fVolume Sets the music volume
Void SetState AKUniqeID groupAKUniqueID state
Changes the sound filter that has been applied to all
110
objects in group to state
Void SeetSwitch AKUniqueID groupAKUniqueID switchAKGameObjectID ID
Changes the sound played for all sounds played for “ID” using “switch”
Int RegisterObject Const char* szName
Registers the name of the object and returns the objects Wwise ID
Void UnregisterObject AKGameObjectID ID
Removes object from Wwise
Void SetObjectPosition AKGameObjectID IDAKSoundPositionPos
Sets the position for the object reference “ID” to “pos”
void SetListenerPosition AKListenerPositionPos
Sets the position of the listener to “Pos”
Void SetAttenuation AKGameObjectID objFloat Attenuation
Sets the falloff value of “obj” to “attenuation”
Void PostEvent AKEventID EventIDAKGameObjectID obj
Posts an event to the Wwise event system
System: CDirect3D
Author(s): Kahran Ghosalkar
Description:This module will house the main Direct3D Object and Device. It is
responsible for maintaining pointers to the sprite, line, and font, and uses those device pointers to abstract basic rendering information. It will have functions to clear, begin, end, and present the backbuffers. It will also be responsible for changing the display parameters whenever windowed mode is enabled.
Dependencies Required: CGame
Features: Initialize the D3D COM device & object
111
Reset lost device pointersRelease the D3D COM device & object
Completion Time: 2 days to research and implement
Methods: Return Function Name Parameters DescriptionVoid InitD3D HWND hWnd, int
nWindowWidth, int nWindowHeight,
Initializes the D3d object and sets up the present parameters
void ChangeDisplayParam int nWidth, int nHeight, bool bWindowed
Will handle the toggling between windowed and fullscreen modes
void ShutdownD3D void Cleans up memory and Releases all COM objects
static GetInstance void Gets the singleton instance
void Clear unsigned char ucRed, unsigned char ucGreen, unsigned char ucBlue
Clears the backbuffer to the specified color
void DeviceBegin void Calls begin on the d3d device
void DeviceEnd void Calls end on the d3d device
void Present Void Presents the backbuffer
System: CAllocHierarchy
Author(s): Kahran Ghosalkar
Description:This module is required by Direct3D to load meshes with an animation
hierarchy. An instance of this class will be passed in to D3DXLoadAnimationHierarchyFromX function and will use the overloaded
112
functions to generate the frame hierarchy from the mesh, setup the materials and textures, and get the bone matrices.
Dependencies Required: CDirect3D, ID3DXAllocateHierarchy
Features: Create the mesh containerLoad a mesh and skinning informationLoad textures and materials associated with itDestroy the mesh container
Completion Time: 4 days to research, implement, test and debug
Methods: Return Function Name Parameters Description
HRESULT CreateFrame PCSTR Name, D3DXFRAME** ppNewFrame
Creates the animation hierarchy
HRESULT CreateMeshContainer PCSTR Name, const D3DXMESHDATA* pMeshData, const D3DXMATERIAL* pMaterials,..
Creates the mesh and gets the materials and textures from it
HRESULT DestroyFrame D3DXFRAME* pFrameToFree
Deallocates memory from the Frame hierarchy
HRESULT DestroyMeshContainer
D3DXMESHCONTAINER* pMeshContainerBase
Deallocates dynamic memory in the Mesh container
113
System: CStaticMesh
Author(s): Kahran Ghosalkar
Description:This module will encapsulate a D3DXMESH that will not have any
animations associated with it. It uses that mesh to compute a bounding box to perform collisions.
Dependencies Required: CDirect3D
Features: Load a .X mesh fileUpdate the mesh world matrixRender the mesh
Completion Time: 2 days to implement and test
Methods: Return Function Name Parameters Description
Void LoadMesh LPDIRECT3DDEVICE9 pDevice, char* szFileName
Loads a static mesh from a .x file
void Update Float fDT Will update the mesh’s position, rotation, and scale.
void Render void Renders the mesh
114
System: CAnimatedMesh
Author(s): Kahran Ghosalkar
Description:This module will hold information for a single animated mesh. It will load
a .x file into a D3DXMESH type and setup the animation hierarchy. It is also responsible for maintaining a list of all animation instances associated with this mesh.
Dependencies Required: CDirect3D
Features: Load a .X mesh file and hierarchyCreate an InstanceUpdate the mesh matrixRender the mesh
Associated RisksRisk: Affected Resource: P C RF
We may have an issue loading an animated .X files that have been exported using Cvxporter & Maya 2009
Kahran Ghosalkar .4 .6 .76
Response or avoidance:1. Research online for examples on loading .X files.2. Use an alternative exporter3. Write our own exporter and importer
Completion Time: 10 days to implement, test and debug
Methods: Return Function Name Parameters DescriptionVoid LoadMesh LPDIRECT3DDEVICE9
pDevice, char* szFileName
Loads a static mesh from a .x file
void Update Float fDT Will update the mesh’s position, rotation, and scale.
115
void Render void Renders the mesh
HRESULT CreateInstance CAnimationInstance** ppAnimInstance
Create a new instance of this animated mesh
HRESULT SetupBonePtrs D3DFrame* pFrame Sets the pointers for the bone matrices
System: CAnimationInstance
Author(s): Kahran Ghosalkar
Description:This module holds an instance of an animated mesh. It recurses through
the hierarchy to update the frames world matrix. It also has an animation controller to play and switch animations.
Dependencies Required: CAnimatedMesh, CDirect3D
Features: Setup the animation controllerUpdate all frames in the hierarchyPlay and reset animationDraw instance
Completion Time: 5 days to research and implement
Special Info:Animations will be blended and skinned in a shader during the draw calls
Methods: Return Function Name Parameters DescriptionVoid Setup LPD3DXANIMATIONCONTROLLER
pACInitialize the animation tracks
void UpdateFrames MultiAnimFrame* pFrame, D3DXMATRIX* pmxBase
Recursively update the hierarchy using the matrix passed in
void DrawFrames MultiAnimFrame* pFrame Draw each
116
frame in the hierarchy
HRESULT GetAnimController CAnimationInstance** ppAnimInstance
Create a new instance of this animated mesh
HRESULT SetWorldTransform D3DXMATRIX* pmxWorld Sets the pointers for the bone matrices
HRESULT AdvanceTime DOUBLE dTimeDelta, ID3DXAnimationCallbackHandler* pCH
Update the animation controllers time and update the frames.
Void ResetTime Void Resets the time of the animation controller
void Draw void Calls DrawFrames using the root bone
System: CTextureManager
Author(s): Kahran Ghosalkar
Description:This module will be responsible for managing all the textures needed
during the game, including those from meshes. It maintains a vector of D3DXTEXTURE and It will load/unload a texture from file. It will also have functionality to draw simple textures to a quad.
Dependencies Required: CDirect3D
Features: Load a texture from fileReturn an index to the loaded textureManage texture list
Completion Time: 2 days to implement and test
117
Methods: Return Function Name Parameters DescriptionCTextureManager GetInstance void Gets the
singleton instance
bool InitTextureManager LPDIRECT3DDEVICE9 lpDevice, LPD3DXSPRITE lpSprite
Initializes the texture manager with the d3d device passed in
void ShutdownTextureManager void Shuts down and deallocates all texture memory
Int LoadTexture const char* szFilename, DWORD dwColorkey = 0
Loads the texture from the filename passed in. returns the index into the texture vector
LPDIRECT3DTEXTURE9 GetTexture int nID Get the texture pointed to by the ID
System: CShaderManager
Author(s): Kahran Ghosalkar
Description:This module will be responsible for managing all the shaders needed by
the game. It will load/unload shaders, and hold information about common parameters global to all shaders, such as the ViewProjection matrix. It also holds information about directional lighting.
Dependencies Required:CDirect3D
Features:
118
Load a Shader from fileReturn an index to the loaded shaderManage Shader list
Completion Time: 2 days to implement and test
Methods: Return Function Name Parameters DescriptionCShaderManager GetInstance void Gets the
singleton instance
void ShutdownShaderManager void Cleans up the memory and releases the effects.
void LoadShader const char* szFilename, const char* szName
Loads the shader from the filename passed in and assigns it to the name.
LPD3DXEFFECT GetShader Const char* szName Get the shader passed in by name
Void SetMatrix D3DXMATRIX* pmxWorld
Sets the global World, view, and projection matrix.
System: Input
Author(s): Camron Weeks
Description:This class will be responsible for handling actions that the player character does (i.e. running, jumping, shooting, and etc.). During debugging it will handle camera movement. The input system will help with the navigation through the menu system.
Dependencies Required: Animation Manager, Sound, Camera, and Game States
Completion Time: 1 day
Special Info:
119
Methods:Return Name Parameters DescriptionStatic CInput* GetInstance NoneVoid Init HWND hWnd,
HINSTANCE hInstCreates the DirectInput8 Device
Void Shutdown None Releases all devices being used
Void AddDevice InputDevice* device
Adds an InputDevice to the system
Void RemoveDevice InputDevice* device
Remove an InputDevice from the system
Void Update None Calls Update on all devices
Bool GetAnyPressed None Loops through all the keys and/or buttons of all devices in the system and sees if any keys were pressed
Bool GetAction Action action, int player
Gets whether that action was preformed last frame
Float GetActionAmount Action action, Int player
Gets hot much that action was performed last frame
Void MapAction Action action,InputDeviceType devices,InputType type,Int value,Int player
Maps an action to devices, types, and a given value
Void UnmapAction Action action,InputDeviceType devices,Int player
Removes an action from the list
InputDevice* GetDevice InputDeviceType type
Sees what devices that is currently being
120
used
System: CGUIManager
Author(s): Nicholas Guzman
Description: The GUI Manager is an object manager that works with GUI. It will be in
charge of rendering and updating any GUI objects in it using the draw and update function. GUI objects will be able to added and removed at any time using the add and remove function. The remove function will search through the containers in the GUI Manager and remove it. This will help clean up the code for each of the states because there will be just one call of the GUI Manager at any given time.
Dependencies Required:Object Manager, Renderer
Features:Can add multiple GUIs to be rendered and controlled.
Completion Time:5 days
MethodsReturn Name Parameters Description
void Update Float fTime Updates all GUIs in the manager
void Draw NONE Renders all GUIs in the manager.
void Add CGuiBaseObject obj Adds a GUI to the manager.
void Remove CGuiBaseObject obj Removes a GUI from the manager.
121
Void ClearAll NONE Removes all GUIs from the manager.
Static CGUIManager*
GetInstance NONE Returns an instance of the GUI manager.
void Init NONE Setups up the GUI manager.
void Shutdown NONE Shut down the GUI Manager removing all objects from it.
System: Camera
Author(s):
Description: The camera module is responsible for the way the game camera moves in
the world as well as displaying all game objects to the player. The camera should be initialized during the Game’s initialization. During the menus the camera will be stationary as no movement is required. During the game, the camera will focus on keeping the player(s) on the screen at all times. The camera will move on the x axis following the level and will not move left past its locked position.
Dependencies Required: Access to the following:
CCamera CRenderer CDebugSystem CObjectManager
Accessed by the following: CGame CEventManager
Completion Time: 3 Days 1/2 day - Research 1 day - Implementation 1/2 day - Testing
122
1 day - Integration
Methods:
Return Name Parameters DescriptionVoid Initialize Void Initialize the camera
class and sets the default values to 0 or NULL
CCamera* GetInstance Void Get the current instance of the class
Void Update Float f_ElapsedTime Updates the time sensitive components
Const Matrix4&
GetViewProjection Void Gets the resulting matrix from multiplying the view and projection matrixes
Const Matrix4&
GetView Void Gets the view matrix
Const Matrix4&
GetProjection Void Gets the projection matrix
Const Matrix4&
GetWorldMatrix Void Gets the matrix of the camera in world space
Float GetNearFrustum Void Gets the plane distance of the near frustum plane
Float GetFarFrustum Void Gets the plane distance of the far frustum plane
Void SetProjection Float f_Field // field of view
Float fWidth // width of window
Float fHeight // height of window
Sets up the projection matrix
Void SetNearFrustum Float fDistance Sets the distance of the near plane of the frustum
Void SetFarFrustum Float fDistance Sets the distance of the far plane of the frustum
123
System: AIAuthor(s): Camron Weeks
Description: This module will be responsible for handling all of the actions for the non-player characters. This includes navigating the terrain of the level, selecting a target, attacking a target, and switching between states for the boss. When a non-player character is initialized it is given a place in the world to be and how it going to act for the duration of its life. Every game tick a non-player character will process their next move and see what they need to do next, if anything.
Dependencies Required: Event Manager, Collisions, Render System, Sound, Event Manager
Features: This system will handle:
Moving an NPC Selecting and Attacking a target for an NPC Handling different AI situations
Completion Time: AI System Total – 9 days
o Research – 3 dayo Implementation – 3 dayso Testing – 2 dayo Integration – 1 day
Special Info:AIType will be an enum holding the types of different AIs
Methods:Return Name Parameters DescriptionVoid Init AIType type,
Vec3f vPositionDetermines what style of AI an NPC will use and where it will start
Void Death None deallocates any resources used during the life of a NPC
Vec3f GetPosition None Gets current
124
position of a NPCAIType GetType None Gets which type
of AI style a NPC is
Void SetPosition Vec3f Position Gives a NPC a new position
Void Update Float fTime Updates a NPC position and calls ProcessAI
Void ProcessAI AIType type Handles what a certain NPC needs to do in any certain situation
Void AttackTarget Vector<Characters*> Loops through the a list containing the NPCs and PCs and determine switch one which is the best to attack and proceed to attack
Risks: Risk: Affected Resource: P C RFUnable to get the single player AI partner to navigate the terrain; for example navigating the platforms and not only the ground floor.
Camron Weeks 0.4 0.7 0.82
Response or avoidance:1.) Talk to classmates (Day 1, Hr1)2.) Talk to EPs (Day 1, Hr 5)3.) Talk to Jeremiah (Day 2, Hr 1)4.) Discuss scrapping idea (Day 5)5.) Scrap if determined necessary (Day 6, Hr 1)
Risk: Affected Resource: P C RFCompetitive player AI does not effectively
Camron Weeks 0.7 0.4 0.82
Response or avoidance:
125
challenge the player because if the complexity of the design
5.) Pair programming with engine lead (Day0)6.) Consult with AI course director (Day 2)7.) Redesign a simplified AI algorithm (Day 5)8.) Cut competitive player AI feature; make it single
player (Day 7)
Risk: Affected Resource: P C RFMaking the competitive player AI effectively dodge melee and ranged attacks coming towards it.
Camron Weeks 0.8 0.6 0.92
Response or avoidance:1.) Pair programming with engine lead (Day0)2.) Consult with AI course director (Day 2)3.) Redesign a simplified AI algorithm (Day 5)4.) Cut competitive player AI feature; make it single
player (Day 7)
Risk: Affected Resource: P C RFHaving the ranged AI from stacking on top each other while shooting at the player characters
Camron Weeks 0.4
0.3
0.58
Response or avoidance:1.) Talk to the team about how it should work (Day
0)2.) Get a certain way of managing build up of
ranged enemies (Day 1)3.) Implement a efficient system of handling build
up (Day 4)
System: Collisions
Author(s): TJ “Collide This” Farnie
Description: Collisions will be a namespace that houses various functions used for
collisions detection. This will enable other systems to reference these functions and detect collisions so they may react appropriately. These systems will access the collision functions by simply calling them and passing in the required parameters. All the functions return a bool, true if there is a collision, false if there is none. In the event of a collision, the functions will fill out a vector with the exact point of collision, so that that information may be used if needed. This
126
system will operate independent of the other systems, though other systems will need it to function.
Dependencies Required:Particle Manager, Object Manager, Sound System
Completion Time:3 days
Methods:Return Name Parameters Description
Bool AABBtoAABBCollision tAABB first//AABB of the first objecttAABB second//AABB of the second object
Detects collision between two AABBs. Returns true if the AABBs collide.
Bool AABBtoMeshCollision tAABB player//AABB of the playerD3DXMesh* mesh//Mesh of the object to check collision againstD3DXVector3& point//Point of actual collision
Detects collision between the player’s AABB and the mesh of an object. Returns true if there is a collision, and will then fill out the point vector with the position of the actual collision
Bool AABBtoSphereCollision tAABB player//AABB of the playerD3DXVector3 center//Center of the sphereFloat fRadius//Radius of the sphere
Detects collision between the player’s AABB and a sphere. Returns true if there is a collision
Bool SphereToSphereCollision
D3DXVector3 firstCenter//Center of the first sphereFloat fRad1
Detects collision between two spheres. Returns true if there is a
127
//Radius of the first sphereD3DXVector3 secCenter//Center of the second sphereFloat fRad2//Radius of the second sphere
collision
Bool SphereToMeshCollision D3DXVector3 spherePos//Position of the sphereFloat fRad//Radius of the sphereD3DXMesh* mesh//Mesh to check collision againstD3DXVector3 pos//Position vector to fill out if there is a collision
Detects collision between a sphere and a mesh. Will return true if there is a collision, then fill out the pos vector with the point of actual collision
Bool AABBtoPlaneCollision tAABB objAABB//AABB to check against the planeD3DPlane plane//Plane to check against
Detects collision against an AABB and a plane. Returns true if there is a collision
128
Memory Map RAM
Limit per thread: 128Total Limit: 256
Executable 3-4Mb
Internal Data Structures 200instances*16 Kb =3.2 Mb
TOTALCustom Mesh
Or.X Format
20core* 800verts* 32b= 512 Kb
TOTALCustom Animation Data
Or.X Files
20core* 30 sec * 30 frames*25bones* 16b = 7.2 Mb
Wwise Sound Banks 30 Mb GRAM
Total Limit:256Custom Mesh
Or.X Format
512 Kb (see above)
Custom Animation DataOr
.X Format
7.2 Mb (see above)
Partials 1000particals* 48b = 4.8 Kb
TEXTURES.Png/.Bmp/TBD
Or.Dds
20core * 25 Kb = 5 Mb
129
Code Review Plan
Schedule: Whenever
Location: Full Sail meeting rooms
Ownership of ModulesEveryone is the author of their own modules/code. If any person wishes to modify code authored by someone else, he is required to ask for permission from that author to do so. Under no circumstances will anyone modify code he does not have ownership of.
Coding standardsEveryone is required to follow the standards outlined in the StudioCodingStandards document. Exceptions to that rule are as follows:
Function/method comments are only required for important, unique, or hard to understand functions. It is up to the author to decide if it is such.
Functions are allowed for structs. This allows the code to use a memcpy to copy structs that need functions.
ConsequencesIf anyone fails to follow the above rules, he will be subject to the donut offense.1st time: Warning2nd time: Written Warning3rd time: Donut offence! He must buy donuts for the entire team.All subsequent offences will automatically be a donut offence.
130
Integration Plan
Integration
Person in charge: TJ “Integrated Success” Farnie.
Review: Internal Producers
Schedule: Before the end of the day, during the final 2 hours of work every session. If no integration needs to be done, then this time will be ignored.
Details: Module must be complete and tested before integration, and then tested again afterwards. If the module works as required and no bugs are found, as “safe” snapshot of the code will be created and archived.
Rollbacks: If code freeze occurs and a know crash is in the build. A roll back to a previous “safe” snapshot of the code will occur.
Source Control: Alienbrain
Check In/Out: Only the current author of the module can check in/out any module at a time.
Special Case
If a module is of critical importance and must be implemented ASAP, the author must request an immediate meeting to get that module integrated.
131
Testing Plans
Maintaining the Bug Database
Person in charge: Nick Guzman
The game will be tested and the bug database will be updated immediately after the integration phase. All team members are responsible for maintaining a list of all the bugs they have found, following procedure and completing a bug report form(see below), since the previous database update and must be submit them to the person in charge. The bugs are then assigned to the author of the broken code/module. Only C severity bugs will be allowed into the build.
Bug Description/ How to Produce
Severity Type
A B C TechGraphicDesign
Severity:A –Interrupts game flow (Must be handled immediately)B –Slows the game down (Must be handled before Milestones)C –Graphic Anomalies (Should be handled as polish)
TypeTech – (Programmer) pertains to code issuesGraphic – (Artist) pertains to art assetsDesign – (Gameplay) pertains to a balancing issue Working on bugs
The person assigned to working on a bug fix must do so as soon as a bug is found. The rules on working on bugs are as follows:
The person has 2 Hours to fix as a team. If it cannot be fixed, must request immediate help. If it requires more time, a roll back will be performed.
132
Game Folder Hierarchy
133