game design document€¦ · production document “incanto” white hat studios zachary weaver...
TRANSCRIPT
Production Document
“Incanto”
White Hat Studios
Zachary Weaver Brandon [email protected]
Germinal Rosell [email protected]
Tyler Weikel [email protected]
Marie Downey [email protected]
Dinesh Nannapaneni [email protected]
Robert Reategui [email protected]
Matt Socha [email protected]
Patrick Alvarez [email protected]
Gant Briseño [email protected]
Kevin Delorey [email protected]
Michael Diaz [email protected]
Dylan Hagen [email protected]
Joshua Jacobs [email protected]
Table of Contents Game Charter ...................................................................................................... 1
Vision Statement ............................................................................................. 1 Regular Policies and Procedures .................................................................. 1
Human Resources Policies and Procedures ............................................. 1 Discipline Policies and Procedures ........................................................... 2
Schedule Policies and Procedures ............................................................ 2 Communication Policies and Procedures ................................................. 3
Meeting Schedule ............................................................................................ 4 Schedule Maintenance ................................................................................ 5 Holiday Scheduling ..................................................................................... 5
Roles and Responsibilities ............................................................................. 6
Interactivity .......................................................................................................... 8
Summary .......................................................................................................... 8 Goal .................................................................................................................. 8
Interface ........................................................................................................... 8 Camera ......................................................................................................... 8
User Interface ............................................................................................... 9 Splash Images, Title Screen, & Menus ........................................................ 13
Title Screen ................................................................................................ 13
Main Menu .................................................................................................. 14 Options Menu ............................................................................................. 15
Controls/Controller Menu.......................................................................... 16 Achievements Menu .................................................................................. 17 Credits ........................................................................................................ 17
Loading Screen .......................................................................................... 18
Pause Menu ................................................................................................ 19 Game over screen ...................................................................................... 19
Interactive Rhythm ........................................................................................ 21
Timing ......................................................................................................... 21 Interactive Rhythm Diagram ..................................................................... 22
How the Player Marks Progress ................................................................... 23 Altar Gates (Checkpoints) ......................................................................... 23 Mini-Map ..................................................................................................... 23 Location Feedback .................................................................................... 23
Level-up ...................................................................................................... 23 Achievements ............................................................................................ 23
Other ways to measure progress ............................................................. 24 Detailed Design Breakdown ............................................................................. 25
Front End Flow Chart .................................................................................... 25 Game Flow Chart ........................................................................................... 26 Glossary of Terms ......................................................................................... 26
Combat System .................................................................................................. 29 Characters ......................................................................................................... 30
Monk (Player) ................................................................................................. 30
Brief Description ........................................................................................ 30
Visual Design ............................................................................................. 30
Dialogue...................................................................................................... 32 Behaviors ................................................................................................... 32
Attributes .................................................................................................... 32 Spell System .............................................................................................. 33
Wolf ................................................................................................................ 38 Brief Description ........................................................................................ 38 Visual Design ............................................................................................. 38
Dialogue...................................................................................................... 40 Behaviors ................................................................................................... 40 Attributes .................................................................................................... 41
Alpha Wolf...................................................................................................... 42 Brief Description ........................................................................................ 42
Visual Design ............................................................................................. 42 Dialogue...................................................................................................... 42
Behaviors ................................................................................................... 42
Attributes .................................................................................................... 43 Shadow .......................................................................................................... 44
Brief Description ........................................................................................ 44
Visual Design ............................................................................................. 44 Dialogue...................................................................................................... 46
Behaviors ................................................................................................... 46 Attributes .................................................................................................... 47
Amphibian ...................................................................................................... 48
Brief Description ........................................................................................ 48
Visual Design ............................................................................................. 48
Dialogue...................................................................................................... 50 Behaviors ................................................................................................... 50
Attributes .................................................................................................... 51 Garuda ............................................................................................................ 52
Brief Description ........................................................................................ 52
Visual Design ............................................................................................. 52 Behaviors ................................................................................................... 53
Attributes .................................................................................................... 53 Final Boss Fight ......................................................................................... 53
Levels and Maps ............................................................................................ 55
Verdenice ....................................................................................................... 55
Goal ............................................................................................................. 55 Level Travel ................................................................................................ 55 Scale ........................................................................................................... 55
Player / Enemy Interactions – Behaviors ................................................. 55 Spell Interactions – Behaviors .................................................................. 55 Environmental Interactions – Behaviors ................................................. 56 Ambient Environmental Aspects/Objects in the Level ........................... 56 Time ............................................................................................................ 57 Map ............................................................................................................. 57
Level Walkthrough – Verbal Map .............................................................. 63
Level Breakdown – Walkthrough and Camera Concepts ....................... 65 Storyboards ................................................................................................... 79
Game Logic, and Rules .................................................................................... 103 Interaction Component Matrix .................................................................... 103 F.A.Q. ............................................................................................................ 105
When does the game come out? ............................................................ 105 How many spells will the character have? ............................................ 105
Why can’t I Melee? ................................................................................... 105 Why can’t I dodge, block or parry? ........................................................ 105 How long is the game? ............................................................................ 105 Why is the game fun? .............................................................................. 105 Can you describe the story of the game? .............................................. 106
What is the genre of the game? .............................................................. 106 What is the look and feel of the game?.................................................. 106
What is white hat studio?........................................................................ 106
How much is the game going to cost? .................................................. 106 Where can I get this game? .................................................................... 106
Reference of Key Elements ............................................................................ 107
Winning/Losing ........................................................................................... 107 Transitions ................................................................................................... 107
Rewards ....................................................................................................... 107 Achievements .............................................................................................. 108
Art and Production Design ............................................................................ 109
3D Art & Animation Deliverables ............................................................... 109
2D Art (HUD/Menu/Particle/Textures) Deliverables .................................. 114
Sound Effects Deliverables ........................................................................ 114 Music Deliverables ...................................................................................... 117
Cutscenes/Pre-rendered scene Deliverables ............................................ 118 Technical Design Overview ........................................................................... 119 Milestone Deliverables ................................................................................... 120
Core .............................................................................................................. 120 Alpha ............................................................................................................ 121
Beta .............................................................................................................. 121 Gold .............................................................................................................. 122
System Architecture ....................................................................................... 124
Context Model Description............................................................................. 125
Module Breakdown ......................................................................................... 128 Globals ......................................................................................................... 128
CDebugOutput ......................................................................................... 128
CEffectsManager ..................................................................................... 129 CEventSystem .......................................................................................... 131 IListener .................................................................................................... 133 CEvent ...................................................................................................... 134 CSingleton ................................................................................................ 138 CGameTimer ............................................................................................ 139
Data Structures ............................................................................................ 141
CDynArr .................................................................................................... 141 CHashMap ................................................................................................ 143
CQueue ..................................................................................................... 145 CString ...................................................................................................... 147
Game States................................................................................................. 149 State Manager .......................................................................................... 149 IGameState ............................................................................................... 151
Animations ................................................................................................... 153 CAnimationManager ................................................................................ 153 CAnimation ............................................................................................... 156 CAnimationInterpolator ........................................................................... 158 CAnimationBlender ................................................................................. 160
Renderer ...................................................................................................... 162 CEngineRenderer .................................................................................... 162
CRenderNode ........................................................................................... 165
CRenderContext ...................................................................................... 167 CRenderPipeline ...................................................................................... 169 CResourceManager ................................................................................. 171
IManager ................................................................................................... 173 CGeometryManager ................................................................................. 174
CGeometryData ........................................................................................ 176 CRenderEntity .......................................................................................... 178 CTextureManager .................................................................................... 180
Spells ............................................................................................................ 182
CSpellManager ......................................................................................... 182
ISpell ......................................................................................................... 183 CSpellSlot ................................................................................................. 185
ISpellObject .............................................................................................. 186 CSpellEffectManager ............................................................................... 187 CSpellEffectList ....................................................................................... 188
ISpellEffect ............................................................................................... 189 CSpellEffectSlot ....................................................................................... 190
WWise .......................................................................................................... 191 PreCompWWise ....................................................................................... 191 WWise ....................................................................................................... 193
Objects ......................................................................................................... 195
ICharacter ................................................................................................. 195 CActor ....................................................................................................... 197 CAgent ...................................................................................................... 198
CAIDirector ............................................................................................... 199 IState ......................................................................................................... 201 CFSM ........................................................................................................ 202
Miscellaneous .............................................................................................. 203 CCamera ................................................................................................... 203 CGame ...................................................................................................... 205
CObjectManager ...................................................................................... 206
Derivation Charts ............................................................................................ 208 Memory Map .................................................................................................... 210
Code Review Plan ........................................................................................... 212 Integration Plan ............................................................................................... 213 Testing Plans................................................................................................... 214
Internal Testing ............................................................................................ 214 External Testing .......................................................................................... 214
Bug handling ............................................................................................... 214 Responsibilities ........................................................................................... 215
Sample External Testing Information Form........................................... 215 Sample Bug Report ................................................................................. 216
File Hierarchy .................................................................................................. 217
1
Game Charter Vision Statement
The members of White Hat Studios are committed to the objective of
creating a fun and highly polished game project. This objective will be accomplished through cooperative teamwork, maintaining realistic project scope, and free opportunity for every member to share ideas and constructive criticism in an open-minded environment. The team is committed to fully completing each milestone and all its associated work, with time to spare while maintaining a balanced work schedule that allows the team to avoid burnout. The team recognizes that the game is paramount; design decisions and compromises will be made on the basis of “what is best for the game.” In summary, White Hat Studios seek both a collaborative effort and to present a solid game that represents fully the expectations of all team members at the end of the five-month project.
The purpose of this project is: to create a final project game with a team of programming, art, and production students using the skills acquired through the Game Development Bachelor of Science (GDBS), Game Art Bachelor of Science (GABS), and Game Design Master of Science (GDMS) programs; to fulfill graduation criteria; to gain five months of “real-world” game production experience; and to create a product worthy of inclusion in a high-quality portfolio for potential employers.
Regular Policies and Procedures
1. All Policies and Procedures are subject to change pending the approval of all IPs and notification of all team members.
2. All team members will physically sign the most current version of the Project Charter to signify their acceptance and willingness to adhere to the tenants therein.
a. The IP(s) are responsible for storing a hard copy of an agreement with all team members‟ signature agreeing to the hereby stated Policies and Procedures.
b. All team members that have signed the Project Charter will be bound by the Policies and Procedures therein.
Human Resources Policies and Procedures
1. All team members will be expected to complete 52 hours of work per week.
a. Exceptions will be made for classes and on an as-needed basis. 2. Team members will abstain from offensive behaviors towards other Team
members.
2
a. „Offensive‟ is defined subjectively b. Grievances must be voiced in writing to IPs.
3. Bathroom breaks are allowed anytime. 4. Smoking breaks and any other breaks that take more than 5 minutes need
to be notified to the Internal Producer(s). 5. Team members are expected to arrive on time at the designated room for
every team meeting. 6. Aggressive behavior will not be tolerated. 7. Any conflict between the IPs shall be handled outside the purview of the
team to avoid damage to team cohesion.
Discipline Policies and Procedures
1. Infractions by any team member will result in the following procedure. a. The first infraction will be documented and reported to the External
Producer, Art Director, and the Course Instructor. i. The team member in question will be informed in private.
b. The second infraction will be documented and reported to the External Producer, Art Director, and the Course Instructor.
i. The team member in question will be disciplined publicly. c. The third infraction will be documented and reported to the External
Producer, Art Director, and the Course Instructor. i. The IPs will request a meeting with the External Producer,
Art Director, Course Instructor, and the team member in question to discuss methods for fixing the recurring issue.
d. Infractions will be defined as failures to abide the policies and procedures set forth in this Charter in any of the Sections therein.
Schedule Policies and Procedures
1. White Hat Studios Team will work from Monday to Friday accomplishing 52 hours of work per week.
a. Monday, Wednesday, and Friday will start at 9AM and will end at 9PM constituting twelve (12) hour days.
b. Tuesday and Thursday will start at 9AM and finish at 5PM, constituting 8 hour days.
c. Turn shifting (Starting at 1PM instead of 9AM or skipping any four hour segments of time) will be allowed under special circumstances.
i. Special Circumstances include not having a place to work and or other problems that impede the majority of the team to meet at the same location.
1. Majority of the team is more than half the team (7 members including IPs) or a higher number of people (eight or above) arbitrarily decided by the IPs.
3
d. In case that four hours of work are lost due to turn shifts during twelve (12) hour days (Monday, Wednesday, or Friday), the following day will be considered a 12 hour day instead with the exception of Saturdays and Sundays
i. If a turn shift occurs on a Friday, Tuesday will be considered a twelve (12) hour day.
2. At the beginning of all meetings it is the responsibility of the Internal Producer(s) to discuss the plan for the day.
3. At the end of each meeting, before everyone leaves, the team will agree on the time and location that the team will be working.
a. It will be the Internal Producers‟ responsibility to acquire a room for the team to meet the following day and communicate the location to the team.
b. If the room can‟t be reserved for any reason, it is the Internal Producer(s)‟s responsibility to notify the rest of the team.
c. In the event that a room is not available, Kevin, Marie, or Zack‟s apartment will be used.
4. Sundays will be off for the team, unless there is work that needs to be accomplished for the team‟s success.
a. Extra hours or extra work days will be added by the IPs as needed.
Communication Policies and Procedures
1. Cell Phone numbers will be preferred to communicate urgent messages to other team members, since it is the most immediate form of communication.
a. All Team Members are encouraged to maintain their cell phones turned on and at hand so that in case of an emergency or an urgent question they can be notified immediately.
b. Through cell phone text messages and calls, students are to communicate to the Internal Producers about:
i. Arriving late during a workday (Include the reason). ii. Health Issues that impede assisting to work. iii. Car Accidents. iv. Urgent work related messages. v. Any other problems that Team Mates consider an urgent
matter for the Internal Producer to know. vi. Any questions they have on assignments.
c. Cell phone use during work sessions is forbidden, unless a Team Member is expecting urgent calls.
i. Team members will request permission from IPs to make phone calls.
ii. Texting is not allowed because this takes away time from work.
4
d. If the IPs change the meetings and/or working sessions, Team Members will be notified by cell phone and the IPs will inform them of:
i. New Location (If applicable). ii. New meeting time.
2. Use of Facebook will not be allowed during scheduled work time. 3. Skype will be used at all times during working sessions for the best
interest of the team. It is especially important for team members working from home to remain available via Skype. During Skype meetings the following Policies and Procedures will be followed:
a. All Teammates summoned to a Skype meeting will communicate using a single window.
i. Different teammates on the Skype meeting might be assigned different window conversations in case that there are too many members on a meeting.
b. All content submitted to Skype is to be kept professional and relevant. The IPs reserve the right to copy for archiving purposes any conversations held over Skype.
c. Microphone and Headphone sets are preferred to be used, as this communicates more than just text.
d. If Headphones and Microphone sets are not available, typing will take place as the main communication form. When typing please adhere to the following Policies and Procedures:
i. Please, make sure that you make use of existing English words only. No abbreviations, no slang; just proper English.
e. Avatar pictures should be professional. No sexually suggestive images, no pornographic images, no racist images, no images that contain gore or violence of any kind, no images that denigrate, insult, or mock religions, genders, philosophies and or any other systems of belief.
Meeting Schedule
1. White Hat Studios will meet daily Monday through Friday to complete project work.
a. Project work is defined as any form of coding or asset creation, integration, or testing performed on Incanto.
b. Each day team members will be expected to contribute eight (8) hours of work to the Project.
2. All working team meetings will take place on the Full Sail campus. a. See “Schedule Policies and Procedures” in the previous section for
further information regarding exceptions to this rule. 3. Additional non-working meetings may be scheduled.
a. Non-working meetings will be used to manage team morale. b. Locations will be decided as needed.
4. Builds will be generated each night.
5
a. During Production phases, safe builds must be produced on Mondays, Wednesdays, and Fridays.
b. Safe builds will be uploaded to Alien brain upon completion.
Schedule Maintenance
1. If one entire day is canceled during a working scheduled week (due to any reason), that missed day will be rescheduled for Saturday (same normal break time policies apply).
2. In case of schedule lag, Sundays may be used as make-up days. 3. In the case of an individual missing a scheduled day of work, that
individual is still responsible for the work assigned to him for that day. a. The missing individual shall endeavor to remain in communication
with the team via Skype and/or all other available methods. b. The missing individual‟s work shall be uploaded to Alienbrain so
that his respective lead can check the work. 4. If a team member will not be able to work for long periods of time, Internal
Producers will divide the workload evenly. 5. At the beginning of the working day, fifteen (15) minutes will be reserved
to check that team members are staying within schedule by performing Turbo-Team Meetings.
6. Before leaving for the day, the IPs will be responsible for updating the work in Hansoft.
7. If a team member is falling behind schedule, he/she will let the Internal Producer know ASAP so that they can reassign and/or distribute the work in order to stay within schedule.
a. If a team member falls behind schedule recurrently, it will be brought up to the attention of the External Producers in order to deal with the problem.
8. In any day, only assigned tasks for the specific day will be worked on by the team, unless a lead in the schedule is generated.
a. If an individual finishes their task ahead of schedule and his work has been reviewed by the corresponding lead, the team member might then move to the next task.
9. In case of a time lead on schedule, the spare time will be assigned to additional tasks.
10. In case of schedule lag or during crunch time, the team will work extra hours to ensure all tasks will be finished on time.
a. Features that need to be cut will be cut only after consideration by the IPs and the leads.
Holiday Scheduling
1. National Holidays will not be scheduled work days for the team. a. This will be reflected in the capacity plan. b. Team members can choose to work if they want to.
6
c. Days to be considered holidays through the duration of Final Project are:
Table 1. Holidays
Summer Break July 2nd – July 11th
Labor Day September 5
Roles and Responsibilities
1. Certain team members will fill the roles of an Art Lead and Tech Leads. 2. The following tables lay out the responsibilities of the Art and Tech Leads:
Table 2. Lead Artist
Job Title: Lead Artitst
Name: Matt Socha
Job Description: The Lead Artist (LA) supervises all other artists in developing the art for the FP game. He ensures that all feature tasks are completed and integrated uniformly into the game. The LA represents the first step in the management chain of command, and as such, acts as a liaison between the IPs and the art team.
Responsibilities: Reviews the art submitted by other artists once a week for all artists.
Ensure that the Asset Pipeline is being followed
Submits reviews to IPs for Weekly Evaluations.
Work with QA to assign priorities and offer direction to find and fix bugs.
Complete individual tasks as required.
Remain current on all art used in the game.
Provide assistance to any team artist in need.
Facilitate communication between artist and IPs/EPs/Artists.
Maintain Professionalism among Artists.
Motivates team members and maintains a positive energy.
Authority to: Administrate the art team‟s completion of tasks.
Maintain appropriate checklists.
Provide assistance to any team artist in need.
Help IPs assign tasks to artists.
Request changes regarding features, Policies &Procedures, and schedule work packages.
Reporting Relationships:
Reports to Internal Producers.
Communicates with all team Artists.
Qualifications: Excellent communication and people skills.
Knowledge of art foundation.
Communications The LA must communicate daily and weekly progress to the art
7
Requirements: team during Turbo Team Meetings. The LA is also required to communicate current progress and relevant issues directly to the IPs.
Table 3. Lead Programmers
Job Title: Lead Programmers
Name: Gant Briseño & Joshua Jacobs
Job Description: The Lead Programmers (LPs) supervise all other programmers in developing the code for the FP game. They ensure that all feature tasks are completed and integrated uniformly into the game. The LPs represent the first step in the management chain of command, and as such, act as a liaison between the IPs and the programming team.
Responsibilities: Integration of all code.
Code reviews will be done every week; LP will ensure that the coding standards are being followed.
Submits reviews to IPs for Weekly Evaluations.
Implementation of code into the game.
Work with QA Team to assign priorities and offer direction to find and fix bugs.
Complete individual tasks as required.
Remain current on all systems used in the game.
Provide assistance to any team programmer in need.
Facilitate communication between programmers and IPs/EPs/Artists.
Motivates team members and maintains a positive energy.
Authority to: Administrate the programming team‟s completion of tasks.
Provide assistance to any team programmer in need.
Help IPs assign tasks to programmers.
Sign off on the technical design of the game.
Request changes regarding features, Policies &Procedures, and schedule work packages.
Reporting Relationships:
Reports to Internal Producers (TBD).
Communicates with all team programmers.
Qualifications: Strong inter personal communication
Good listener
Strong organizational skills
Diligence
Communications Requirements:
The LPs must communicate daily and weekly progress to the programming team during Turbo Team Meetings. The LPs are also required to communicate current progress and relevant issues directly to the IPs.
8
Interactivity
Summary Incanto is an Action RPG game that takes place in a medieval-like natural environment. Your mission is to take the role of a monk as he takes revenge on the Deity Garuda for destroying the shrine of the Dragon God. The player will accomplish this by traversing through a natural environment map that includes a forest, ruins, waterfalls, and a cave that leads to the end boss. The environments will be filled with enemies that will be hostile towards the player and will try to damage, and eventually kill him. To defend himself the player will have a range of spells that will provide different ways of attacking and dispatching of enemies. At the end of the play through, the player will have to fight a boss that will be broken in three phases. Once the boss is defeated, the player will win the game. If the player dies during his adventure, the game will end, and then re-start at the nearest checkpoint.
Goal The goal of this game is to defeat the boss at the end of the level. To accomplish this, the player will have to travel through environments that are populated with enemies that will try to hinder the player‟s progress by attacking him or her. To counter enemies the player will use spells that level up through repetition getting stronger as they gain levels.
Interface
Camera
1. Third Person Perspective View: a. The player can visibly see the body of the controlled character. b. Field of View is approximately 45 degrees. c. The camera is approximately 5 yards behind the character along
the circumference of a circle; the position is based on the character‟s rotation.
2. The camera‟s behavior is in a soft attached state, targeting the character. 3. Controlling the camera:
a. The camera can be controlled with the Right Mouse Button, holding the mouse button will allow the camera to perform yaw and pitch rotations around the character.
b. Basically rotate around the X and Y axis always keeping the character in view.
9
c. Whenever the Left Mouse Button is pressed on a visible enemy agent, the camera will perform a soft turn-to behavior targeting the agent emulating a “Lock-On Targeting System.”
d. The camera will still stay behind the character keeping the body in view and looking in the direction of the agent.
e. The speed of the camera rotation is based on the mouse sensitivity.
User Interface
1. Spell Wheel: a. The spell wheel will indicate the current spell set to the casting
button. b. Each spell will be represented by a small image
i. Upon mouse over the image will display a tool-tip detailing the spell.
c. The player can scroll through the spells to highlight any one at a time.
d. The spell located at the top of the wheel is the spell that will be used upon clicking a target.
2. Mini-Map: a. The mini-map will be a circular reference at the top-right of the
screen that will indicate the location of the enemies relative to the player and the location of objects of interest.
Figure 1. Concept Camera Perspective 1
10
Figure 2. Concept Camera Perspective 2
Figure 3. Concept Camera Perspective 3
11
Figure 4. Concept Camera Perspective 4
Figure 5. Concept Camera Perspective (Rotated)
12
Figure 6. Spell Wheel Concept
13
Splash Images, Title Screen, & Menus
The GP game studios splash screen fades in upon game start (1 second fade in, 3 seconds screen time). The GP studios splash screen fades out (1 second fade out) and the White Hat Studios splash screen fades in (1 second fade in, 3 second screen time). The White Hat Studios logo fades out (1 second fade out), followed by the title screen fading in (1 second fade in, stays on screen and plays title screen music until player input). The title screen will then appear and player will be able to access the Main Menu by pressing any key.
1. Sounds a. Interactions will play a chirping sound. b. Confirming selections will play a chiming sound. c. Cancelling selections will play a distinct lower chirping sound.
2. Transitions a. All transitions will be like fire burning an image onto the screen.
Title Screen This will be displayed at the beginning of the game saying “press any button”
1. Start Game will direct the player to the Main Menu.
Figure 7. Title Screen Concept
14
Main Menu
1. When transitioning to the Options or Achievement Menus the menu will slide across the screen revealing the new menu.
2. Play: Initiates a play session. 3. Options: Opens the “Options Menu.” 4. Achievements: Opens the “Achievements Menu” 5. Exit: Terminates the application.
Figure 8. Main Menu Concept
15
Options Menu
1. Video: a. Gamma/Brightness: Adjusts the brightness of the screen image to
suit player preference. b. Resolution: Adjusts the number of pixels displayed on screen to
improve the sharpness of the image. c. Windowed Mode: Toggles between windowed and full screen
modes. i. Windowed: The application runs in a distinct window. ii. Full Screen: The application fills the screen without any
window seams. d. V-Sync: Adjusts the position of the image on the screen.
2. Sounds: a. Master Volume: Toggles the overall volume of the game. b. Music Volume: Toggles the volume of the music in the game. c. SFX Volume: Toggles the volume of the effects and voice acting
played during the game. 3. Controls: Opens the Controller Menu.
Figure 9. Options Menu Concept
16
Controls/Controller Menu
1. The Controller Menu will explain the controls to the player. a. Refer to the Control section for further details.
Table 4. Control Scheme
Action Keyboard Xbox 360 Controller
Walk/ Run Forward
W key Tilt/ Press Forward on left thumb stick
Walk/ Run Backward
S key Tilt/ Press Backward on left thumb stick
Walk/ Run Left
A key Tilt/ Press Left on the left thumb stick
Walk/ Run Right
D key Tilt/ Press Right on the left thumb stick
Cast spell Left Mouse Click A, B, X, Y, RB depending on the spell assigned by Player
Change Spell Middle Mouse Button Scroll Left/Right Triggers
17
Achievements Menu
1. It shows the achievements acquired through playing the game. 2. Achievements not yet acquired will be grayed out. 3. Refer to the achievements sections for specific achievement information.
Figure 10. Achievements Menu Concept
Credits
1. Scrolls the Credits. 2. Any button input will return the player to the Main Menu screen.
18
Loading Screen
1. Gameplay tips will display during load time. 2. Tutorial images will be rendered on screen.
a. The player may scroll through them with the arrow keys. 3. Once the loading time is completed, the phrase “Press Space Bar” will
appear. 4. Pressing the space bar will then start the game 5. A flame animation will inform the player that the game has not frozen.
Figure 11. Loading Screen Concept
19
Pause Menu
1. Play: Return to playing the game. 2. Options: Opens the Options Menu. 3. Achievements: Opens the Achievements Menu. 4. Exit: Terminates the play session and returns the player to the Main Menu
screen.
Figure 12. Pause Menu Concept
Game over screen
1. When the player wins the game the game goes to the credits screen 2. When the player loses the game:
a. Continue: Returns the player to the last checkpoint to resume play. b. Quit: Returns the player to the Main Menu screen. c. Check points are the start of each area (Forest, Ruins, Waterfall,
Path to Cave, Cave)
20
Figure 13. Game Over Concept
21
Interactive Rhythm
Timing
1. The typical play session should last between 10 minutes and 15 minutes. 2. The entire game will last 15 minutes. 3. Replay value will be maintained through the different ways the player can
choose to level up their spells. a. By choosing to use different spells with different frequencies will
change the level of the spells the player will have acquired by the time they reach the boss.
4. Additional replay value will come from an achievement system that will also serve to inform the player of progress in the game.
5. Each enemy encounter will be followed by a 8-10 second period of movement.
6. Enemy kill times (per individual enemy): a. Wolf – 5 Seconds b. Alpha Wolf – 8 Seconds c. Shadow – 5 Seconds d. Amphibian – 5 Seconds e. Garuda (Final Boss) – 3.5 mins
i. Minions – 38 Seconds 1. Amphibian – 5 Seconds 2. Shadow – 5 Seconds 3. Alpha – 8 Seconds 4. Two Wolves – 10 Seconds 5. Garuda (Wings) – 10 Seconds
ii. Altar – 10 Seconds iii. Repeat Four Times (4 x 48 = 192 Seconds)
22
Interactive Rhythm Diagram
Players Starts the Games
Player explores the Environment
Player encounters Enemies
Player casts spells on enemies
Re-Spawn
Player Loses Player wins
Player moves into next Environment
Figure 14. Basic Interactive Rhythm/Flow
23
How the Player Marks Progress
Altar Gates (Checkpoints)
1. At the end of each major section of the path the player will encounter altars.
a. Each altar will have an associated color related to the colors for the spells.
b. The player will be blocked by a glowing barrier until the altar is struck with the corresponding spell.
c. Once the altar is properly struck it will give audio and visual feedback to inform the player.
2. The purpose of the altars is to teach the player the color/spell system in preparation for the final battle where this knowledge will be put to the test.
Mini-Map
1. The mini-map will display at the top right corner of the screen. a. Enemy positions, relative to the player, will display on the mini-map. b. When enemies die they will fade from the mini-map.
Location Feedback
1. Upon entering a different section of the world an introduction will display. 2. The name of the section will display for the player (e.g. upon entering the
forest a message will display saying “The Forest”). 3. The image will fade out after five seconds.
Level-up
1. Each spell icon (circular image on the spell wheel) will fill with experience upon successful uses (see Spell System section for details on success).
a. This meter will reset upon a level up. 2. When a spell levels up, a short particle effect will generate that will match
the color of the design property of the spell. a. Green for Gust (Wind Spell). b. Red for Conflagration (Fire Spell). c. Brown for Quake (Earth Spell). d. Blue for Riptide (Water Spell). e. White for Refresh (Holy Spell).
Achievements
1. When certain conditions are met, certain Achievements will display indicating player completion of content.
24
2. The name of the Achievement will display for the player. 3. The image will fade out after five seconds.
Other ways to measure progress
1. As the player advances through the game, the enemy groups will increase in numbers thus increasing the difficulty of the game.
2. The player will encounter a boss at the end of the level, marking the end of the game.
25
Detailed Design Breakdown
Front End Flow Chart
Into / Title Screen
Main Menu
Start Game Options Credits
ProfileSelection /
Saved Games
In Game
Acheivments
Exit Game
IfNo input for 30
seconds
Pause Menu
Figure 15. Front End Flow Chart
26
Game Flow Chart
New Game Load Level Enter Forest
Move Forward
Start at Checkpoint
Load Level Load Game
Encounter Enemies
Fight Enemies
Player Health >= 0
Yes
Defeat Enemies
NoEnter Cave
Area
No
Fight Boss Yes
Defeat Boss
Complete Game
Figure 16. Game Flow Chart
Glossary of Terms Achievements – A game award that can be unlocked through the player performing specified requirements. AOE – The area affected by either spells or enemy attacks measured in yards. Cast Spell – A combat ability in which the player character casts a magic spell based on input. Camera – A view frustum that displays the games world to the player and events. Character – Main playable character for Incanto; the Player Character. Change Spell – An interface ability in which the player changes the currently selected spell. Checkpoint – A point in game play that the player will be re-spawned to if he has died or hit a game over, they get triggered based off events or progressed areas. Cool down – The minimum amount of time that needs to pass before a spell can be re-used again.
27
Credits – Screen where every person that took part in the game making will be listed along with their roles in the process. Field of View – The angle at which you can view the space before your eye. Damage – The amount subtracted from either the player‟s or the enemies‟ HP. Debuff – Temporary alteration to player‟s or enemies‟ attributes. Duration – The amount of time a spell lasts in screen. Experience Points – Points assigned for using spells. Accumulation leads to increased levels. Increased levels increase spell impact. Failure (Spell) – When a spell doesn‟t damage an enemy. Frustum – Six planes that are used to define an amount of space. Field of View – Distance or range of the games world that the games camera will allow the player to view. Game over – Death in the game world (not a final state), which prompts the choice to quit or to continue from a checkpoint. Gamma – Attribute that adjusts games brightness. HP – Health Points that reduce when the player or the enemies are struck by attacks. Level-Up – Result of reaching a predetermined number of Experience Points. Spells get stronger through usage repetition. Master Volume – The overall volume of the game; modulates the Sound Effects and Music volume. Music Volume – Controls the volume of all music in the game. Pause – Interrupts gameplay to allow the player to step away from the keyboard. Perspective – The state of existing in space before the eye. Pitch – Defines the angle of rotation along the X axis. Player Progress – Amount of time the player has spent playing the game along with how far along they are until finishing the game.
28
SFX Volume – Sound attribute for sound effects. Splash Screen – Screens that fades in and displays teams and licensed software that was involved in the games making. Success (Spell) – Whenever a spell connects to an enemy and deals damage. Range – The distance that a spell reaches measured in yards. Roll – Defines the angle of rotation along the Z axis. Targeting – An in-game mechanic that will select an enemy NPC and allow the player to cast towards their position. Tool-Tip – A help message that defines an option in the game. Yaw – Defines the angle of rotation along the Y axis. .
29
Combat System
1. Targeting
a. Enemies are targeted by highlighting them with mouse cursor and clicking the left mouse button to cast the spell on them.
b. The camera will remain unaffected during the targeting and casting phase.
2. Range a. Range will be marked in yards. b. When clicking a spell cast, if the player is out of range there will be
an audio reminder that the spell is not castable. 3. Damage
a. Both the player character and the enemies will have Health Points (HP).
b. HP decrease when hit by spells and abilities. c. HP does not regenerate independently of a healing spell.
4. Spells a. The player will use spells to damage enemies. b. See the Spell System section in Characters for details about the
Spell System.
30
Characters
Figure 17. Character Art Style Guide
Figure 18. Character Art Style Guide II
Monk (Player)
Brief Description The Monk represents the player‟s avatar. He will be the means through which the player interacts with the world. He will be able to caste spells to defeat enemies.
Visual Design All of the monk‟s clothing will be made of cloth. Most of his torso will be exposed, showing his many tattoos. His tattoos will be glowing. The Monk will be six feet tall.
31
Figure 19. Player Tattoo Color Concept
Figure 20. Player Texture Concept
32
Dialogue
1. Upon spawning or respawning: a. “For the Dragon!”
2. When casting: a. Gust:
i. “Get away from me!” ii. “Be gone, filth!
b. Riptide: i. “Drink up!” ii. “Drown in the deeps!”
c. Earthquake: i. “The earth rages!” ii. “I‟ll crush you!”
d. Conflagration: i. “By fire be purged!” ii. <in hales> “Burn!”
e. Refresh: i. “Do not forsake me!” ii. “I refuse to die.”
3. When injured: a. <grunting>
4. When cast fails: a. “I cannot reach it!”
5. Upon death: a. “I have… failed… you.”
Behaviors
1. Walk: the player moves around the environment. 2. Run: the player moves around the environment quickly. 3. Spells: the primary form of combat is spell casting.
a. Gust b. Riptide c. Earthquake d. Conflagration e. Refresh f. For spell attributes, see “Spells” section.
Attributes
Health 25 hp
Walk Speed 2.5 ft/s
Run Speed 4.5 ft/s
33
Spell System
1. Spell Behaviors a. Each spell will have a unique ~1.5 second casting animation to
occur concurrently to the spell effect animations. b. Each spell will have a unique audio-visual effect.
i. Quake: 1. The player produces a projectile that strikes at the
feet of the enemy. 2. The ground at the feet of the enemy erupts (not lava,
just an explosion) in an area around the targeted enemy causing all nearby enemies to slow down.
3. This produces the sound of two rocks being crushed together.
ii. Gust: 1. The player extends an arm toward a target and
pushes enemies back with a mighty wind. 2. This produces the sound of a gust of wind.
iii. Riptide: 1. The player makes a rising motion toward an enemy. 2. A geyser bursts out of the ground under the enemy
stunning nearby enemies. 3. This produces the sound of surging water.
iv. Conflagration: 1. The player creates a flame and drops it on the ground
where it spreads into a small inferno. 2. This produces the sound of a roaring blaze.
v. Refresh: 1. The player glows brightly and HP are restored. 2. This makes a harmonious sound.
c. Success i. Counts toward leveling up a given spell. ii. Requires that the spell deal damage to at least one enemy.
d. Failure i. Does not count toward leveling up a given spell. ii. Requires that the spell fail to cause damage at any point
during its duration. 2. Cooldowns
a. Cooldowns will run concurrently. 3. Tool-Tips
a. Spell tool-tips will display upon mouse-over. b. Spell tool-tips will display the current level of the spell, the progress
as a percentage toward leveling-up the spell, and its „flavor text‟. c. Spell tool-tips‟ flavor texts will reflect potential changes to individual
spells through the leveling process via the text:
34
i. “Quake: Hex the ground beneath an enemy causing the earth to erupt tripping surrounding enemies.”
ii. “Gust: Create a mighty wind that blows enemies away.” iii. “Riptide: Summon a geyser at the feet of an enemy stunning
it and any enemies within range.” iv. “Conflagration: Burn the ground at your feet to injure nearby
foes v. “Refresh
4. Leveling Up Spells a. Experience toward a given spell is awarded by the first hit to an
enemy following the casting of the spell (i.e. per use). i. E.G. Conflagration may strike no enemies if cast outside of
combat and will therefore not generate an experience point. b. Notification of Level Up
i. Each time a spell reaches a new level the player will receive feedback in the form of an animation around the player character.
ii. The animation will be accompanied by a textual explanation of what has happened: “X Spell has reached level Y!”
Figure 21. Spell Level Up Concept
35
Figure 22. Quake Concept
Figure 23. Gust Concept
Figure 24. Riptide Concept
Figure 25. Conflagration Concept
36
Figure 26. Refresh Concept
37
Table 5. Spell Breakdown
Spell Name Damage Spell Effect
AOE Notes Duration Range Cooldown Uses to Level-
Up
Quake LV 1
4 HP Target Reduces Movement
Speed 35%
.5 Unit Radius Projectile Debuff:
2.5 Seconds
8 6 Seconds 13 2 HP
Splash 2 Unit Radius Around Target
Quake LV 2
4 HP Target Reduces Movement
Speed 40%
.5 Unit Radius Projectile Debuff:
2.5 Seconds
8 6 Seconds 24 3 HP
Splash 2.5 Unit Radius Around Target
Quake LV 3
5 HP Target Reduces Movement
Speed 45%
.5 Unit Radius Projectile Debuff:
2.5 Seconds
8 6 Seconds 4 HP
Splash 3 Unit Radius Around Target
Gust LV 1 3 HP Pushback
5 Units
5 Unit Radius Cone N/A 5 6 Seconds 13
45 Degree Arc
Gust LV 2 5 HP Pushback
6 Units
5 Unit Radius Cone N/A 5 6 Seconds 24
45 Degree Arc
Gust LV 3 7 HP Pushback
7 Units
5 Unit Radius Cone N/A 5 6 Seconds
45 Degree Arc
Riptide LV 1
4 HP Target
Stun 1 Unit Radius Around Target
Debuff: 1.25
Seconds 8 3 Seconds 15 2 HP
Splash
Riptide LV 2
5 HP Target
Stun 1.5 Unit Radius Around Target
Debuff: 1.25
Seconds 8 3 Seconds 30 3 HP
Splash
Riptide LV 3
6 HP Target
Stun 2 Unit Radius Around Target
Debuff: 1.25
Seconds 8 3 Seconds 4 HP
Splash
Conflagration LV 1
1 HP/Second
N/A 3 Unit Radius Around Player
5 Seconds
N/A 7 Seconds 12
Conflagration LV 2
1 HP/Second
N/A 4 Unit Radius Around Player
7 Seconds
N/A 8 Seconds 30
Conflagration LV 2
1 HP/Second
N/A 5 Unit Radius Around Player
9 Seconds
N/A 9.5
Seconds
Refresh LV 1 9 HP N/A N/A N/A N/A 25
Seconds 10
Refresh LV 2 15 HP N/A N/A N/A N/A 25
Seconds 15
Refresh LV 3 21 HP N/A N/A N/A N/A 25
Seconds
38
Wolf
Brief Description The wolf is the “cannon fodder” enemy of the game. While not threatening alone, when in numbers or if lead by an alpha wolf, he can become quite formidable. Wolves are 3.5 feet tall and 5 feet long.
Visual Design The wolf will be purple in color. He will look like a normal wolf, except he will have two tails.
Figure 27. Wolf Face Concept
39
Figure 28. Wolf Early Concept
Figure 29. Wolf Body Structure Concept
40
Figure 30. Wolf Early Color Concept
Dialogue N/A
Behaviors
Skill Name Damage Spell Effect AOE Notes Debuff
Duration Range Cooldown
Bite 2 HP N/A N/A N/A 0 FT 2 Seconds
Leap 1.5 HP N/A Caster moves
8 FT 2.5
Seconds 8 FT 10 Seconds
Howl 0 HP
Increases Player
Cooldowns By 1 Second
3 FT Radius Around Caster
4 Seconds
8 FT 15 Seconds
Claw Swipe 1 HP N/A N/A N/A 0 FT 1.5
Seconds
1. Run: Wolf moves at a fast rate to pursue the player. 2. Bite: The wolf will bite at the player. 3. Leap: The wolf will leap at the player, dealing damage. 4. Howl: The wolf will howl, causing the player‟s cooldowns to increase by 1
second (not cumulative). 5. Claw Swipe: The wolf will swipe at the player with his claws.
41
Wolf Monster
(Medium Enemy)
Health > 0
Combat State
Flee State
Death State
Yes
Distance to Player
> 20
Health < 30%
No
Health > 30%
Yes No
NoYes
Distance to Player
< 1
Bite is Ready
Leap is Ready
Yes No
Bite
Leap
(to distance < 1)
Claw Swipe is
Ready
Move Towards
Player
(to distance < 1)
Yes No
NoYes
Leap is Ready
Leap
(to distance > 20)
Move Away from
Player
(to distance > 20)
NoYes
Idle State
Regeneration State
(to Health = 3 over
time)
NoYes
Howl is Ready
Howl
Yes
No
Claw Swipe
Flank Player
(surround player)
Yes No
Figure 31. Wolf AI
Attributes
Health 8 hp
Run Speed 6.5 ft/s
42
Alpha Wolf
Brief Description The alpha wolf will be larger and more threatening than the wolf. He will also be able to command packs of wolves, as well as summon more should his situation become dire. The Alpha wolf is larger than its pack members at 5 feet tall and 7 feet long.
Visual Design The alpha wolf will have a similar visual style to the wolf. He will be larger than the wolf and also have more fur around his neck and head area. His ears will also be larger and more prominent.
Figure 32. Alpha Wolf Color Concept
Dialogue N/A
Behaviors
Skill Name Damage Spell Effect AOE Notes Debuff
Duration Range Cooldown
Bite 2.5 HP N/A N/A N/A 0 FT 2 Seconds
Leap 1.5 HP N/A Caster moves 8 FT over 1
second
2.5 Seconds
8 FT 10 Seconds
Howl 0 HP Summons
Two Wolves 3 FT Radius
Around Caster N/A 3 FT
One Time Cast
Claw Swipe 1 HP N/A N/A N/A 0 FT 1.5
Seconds
43
1. Run: Alpha wolf moves at a faster rate to pursue the player. 2. Bite: The alpha wolf will bite at the player. 3. Leap: The alpha wolf will leap at the player, dealing damage. 4. Bark: The alpha wolf will bark orders, summoning two more wolves to
attack the player.
Alpha Wolf
(Squad AI)
Scatter State
(Disband Squad)
Leader Health > 0
Leader Distance <
20
Yes No
Leader Health >
30%
Leader Health >
30%
Yes No
Combat State
Total Pack Size - 2 > 0
&&
Total Pack Size -2 >=
Current Pack Size
Yes No
Leap is Ready
Howl is Ready &&
Is first howl
Bite is Ready
Yes Yes NoNo
Howl
(call 2 more
wolves)
Move Away from
Player
(to Leader distance >
20)
Idle State
Regeneration State
(Leader Health to 3
over time)
NoYes
Leader Distance <
1
Leap
(to Leader
Distance < 1)
Flank Player
(surround player)
Bite
Move In
(to Leader
Distance < 1)
NoNo YesYes
Figure 33. Alpha Wolf Pack AI
Attributes
Health 12 hp
Run Speed 6 ft/s
44
Shadow
Brief Description A swift enemy, the Shadow relies on darkness to maneuver around the player and attack from a medium range. The shadow is 8 feet tall.
Visual Design The shadow is humanoid shaped. He will be all black. The player will most often only see his upper body, as he will be submerged in a pool of shadow.
Figure 34. Shadow Musculature Concept
Figure 35. Shadow Early Concept
45
Figure 36. Shadow Features Concept
46
Figure 37. Shadow Rough Concept 2
Dialogue N/A
Behaviors
Skill Name Damage Spell Effect AOE
Notes Debuff
Duration Range Cooldown
Shadow Slash 1 HP Caster Dashes 8
FT In One Second
8 FT Line N/A 8 FT 1.5 Seconds
Shadow Slap 1 HP N/A N/A N/A 8 FT 2 Seconds
Shadow Bind 0 HP
100% Movement
Speed Reduction
N/A Until
Shadow is Struck
11 FT 15 Seconds
1. Shadow Move: The shadow will sink into his shadow pool and move to
another location. Upon arrival, he will rise back up out of the pool.
47
2. Shadow Slash: Shadow will dash past the player, dealing damage as he passes.
3. Shadow Slap: Shadow stretches out his arm and strikes the player. 4. Shadow Bind: Shadow reaches into the shadow pool and causes another
shadow pool to form around the player‟s feet. The player‟s movement is then completely arrested.
Shadow
(Light Enemy)
Combat State
Death State
Health > 0
Player Health >
40%
Distance to Player
< 4
Distance to Player
< 20
Slap is Ready
Slash is Ready
Slash
Slap
Idle State
Distance to Player
< 4
Move Towards
Player
Move Towards
Player
Bind is Ready
&& Player Not
Bound
Move Towards
Player
Bind
(until hit)
Yes
Yes
YesYes
Yes
Yes
Yes
No
No
No
No
NoNo
No
Yes
Figure 38. Shadow AI
Attributes
Health 8 hp
Shadow Move Speed 8 ft/s
48
Amphibian
Brief Description The Amphibian is a slow moving water insect that casts spells from a long range. The Amphibian is 9 feet tall.
Visual Design The amphibian is a four-legged creature with a gray skin tone. He will have two serrated blades for arms. His neck will have orange gills on either side. His eyes are solid black and his lips small and red.
Figure 39. Amphibian Concept (color)
49
Figure 40. Amphibian Exaggerated Concept
Figure 41. Amphibian Features Concept
50
Dialogue N/A
Behaviors
Skill Name Damage Spell Effect AOE
Notes Debuff
Duration Range Cooldown
Slash 3 HP N/A N/A N/A 0 FT 1 Seconds
Spike Shot 2.5 HP N/A N/A N/A 10 FT 2 Seconds
Acid Shot 0.5 HP
per Second
75% Movement Speed
Reduction N/A
3 Seconds
4 FT 10 Seconds
1. Run: The amphibian moves at a faster rate to pursue the player. 2. Slash: Amphibian will slash at the player with his serrated forearm. 3. Spike Shot: Amphibian will shoot spines from his forearms at the player. 4. Acid Shot: Amphibian shoots acid ooze at the player that slows the
player‟s movement and deals damage over time.
Amphibian
(Heavy Enemy)
Death State
Health > 0
Combat State
Spike is Ready
Distance to Player
< 20
Spike
Idle State
Distance to Player
> 2
Move Towards
Player
Acid Shot is Ready
Slash is Ready
Acid Shot
Yes
Yes Yes
Yes
Yes
No
No
NoNo
No
Yes
Slash
Yes
Move Towards
Player
No
Distance to Player
> 4
Figure 42. Amphibian AI
51
Attributes
Health 8 hp
Run Speed 4 ft/s
52
Garuda
Brief Description The Garuda is a massive boss monster that commands lesser enemies and fills a cavernous shrine with its monstrous feathered serpent form.
Visual Design Garuda will be a giant, winged serpent monster. His body will be that of a snake. He will have the head of an eagle and his wings will stretch out from his back. His snake skin will be green and his feathers will be red and white. He will be 54 feet tall.
Figure 43. Garuda Concept
53
Behaviors
Skill Name Damage Spell Effect AOE
Notes Debuff
Duration Range Cooldown
Fireball 2 HP per Second
DOT AOE Zone 6 Feet Circle
10 Seconds
0 FT 1 Seconds
Summon Minions
N/A Spawns Minions N/A N/A N/A Automatic After Gust
Gust 10 HP 75% Movement
Speed Reduction
N/A 3
Seconds 4 FT
Automatic Upon Altar Hit
1. Fireball: Garuda will breath fire towards the player. 2. Gust: Garuda uses his wings to push the player back.
Garuda
(Boss)
Health % 15 == 0
Guard State
(wings over alter)
Yes
Stun State
(wings not over alter)
No
Timer > 10s ||
Alter is Hit
Fireball is Ready
Fireball
No
Yes
Gust State(spawn minions)
No
Yes
Health > 0
Death State
Yes
No
Attributes
Health (Wings) 15 HP
Health (Altar 1 HP
Final Boss Fight
1. Player enters the cave
54
2. Action stops and boss is presented to the player
a. Garuda: Demon King is shown on the bottom center of the screen
3. Battle starts
4. Garuda has its wings covering a pedestal
5. Garuda breathes fire into the player
6. Player gets hit, player is damaged for 3HP total
7. The player is given a hint on hitting Garuda‟s wings with spells (how?
8. Player hits Garuda‟s wings until 15HP of damage are dealt to the wings
9. Garuda then opens its wings exposing a pedestal that reflects the
checking point pedestals
a. The player remembers the checkpoint pedestals and decides to hit
the pedestal with the appropriate spells
b. The player hits successfully
10. Garuda closes its wings back; the player can‟t get out of the way on time.
a. Player gets hurt for 4HP
11. Garuda summons enemies to pester the player
12. Player gets rid of the enemies by casting spell
13. Player casts a healing spell on himself to recover life
14. Repeat steps 3 through13 with variations in spells and boss attacks until
boss is defeated
Fight Minions Attack Wings Attack AltarSummon Minions
Enter CaveHit Altar 4
times?No
Defeat Boss
Yes
Figure 44. Final Boss Flow Chart
55
Levels and Maps
Verdenice
Goal The goal of Incanto is to make it through the various areas and find the cave where the sky god‟s shrine is located. Once the shrine is found, the player must defeat the sky god as retribution for the dragon lord.
Level Travel Units travel at various speeds throughout the level which can be seen in the Character section of the document.
Scale The world is divided into square units which are each 3ft x 3ft. The player will fit inside one square unit. The area of the world is 114 units x 138 units.
Player / Enemy Interactions – Behaviors Traverse (Walk/Run) Walk/Run through grass, foliage, water Fight enemies via spells Shadow can walk through solids
Spell Interactions – Behaviors Spell illuminates environment Gust – leaves fly in direction of gust Conflagration – fire on ground (illuminates) Earthquake – cracked/broken earth on ground Refresh – illuminates character Riptide – large plume of water Character radiates light (if dark)
56
Environmental Interactions – Behaviors
1. Enemies Melee Ranged Snare/Stun spell Boss
Ambient Environmental Aspects/Objects in the Level
1. Ambient terrain noises: a. Waterfall b. Forest Sounds
The environment of the game is set in a forest which has a vast and expansive landscape. The trees are like skyscrapers as they hang over the forest floor which is covered with various forms of flora. The ground is covered in a mixture of grass, dry leaves, rocks and dirt. The pond which is hidden in the forest makes use of small flowers to accentuate the water‟s surface. Deeper in the forest there are ruins of a fortress which once stood with a majestic grace, but now is a shattered image with destroyed pillars, a huge concrete floor and rocks which are highlighted by moss, vines, and spider webs to show the amount of time that has passed. The ruins area has a dark eerie aura which is brought out by the shadow creature. The path to the water fall is a rocky path with almost no vegetation which foreshadows the showdown that is to come. Two imposing mountains straddle over the pass in which the player must travel. The pass follows the edge of one of the towering mountains while the other edge gives a view of the cliff. Near the end of the pass lies a natural bridge which connects the two mountains. As the player emerges from the mountain pass they are overtaken by the breathtaking view of the waterfall. The environment surrounding the waterfall gives the player a feeling of tranquility as the player encounters rocks covered with algae, soft flowing water and in the distance the player can hear the roar of the water as it crashes at the mountain base. But while the environment helps keep the player at ease, the farther they progress through the area the feeling changes from peaceful to unsettling as enemy presence grows in the area. The player will enter an area which has little to no vegetation which is also highlighted with dead trees and huge rocks to give a dominating feeling as the objects tower in comparison to the player. The cave which can be seen at the
57
end of the path seems to be formed by natural erosion of the river which once flowed through its mouth and continued towards the waterfall.
Time Section Duration Quantity ====== ======= =======
Forest 2.5 minutes (3 fights) Ruins 1 minute (1 fights) Path to Waterfall 1.5 minute (2 fights) Waterfall 2.5 minutes (4 fights) Cave 5 minutes (Boss fight)
Map
Figure 45. Overhead Map
58
Figure 46. Enemy Key
Figure 47. First Encounter
59
Figure 48. Second – Fifth Encounters
60
Figure 49. Sixth and Seventh Encounters
61
Figure 50. Eighth and Ninth Encounters
62
Figure 51. Tenth and Eleventh Encounters
63
Figure 52. Twelfth and Thirteenth Encounters
Level Walkthrough – Verbal Map
1. Start at Entrance of Forest. 2. Player encounters 2 wolves. 3. Player continues on the path 30 ft. 4. Player encounters 4 wolves. 5. Player continues on the path 30 ft. 6. Player encounters 1 alpha wolf with a 4 wolf pack and 2 amphibians. 7. Player passes by a tranquil pond. 8. Player continues on the path 30 ft.
9. Player enters the Ruins. 10. Player encounters 2 shadows. 11. Player continues on the path 20 ft. 12. Player encounters another enemy group.
13. Player enters Path to Waterfall. 14. Player encounters 1 alpha wolf with a 2 wolf pack and 1 shadow. 15. Player continues along the path 15 ft. 16. Player encounters 3 amphibians. 17. Player continues along the path 30 ft.
64
18. Player enters Waterfall. 19. Player encounters 1 alpha wolf, 1 amphibian, and 1 shadow. 20. Player continues along the path 30 ft. 21. Player encounters 2 amphibians. 22. Player continues along the path 15 ft. 23. Player encounters 2 shadows, 2 amphibians, and 1 alpha wolf. 24. Player continues along the path 40 ft.
25. Player enters the Cave. 26. Player encounters 3 shadows. 27. Continue along path 20 ft. 28. Boss Fight.
65
Level Breakdown – Walkthrough and Camera Concepts
Figure 53. Level Start
Figure 54. Level Start: Top Down
66
Figure 55. First Encounter
Figure 56. First Encounter: Top Down
67
Figure 57. Second Encounter
Figure 58. Second Encounter: Top Down
68
Figure 59. Third Encounter
Figure 60. Third Encounter: Top Down
69
Figure 61. Ruins Arrival Screenshot Concept
Figure 62. Fourth Encounter
70
Figure 63. Fourth Encounter: Top Down
Figure 64. Entering the Waterfall
71
Figure 65. Fifth Encounter
Figure 66. Fifth Encounter: Top Down
72
Figure 67. Sixth Encounter
Figure 68. Sixth Encounter (Top Down)
73
Figure 69. Seventh Encounter
Figure 70. Seventh Encounter: Top Down
74
Figure 71. Eighth Encounter
Figure 72. Eighth Encounter: Top Down
75
Figure 73. Ninth Encounter
Figure 74. Ninth Encounter: Top Down
76
Figure 75. Path to Cave Screenshot Concept
Figure 76. Tenth Encounter
77
Figure 77. Tenth Encounter
Figure 78. Boss Cave
78
Figure 79. Boss Cave: Top Down
79
Storyboards
Figure 80. Entrance & Forest Transition
Figure 81. Entering the Forest
80
Figure 82. First Encounter in the Forest
Figure 83. Enemies Attack (Event)
81
Figure 84. Traversing the Forest
Figure 85. Using Riptide (Spell) Against Second Encounter
82
Figure 86. Using Conflagration (Spell) Against Second Encounter
Figure 87. Victory and Feedback
83
Figure 88. Encounter with the Forest Amphibian
84
Figure 89. Encounter with the Forest Wolves
85
Figure 90. Encounter with the Second Forest Amphibian
86
Figure 91. Transitioning from Forest to Ruins
Figure 92. Battle with the Ruins Shadows
87
Figure 93. Encountering Enemies at the Waterfalls
Figure 94. Transition to the Waterfall
88
Figure 95. Encounters in the Waterfall Region Top Down
Figure 96. Second Encounter in the Waterfall Area Top Down
89
Figure 97. Encounter by the Waterfalls at an Angle
Figure 98. Transition from Waterfall to Cavern Road
90
Figure 99. Traversing the Cavern Road
Figure 100. Encounter with Shadows on the Cavern Road
91
Figure 101. Casting Gust on Shadows
Figure 102. Casting Refresh to Heal
92
Figure 103. Casting Conflagration
Figure 104. Casting Earthquake (Also Being Hit)
93
Figure 105. Transtion to Cave
94
Figure 106. Battle at the Mouth of the Cave
95
Figure 107. Boss Battle Entrance
Figure 108. Boss Fight Start
96
Figure 109. Boss Fight Minions (Round One)
Figure 110. Boss Fight Weakened (Fire Altar)
97
Figure 111. Casting on the Altar
Figure 112. Boss Recovers (Gust on Player)
98
Figure 113. Boss Fight Minions (Round Two)
Figure 114. Boss Fight Weakened (Earth Altar and Casting)
99
Figure 115. Boss Recovers (Gust on Player)
Figure 116. Boss Fight Minions (Round Three)
100
Figure 117. Boss Fight Weakened (Wind Alter and Casting)
Figure 118. Boss Recovers (Gust on Player)
101
Figure 119. Boss Fight Minions (Round Four)
Figure 120. Boss Fight Weakened (Water Altar and Casting)
102
Figure 121. Boss Dying
103
Game Logic, and Rules
Interaction Component Matrix
Player Wolf Alpha Wolf
Shadow Amphibian Boss Head
Boss Arm
Boss (Split form)
Player
Wolf COL
Alpha Wolf COL COL
Shadow
Amphibian COL COL COL
Boss Head COL COL COL COL
Boss Arm COL COL COL COL COL
Boss (Split form)
COL COL COL COL COL COL
Earthquake Spell
DMG, SLOW
DMG, SLOW
DMG, SLOW
DMG, SLOW
DMG DMG DMG, SLOW
Riptide Spell DMG, SNARE
DMG, SNARE
DMG, SNARE
DMG, SNARE
DMG DMG DMG, SNARE
Gust Spell DMG, BACK
DMG, BACK
DMG, BACK
DMG, BACK
DMG DMG DMG, BACK
Conflagration Spell
DMG DMG DMG DMG DMG DMG DMG
Refresh Spell HEAL
Bite Attack DMG
Claw Swipe Attack
DMG
Leap Attack DMG
Howl Attack (Wolf)
SLOW
Howl Attack (Alpha Wolf)
Spike Shot Attack
DMG
Acid Shot Attack
DMG, SLOW
Slash Attack DMG
Shadow Slap Attack
DMG
Shadow Slash Attack
DMG
104
Shadow Bind Attack
SNARE
Fire Breath (Boss Phase 2)
DMG
Fist Slam (Boss Phase 2)
DMG
Dash & Slash (Boss Phase 3)
DMG
Fire Breath (Boss Phase 3)
DMG
Tree COL COL COL COL COL COL COL COL
Rock COL COL COL COL COL COL COL COL
Ruin COL COL COL COL COL COL COL COL
Water COL COL COL COL COL COL COL COL
Grass COL COL COL COL COL COL COL COL
Legend
COL Collision occurs and reactions are calculated normally.
DMG The interaction causes damage to the character involved.
HEAL Health is restored to the player.
BACK The interaction causes the character involved to be knocked back.
105
SNARE The interaction causes the character involved to be unable to move.
SLOW The interaction causes the character's movement speed to be reduced.
F.A.Q.
When does the game come out? A: Q4 of 2011
How many spells will the character have? A: Six
Why can’t I Melee? A: Because you are a monk who has taken a vow of pacifism
Why can’t I dodge, block or parry? A: We thought the fun of the game relies on spell casting, and not so much on agile combat and that is why
How long is the game? A: 15 minutes
Why is the game fun? A: Because you get the opportunity to manipulate spells at your will
106
Can you describe the story of the game? A: You are a monk possessed by a dragon that wants revenge from another deity because it desecrated your dragon shrine
What is the genre of the game? A: This is mainly an RPG, you level up and you become stronger as you go. The battles are action oriented instead of turn-based
What is the look and feel of the game? A: The game develops in a natural environment. Our environment includes a forest, a waterfall, and a cave. We are trying to focus on a medieval feel
What is white hat studio? A: It refers to the government hackers that fight for good
How much is the game going to cost? A: Nothing, the game is free!
Where can I get this game? A: Gameproject.fullsail.com
107
Reference of Key Elements
Winning/Losing
1. Main Goal a. Defeat the boss, Garuda, at the end of the game.
2. Sub-goals a. Defeat enemies b. Level-up spells
3. Winning a. The player wins the game by defeating the boss at the end of the
game. b. The player will then be presented with a “Victory Screen” informing
them that they have won. c. The game will then transition to the Credits, followed by the Main
Menu. 4. Losing
a. The player loses the game by losing all of their health. b. The player will be presented with a “Defeat Screen” informing them
that they have lost. c. The player will then be given the option to return to the main menu
or restart from their last checkpoint.
Transitions The player‟s progress will be saved automatically each time they enter a new area. Each area is locked by an altar using a spell color. Casting the correct spell will act as a key to opening the gate. Should the player die or decides to stop playing and load the game later, they will be place at the beginning of the last area they entered. The location of these area transitions can be seen on the level map above. All load screens in the game will present the player with the game‟s controls or tips on how to play the game.
Rewards The player will be primarily rewarded by leveling up their spells through use. By utilizing their spells a certain number of times, they spells will increase and level. The secondary reward is the achievements that are listed below.
108
Achievements
1. First Steps a. Cast your first spell.
2. Master of the Elements a. Cast each spell once.
3. Big Bad Wolf my … a. Kill an alpha wolf.
4. Little Red Riding Hood a. Kill an alpha wolf without killing any of its pack.
5. Bringer of Light a. Kill a shadow
6. 9,001 a. Level up one spell to max level
7. Burn the witch! a. Catch 5 enemies in your conflagration spell.
8. The Avenger a. Defeat Garuda.
9. Genocide a. Kill all enemies in the game.
10. No Life a. Remain shadow bound for 3 minutes.
109
Art and Production Design
3D Art & Animation Deliverables Filename: m_MainCharacter.bin Description: A monk with white boxer like bandages down the forearms with some wrapped around fingers as well as bandages wrapped around legs starting from calves down to ankles. His shoes are a lighter black boot with a v-cut between the big toe and other toes similar to a ninja shoes. His attire is white with orange accents and his tattoos emit blue at all times unless he is damaged Concept: Animation(s):
1. Idle a. Standing upright in a neutral position breathing
2. Attack Stance a. Legs spread further apart, back hunched slightly. Head still facing
forward. 3. Walking/Running
a. Character moves regular pace or briskly 4. Hurt
a. Character rocks backwards in chest area when hit 5. Dead
a. Character falls forward first to knees then chest first into ground 6. Spell Casts
a. Gust i. Characters right hand moves backwards then pushes
outwards like a punch but with palm open and a gust of air knockbacks the enemy.
b. Riptide i. Character lifts hand from side in an upward motion as water
lifts from the ground and stuns the enemy c. Quake
i. Character punches ground a surge of earth quakes and hits the enemy with a stun
d. Conflagration i. Character claps hand and in a downward motion drops his
hands and a ring of fire appears around the character. e. Refresh
i. Character lifts both hands with elbows bent and closes fists to heal self
Filename: m_Wolf.bin Description: A skinny wolf with purple fur which fades to dark blue on the tips of the hairs. Its eyes are yellow. It has two bushy tails. Concept:
110
Animation(s): 1. Idle
a. Idle is just the wolf standing and breathing. 2. Attack Stance
a. Attack stance is its back end rises up in the air slightly while its front lowers and he begins to growl.
3. Run a. Wolf walks cautiously. Runs with intent.
4. Death a. Enemy falls over to its side.
5. Leaping a. While the wolf is running it lunges forward and strikes player to deal
damage. 6. Howl
a. The wolf anticipates and looks up then belts a loud howl that sends out a shockwave.
7. Bite a. The wolf leans forward and bites the player
8. Claw Swipe a. The wolf leans forward and slashes the player with his right claw
Filename: m_AlphaWolf.bin Description: A larger wolf than the standard wolf with longer ears and a fuller mane. He has three bushy tails. It has purple fur which fades to dark blue on the tips of the hairs, on the back part of legs and near feet the hairs are more course and sharper. His eyes are an ice cold blue. Concept: Animation(s):
1. Idle a. Idle is just the wolf standing and breathing.
2. Attack Stance a. Attack stance is its back end rises up in the air slightly while its front
lowers and he begins to growl. 3. Run
a. Wolf walks cautiously. Runs with intent. 4. Death
a. Enemy falls over to its side.
5. Leaping a. While the wolf is running it lunges forward and strikes player to deal
damage. 6. Howl
a. The wolf anticipates and looks up then belts a loud howl that sends out a shockwave.
7. Bite a. The wolf leans forward and bites the player
111
8. Claw Swipe a. The wolf leans forward and slashes the player with his right claw
Filename: m_Amphibian.bin Description: An amphibious creature that has tentacles for arms and legs. It‟s skin is a bluish green that‟s rubbery. Concept: Animation(s):
1. Idle a. Idle is just the creature standing upright breathing in and out
2. Run a. Tentacles glide along ground slowly. Tentacles glide along ground
quickly. 3. Death
a. Screams out in agony and falls forward. 4. Slash
a. The enemy reels back and slashes with its serrated tentacles. 5. Spike Shot
a. Crosses arms in X pattern and pushes forward as spikes from tentacles shoot out.
6. Acid Shot a. Chest raises as body reels backwards and spits a projectile vomit
Filename: m_Garuda.bin Description: A humanoid torso, the head and wings of an eagle with the bottom body which is that of a snake. Concept: Animation(s):
1. Idle a. Idle is just the creature standing upright breathing in and out
2. Death a. Screams out in agony and falls forward.
3. Breathe Fire a. The enemy reels back and gathers breath and breathes a lot of fire
4. Wings Open a. Garuda is stunned and wings are open revealing the altar
Filename: Altar.bin Description: A generic marble altar with a colored sphere on it. Concept: Animation(s): none Filename: m_Tree01.bin Description: A redwood tree which is very tall. Concept: Animation(s): none
112
Filename: m_Tree02.bin Description: A redwood tree which is very tall. Concept: Animation(s): none Filename: m_Tree03.bin Description: A redwood tree which is very tall. Concept: Animation(s): none Filename: m_Tree04.bin Description: A redwood tree which is very tall. Concept: Animation(s): none Filename: m_Grass.bin Description: Kentucky bluegrass. Concept: Animation(s): none Filename: m_Bush.bin Description: Honeysuckle dwarf Concept: Animation(s): none Filename: m_RockBundle01.bin Description: Gila Bend Arizona Rock Concept: Animation(s): none Filename: m_RockBundle02.bin Description: Gila Bend Arizona Rock Concept: Animation(s): none Filename: m_Plant01.bin Description: Concept: Animation(s): none Filename: m_Plant02.bin Description: Concept: Animation(s): none
113
Filename: m_RuinArchway.bin Description: Greyish manmade rocks forming an archway assembled with moss coming off of it. Concept: Animation(s): none Filename: m_RuinBrokenWall.bin Description: Greyish manmade rock wall with moss coming off of it. Concept: Animation(s): none Filename: m_RuinBrokenPillar.bin Description: Greyish manmade rock pillar that has eroded with time. It also has moss coming off of it. Concept: Animation(s): none Filename: m_RuinConcreteFloor.bin Description: Greyish manmade rocks that have slightly separated over time with numerous cracks. Concept: Animation(s): none Filename: m_Lake.bin Description: A medium sized body of water Concept: Animation(s): none Filename: m_GroundPlane.bin Description: A dirt pathway Concept: Animation(s): none Filename: m_Cave.bin Description: Dark, dank, damp, dismal. Concept: Animation(s): none Filename: m_Mountain.bin Description: Rocky Mountains (literally) plus Mount Fuji (because it‟s awesome) Concept: Animation(s): none Filename: m_Skybox.bin Description: A mid day, bright blue sky with a lot of cumulonimbus clouds. Concept:
114
Animation(s): none
2D Art (HUD/Menu/Particle/Textures) Deliverables Filename: HUDWheel.bin Description: A silver wheel that allows you to cycle through spells. There are multiple smaller circles on the main wheel in which your spells are indicated. Concept: Animation(s): none Filename: HUDHealthbar.bin Description: The green health bar. Concept: Animation(s): none Filename: MainMenu.bin Description: A dark grey box that sits to the left of the screen. Concept: Animation(s): none Filename: OptionsMenu.bin Description: A dark grey box that is across the entire screen. Concept: Animation(s): none Filename: SplashScreenLoading.bin Description: The dragon passing into the monk and granting him his powers. Concept: Animation(s): none Filename: SplashScreenGameOver.bin Description: The dragons eyes staring at you. With game over options on bottom. Concept: Animation(s): none Filename: GameOverMenu.bin Description: The dragons eyes staring at you. Concept: Animation(s): none
Sound Effects Deliverables Filename: MenuInteract.bin Description: A chirping sound.
115
Filename: MenuConfirm.bin Description: A chiming sound. Filename: MenuCancel.bin Description: A distinct chirping sound – lower in tone. Filename: WalkStepDirt.bin Description: As if you were walking in dirt. Filename: WalkStepRock.bin Description: As if you were walking on stone. Filename: WalkStepSplash.bin Description: As if you were walking in shallow water. Filename: WolfGrowl.bin Description: Large dog growling. Filename: WolfBark.bin Description: Large dog barking. Filename: WolfSnarling.bin Description: Large dog snarling. Filename: WolfInjured.bin Description: Large dog yelping. Filename: WolfDeath.bin Description: Longer yelp. Filename: PlayerSpawnVoice.bin Description: Player says “For the Dragon!” Filename: PlayerCastGustVoice1.bin Description: Player says “Get away from me!” Filename: PlayerCastGustVoice2.bin Description: Player says “Be gone, filth!” Filename: PlayerCastRiptideVoice1.bin Description: Player says “Drink up!” Filename: PlayerCastRiptideVoice2.bin Description: Player says “Drown in the deeps!”
116
Filename: PlayerCastEarthquakeVoice1.bin Description: Player says “The earth rages!” Filename: PlayerCastEarthquakeVoice2.bin Description: Player says “I‟ll crush you!” Filename: PlayerCastConflagrationVoice1.bin Description: Player says “By fire be purged!” Filename: PlayerCastConflagrationVoice2.bin Description: Player says “Burn!” Filename: PlayerCastRefreshVoice1.bin Description: Player says “Do not forsake me!” Filename: PlayerCastRefreshVoice2.bin Description: Player says “I refuse to die.” Filename: PlayerInjuredVoice.bin Description: Player makes grunting noises. Filename: PlayerCastFailVoice.bin Description: Player says “I cannot reach it!” Filename: PlayerDeathVoice.bin Description: Player says “I have… failed… you.” Filename: ShadowSlapSound.bin Description: His arm makes a “whoosh” sound as it extends out. Filename: ShadowSlapImpact.bin Description: A loud “slap.” Filename: ShadowSlashSound.bin Description: A “shing” sound is made as he dashes. Filename: ShadowBindSound.bin Description: Magical swirling noise. Filename: ShadowInjured.bin Description: A loud hiss. Filename: ShadowDeath.bin Description: Screaming hiss followed by magical swirling. Filename: AmphibianSpikeShotSound.bin
117
Description: Sounds like an air gun firing a dart. Filename: AmphibianAcidSpitSound.bin Description: A hissing spit, similar to the Jurassic Park dinosaur that spit the slime. Filename: AmphibainAcidSpitAmbient.bin Description: Sounds like acid burning through a surface. Filename: AmphibianSlashSound.bin Description: Hacking sound. Filename: AmphibianInjured.bin Description: A reptilian hissing noise. Filename: AmphibianDeath.bin Description: Extended reptilian hissing noise. Filename: GarudaFireSpit.bin Description: Sounds like a dragon breathing fire. Filename: FireSpitImpact.bin Description: Sounds like a small, fiery explosion. Filename: GarudaWingsInjured.bin Description: Load roar mixed with eagle scream. Filename: GarudaStunned.bin Description: Heavy breathing. Filename: GarudaGust.bin Description: Large wings moving, air being pushed. Filename: GarudaAltarReaction.bin Description: Loud, drawn out roar/eagle scream. Filename: Description:
Music Deliverables Filename: MenuSong.bin Description: Soft orchestral music that‟s not intruding or extremely loud like its shouting at you. Filename: BattleSong.bin
118
Description: Fast drum and orchestral melody. Filename: BossBattleSong.bin Description: Big beating drums and orchestra with deep chanting
Cutscenes/Pre-rendered scene Deliverables None Planned…
119
Technical Design Overview The technical design documentation for Incanto is used as a blueprint for the upcoming project and its architecture. In this documentation you can learn about the coding standards, system architecture, testing procedures and code review plan for the project. This blueprint will also be used as a reference to the architecture as seen in the module breakdowns when the modules are being implemented.
120
Milestone Deliverables The following breakdown is used to depict the systems and features that will be implemented for each associated phase of production.
Core
1. Animations a. Player animations b. Wolf animations
2. Camera a. 3rd person b. Soft attach c. Mouse look behavior (mouse can control view of camera)
3. Enemies a. Wolf
4. Enemy AI a. Wolf behaviors
5. HUD a. Spell wheel b. Health bar
6. Input a. Keyboard b. Mouse
7. Level a. Forest b. Ruins c. Terrain
8. Menus a. Main menu b. Pause menu c. Win screen d. Loss screen
9. Music a. Gameplay music b. Menu music c. Menu interactions d. Gust SFX e. Earthquake SFX f. Wolf hit SFX g. Wolf bark SFX h. Dialogue for player spawn
10. Player Actions a. Run b. Cast gust
121
c. Cast earthquake d. Death
11. Player model a. Final model with UV coordinates
12. Skybox a. Placeholder skybox for world
13. Sound System a. Play looping sounds b. Play non-looping sounds
14. Spells a. Gust b. Earthquake
15. Win/Lose Condition a. Victory b. Cruel, bitter defeat
Alpha
1. Animations a. Alpha wolf animations b. Garuda animations c. Shadow animations
2. Enemies a. Alpha wolf b. Garuda c. Shadow
3. Enemy AI a. Alpha wolf behavior b. Garuda behavior c. Shadow behavior
4. Level a. Path to the waterfall b. Waterfall
5. Menus a. Options menu b. Credits menu
6. Music a. Conflagration SFX b. Refresh SFX
7. Spells a. Conflagration b. Refresh
Beta
122
1. Animations a. Amphibian animations
2. Enemies a. Amphibian
3. Enemy AI a. Amphibian behavior
4. Level a. Cave
5. Menus a. Control menu b. Achievements
6. Spells a. Riptide
Gold
1. Animations a. Final animations
2. Music a. Final music b. Final SFX
3. Spells a. Final balancing
123
Development Environment
Tool Name Version
IDE Compiler Microsoft Visual C++
2008
Graphics API OpenGL 3.0.0
OpenGL Profiler
gDEBugger 5.8.0
Shader Debugger
AMD Render Monkey
1.81
Sound API Audiokinetic Wwise
3.2
3D Modeling Autodesk Maya
2011
Image Creation
Adobe Photoshop
CS4
Sculpting Pixelogic ZBrush
4.0
2D Particle Animation
Particle Illusion
3.0
Source Control AlienBrain 9.0.0
Documentation Microsoft Word
2007 / 2010
Spread sheets Microsoft Excel
2007 / 2010
Diagrams Microsoft Visio
2007 / 2010
124
System Architecture
Object Manager Camera
Renderer
Geometry Manager
Actor Agent
Animation Manager
Spells/Stats
A.I.
State Manager
Scene Manager
Texture Manager
Effects Manager
Sound Manager
Event Manager
Input Manager
Render Pipeline
Context ManagerCollision / Physics
KeyCalls Functionality
Passes Information
Effects Manager
Globals
Debug Logger Math / Physics
Memory Manager Timer
125
Context Model Description
1. Events a. Input Manager->Event Manager
i. Input is gotten from the keyboard / controller and an event is sent out
ii. Calls Functionality 1. SendEvent
b. Event Manager->Sound Manager i. The event manager handles an event to play sound effects /
music ii. Calls Functionality
1. HandleEvent 2. State Manager
a. State Manager->Event Manager i. Calls Functionality
1. ProcessesEvents 2. RegisterClient 3. UnregisterClient 4. UnregisterClientAll 5. Shutdown
b. State Manager->Animation Manager i. Calls Functionality
1. LoadFromFile 2. Update 3. CleanUp 4. DeleteInstance
c. State Manager->Geometry Manager i. Calls Functionality
1. LoadFromFile 2. CleanUp
d. State Manager->Texture Manager i. Calls Functionality
1. LoadTexture 2. CleanUp
e. State Manager->Scene Manager i. Calls Functionality
1. Initialize 2. Update 3. Render 4. Shutdown
f. State Manager->Renderer i. Calls Functionality
1. Initilize 2. InitDevices
126
3. CleanUp 4. BeginFrame 5. EndFrame 6. Resize 7. ToggleFullscreen 8. SetClearColor
3. Rendering Managers a. Animation Manager->Renderer
i. Passes Information 1. Animation Bones/Joints
b. Geometry Manager->Renderer i. Passes Information
1. Geometry Data ( ie. Verts/Normals/UVs ) c. Texture Manger->Renderer
i. Passes Information 1. Texture Data
4. Rendering Pipeline a. Render Pipeline->Context Manager
i. Calls Functionality 1. ClearAllContexts
b. Context Manager->Render Pipeline i. Passes Information
1. UpdateVisibleQueue c. Camera->Render Pipeline
i. Passes Information 1. GetFrustum
d. Render Pipeline->Renderer i. Passes Information
1. RenderScene 5. Scene Management
a. Scene Manager->Object Manager i. Calls Functionality
1. Init 2. Update 3. AddObject 4. Shutdown
b. Object Manager->Collision/Physics i. Calls Functionality
1. CheckCollision c. Collision/Physics->Object Manager
i. Passes Information 1. The result of checking collision True or False
6. Player / Enemy AI a. Object Manager->Actor/Agent
i. Actor ( Player ) and Agent ( Enemy ) are contained inside the object manager
127
ii. Calls Functionality 1. Update
b. Agent->A.I. i. Calls Functionality
1. ChangeState 2. Update
c. A.I.->Agent i. Passes Information
1. State Information
7. Spells
a. StateManager->A.I. Director
i. UpdateState
ii. FormWolfPack
b. Actor/Agent->Spell/Stats i. Actor ( Player ) and Agent ( Enemy ) contain spells ii. Calls Functionality
1. Cast c. Effects Manager->Spell/Stats
i. Spells contain a visual effect ii. Passes Information
1. Renderable set d. Spells/Stats->Actor/Agent
i. Passes Information ii. Renderable set
128
Module Breakdown
Globals CDebugOutput Description: Singleton console window used for logging debug information at runtime. This class is only available in debug build. This class is derived from “CSingleton.” Functions:
Return Type Function Name Parameters Description
CDebugOutput* GetInstance - void Returns a static instance of the object.
void PrintString - const char* szText
Writes out a string to the console.
void PrintValue - int nValue Writes out a value to the console.
Accesses: None Accessed By: Anything Stipulation: None
Risk(s): None
Time Estimate: 4 Hours Author(s): Michael Diaz
129
CEffectsManager Description: The effects manager handles all effects made by our tool for spell effects. This controls geometry effects and particle effects. Functions:
Return Type Function Name Parameters Description
int AddEffect - IEffect* pEffect Adds an effect to the selection list. Also handles loading in assets for the effects.
IEffect* GetEffect - int nID Returns an effect that was associated with the index.
void UpdateEffects - void Updates all effects on the active list.
void RenderEffects - void Builds render data for all associated effects in the active list.
Accesses: None Accessed By: Spell Manager Stipulation: None
Risk(s): Unclear idea of how particle illusion will work with the game effects.
Time Estimate: 4 Hours
130
Author(s): Kevin DeLorey
131
CEventSystem Description: Collects and processes events sent out by individual modules to facilitate communication between them. Functions:
Return Name Parameters Description
void RegisterClient - CString szEventID - IListener* pClient
Registers the passed in client to the specified event
void UnregisterClient - CString szEventID - IListener* pClient
Unregisters the passed in client from the specified event
void UnregisterClientAll - IListener* pClient Unregistered the passed in client from all registered events
void SendEvent - CString szEventID - unsigned int uiParamCount
Sends the specified event out to all registered clients to be handled and acted upon
void ProcessEvents - void Processes all events currently in the event list
void ClearEvents - void Clears all events from the event list
void Shutdown - void Clears all events from the event list and clears all clients from the client list
CEventSystem* GetInstance - void Returns the instance of the event system
void DispatchEvent - CEvent* pEvent
Send the event out to all registered listeners
bool AlreadyRegistered - CString szEventID - IListener* pClient
Checks the event to see if the passed in client has already been registered to it
Accesses: Everything that sends or receives events.
132
Accessed By: Everything that sends or receives events. Stipulation: This class is a singleton that can only be accessed through GetInstance.
Risk(s): None
Time Estimate: 4 Hours Events:
System Event Name Event Parameters
Achievements ACHIEVEMENT.UNLOCKED Bit assigned to achievement
Gameplay GAME.PAUSE Nothing
HUD HUD.CHANGESPELL Direction, Amount moved
Menu MENU.MOVEMENT Up / Down
Menu MENU.SELECTION Accept / Cancel
Menu MENU.GAMMA Gamma amount
Player PLAYER.MOVE Direction
Player PLAYER.DESTROY Nothing
Sound SOUND.START Sound ID Game Object, Is Looping
Sound SOUND.PAUSE Sound ID, Game Object
Sound SOUND.RESUME Sound ID, Game Object
Sound SOUND.STOP Sound ID, Game Object
Author(s): Dylan Hagen
133
IListener Description: Interface class to derive from to enable receiving events. Functions:
Return Type Function Name Parameters Description
virtual void HandleEvent - CEvent* pEvent Handles and reacts to events passed in
Accesses: None Accessed By: None Stipulation: None
Risk(s): None
Time Estimate: 2 Hours Author(s): Dylan Hagen
134
CEvent Description: Stores the type of and data associated with the events. Functions:
Return Name Parameters Description
CString GetEventID - void Returns the ID of the event
Vector<void*>& GetParams - void Returns the vector of data parameters
unsigned int GetNumParams - void Returns the size of the parameters vector
void* GetParam - unsigned int uiIndex
Returns the parameter at the specified index
None CEvent - CString szEventID - unsigned int uiNumParams - va_list args
Constructor for the event
Accesses: Everything that sends or receives events. Accessed By: Everything that sends or receives events. Stipulation: All classes must inherit for this interface to receive events.
Risk(s): None
Time Estimate: 1 Hour Author(s):
135
Dylan Hagen
136
CMemoryManager
Description: This class will pre-allocate a chunk of memory to be reused throughout the program. This will be used to eliminate most new/delete calls and allows us to limit our memory usage. This will not replace any allocation under STL data structures or third-party API‟s You will allocate memory by calling the Allocate function, passing it the pointer and the amount (size) of memory requested. And deallocate by calling the Deallocate function and passing the pointer you wish to free. Functions:
Return Type Function Name Parameters Description
void Init - void Allocates a large chunk of memory. Sets up head pointer and the first header. Only called when the program starts up
bool Allocate - char** p, uint size Finds a chunk of memory of the size specified. Sets the dereference of p to point at the memory. Returns true if successful and false if it couldn‟t allocate.
void Deallocate - char* p Marks the „used‟ memory as free and adds it back into the pool of free memory
void Shutdown - void Cleans up the dynamic memory. Only called when the program closes.
void Defrag - void Defragments the memory by moving all „used‟ chunks into a contiguous chunk.
Accesses: None
137
Accessed By: All other systems. Stipulation: None
Risk(s): None
Time Estimate: 8 Hours Author(s): Gant Briseno
138
CSingleton Description: A template singleton class that encapsulates a generic singleton design pattern. Functions:
Return Type Function Name Parameters Description
static T* GetInstance - void Returns a static instance of the object.
Accesses: None Accessed By: Classes that need to be a singleton. Stipulation: None
Risk(s): None
Time Estimate: 0.5 Hours Author(s): Michael Diaz
139
CGameTimer Description: The game timer will be a windows specific High Performance game timer. Timer works like a stop watch. Functions:
Accesses: None Accessed By: CGame or any module that wishes to do timed calculations.
Return Type Function Name Parameters Description
void Start - void Takes a snapshot
of the current
processor tick,
used in calculating
time.
void Stop - void Takes a snapshot
of the current
processor tick,
and then decides
if it needs to
calculate time.
void Reset - void Resets the times
and flags back to
Zero, so it has to
start and stop
again.
void CalculateGameTime - void Calls Stop, reset,
start in order, to
be used at the top
of the main game
loop.
void GetElapsedTime - void Gets the
calculated time
since last frame.
140
Stipulation: None
Risk(s): None
Time Estimate: 1 Hour Author(s): Kevin DeLorey
141
Data Structures
CDynArr Description: This class will be replacing the std::vector class. This class will function in a similar way, with push_back and pop_back used to add and remove things. You will be able to use the subscript operator [ ] to index/loop through the CDynArr, alternatively you can use an iterator to go through the CDynArr. Functions:
Return Type Function Name Parameters Description
void Push_back - Type v Adds the variable v to the end of the internal list
void Pop_back - void Removes the last element of the internal list
Citer Begin - void Returns an iterator to the beginning of the list
Citer End - void Returns an iterator to the end of the list
Type Operator[] - unsigned int uiIndex Returns the value stored at the given index
Accesses: CMemoryManager Accessed By: Anything. Stipulation: None
Risk(s): None
142
Time Estimate: 4 Hours Author(s): Gant Briseno
143
CHashMap Description: This class will be replacing the std::map class. You will use a Pair that holds a key and a value, to access the HashMap at a specified location. You can also create an iterator to iterate through the HashMap element by element. This class will be used to hold databases of any type of information. Functions:
Return Type Function Name Parameters Description
iterator Begin - void Returns an iterator pointing to the beginning of the HashMap
iterator End - void Returns an iterator pointing to the end of the HashMap
void RemoveAll - void Removes all key-value pairs from the HashMap
Type& Operator[] - Key const& key Returns the value associated with the specified key, otherwise it creates a default-constructed element
void Remove - Key const& key Removes the first key-value pair found with the specified key and removes it
Accesses: CMemoryManager Accessed By: Anything. Stipulation: None
144
Risk(s): None
Time Estimate: 4 Hours Author(s): Gant Briseno
145
CQueue Description: This class will be replacing the std::queue class. It will function as a First In Last Out data structure. You will use the enqueue function to put an item on the top of the queue and dequeue to take an item off the top of the queue. Functions:
Return Type Function Name Parameters Description
void Push - Type v Adds the variable v to the front of the internal list
void Pop - void Removes the first element of the internal list
Type Front - void Returns the element at the beginning of the list
bool Empty - void Returns true if the list is empty, false if not
Accesses: CMemoryManager Accessed By: Anything Stipulation: None
Risk(s): None
Time Estimate: 4 Hours Author(s):
146
Gant Briseno
147
CString Description: This class will be replacing the std::string class. You will use the Append function or +=‟s operator to add onto the string. You can also Set, or use the assignment operator, to replace the character string instead of adding onto it. You will also be able to gain access to the char pointer, but it will be a const to prevent manipulation of the inner character string. Functions:
Return Type Function Name Parameters Description
CString& Operator+= - char* s Adds the character string to the end of the internal string
CString& Operator= - const CString& copy Sets the internal string to the passed in CString‟s internal string
char Operator[ ] - unsigned int index Returns the character at the “index” offset from the beginning of the internal string
bool Operator== Const CString& left, const CString& right
Compares the strings character by character to see if they are the same
void Append - char* s See “operator+=”
Const char* C_str[] - void Returns the inner string with const protection
void Clear - void Deletes the internal string
void Compare Const CString& s See “Operator==”
bool Empty - void Returns true if there is no internal string, otherwise false
int Length - void Returns the number of characters being held within the inner string
Accesses: CMemoryManager
148
Accessed By: Anything. Stipulation: None
Risk(s): None
Time Estimate: 4 Hours Author(s): Gant Briseno
149
Game States State Manager Description: The state manager will hold a stack of all states on the screen at any given time. The top most state will always be rendered and updated, but properties in the individual state can be set to allow update or render even if it is not the top state. Functions:
Return Type Function Name Parameters Description
void UpdateStates - const float& fElapsedTime
Invokes update on all the states on the stack, as long as the property is enabled, or it is the top state.
void RenderStates - void Invokes render on all the states on the stack, as long as the property is enabled, or it is the top state.
void PushState - IGameState* pState
Pushes the new game onto the top of the stack.
void PopState - void Pops the top most state off of the stack.
void ClearStack - void Removes all states on the stack. Generally used for game shutdown, for cleanup.
Accesses: None Accessed By:
150
Any game state that wishes to add or remove states. Stipulation: None
Risk(s): None
Time Estimate: 3 Hours Author(s): Kevin DeLorey
151
IGameState Description: Base Interface class that is inherited by all states. Provides a guideline for the game states to follow. Functions:
Return Type Function Name Parameters Description
virtual void (*Update) - ( const float& ) A function pointer that will update anything needed by the state, such as animations. Using a function pointer would allow multiple state machines for update, such as Fade In, Idle, Fade Out.
virtual void Render - void Builds the render set to be passed to the renderer for rendering.
virtual void Enter - void Loads any assets and/or data required for use.
virtual void Exit - void Un-Loads the assets and/or data that was loaded in for use.
void SetUpdateFunc - void (*func)(const float&)
Sets the update function, which will be used for updating.
void AlwaysRender - bool bRender Sets the property associated with the flag to always render even when not the top state
void AlwaysUpdate - bool bUpdate Sets the property associated with the flag to always update even when not the top state
void AlwaysInput - bool bInput Sets the property associated with the flag to always handle input even when not the top state
152
Sub-Modules:
CMainMenuState
CGamePlayState
COptionsState o CKeyBindState
CCreditsState
CPausedState
CAcheivmentsState
CCharacterSelection
CIntroState
CLoadingMenu Accesses: None Accessed By: State Manager Stipulation: None
Risk(s): None
Time Estimate: 1 Hour Author(s): Kevin DeLorey
153
Animations CAnimationManager Description: The games Animation Manager handles and stores all the games animations. It is used to access animations which will be used by Animation States and System when the current character has changed.
Functions:
Return Type Function Name
Parameters Description
Static CAnimationManager* GetInstance void Function returns the single instance of the Animation Manager.
Static void DeleteInstance void It deletes the Animation Manager instance when the game is being shut down.
CAnimation* LoadAnimation CString szFileName Releases and cleans up any allocated memory.
void CleanUp void Releases and cleans u any allocated memory.
bool LoadFromFile CString szFileName, CString szName
This function is called by load animation and loads up an animation.
Accesses: CAnimation Accessed By:
154
CGame, Debug profiler Stipulation: None
Risk(s): None
Time Estimate: 4 Hours Author(s): Patrick Alvarez
155
CAnimationData
Description: To encapsulate animation data, this will derive from CGeometryData. It will just store the weights and joints along with the other attributes from geometry data. This will still be stored within the GeometryManager. Functions:
Return Type Function Name Parameters Description
CDynArray< CDynArray<CJointInfluence> >&
GetWeights - void Returns the weights.
CDynArray<CJoint>& GetJoints - void Returns the joints.
Accesses: INSERT Accessed By: INSERT Stipulation: INSERT
Risk(s): INSERT
Time Estimate: INSERT Author(s): Michael Diaz
156
CAnimation Description: CAnimation will be the game main animation class that holds its main data such as the duration Animated Bones and name. Functions:
Return Type Function Name Parameters Description
bool LoadFromBin - const char* szFileName
Loads the class‟s animation through a binary file.
CDynArr<CAnimatedBone>& GetAnimatedBones - void Returns the Dynamic Array animated bones that consist of a Dynamic Array of KeyFrames and an iBoneIndex for the current bone index.
float GetDuration - void Returns the current animations time duration.
Accesses: CBoneFrame, tKeyFrame, tAnimatedBone Accessed By: CAnimationManager, CAnimationInerpolator Stipulation: None
Risk(s): None
Time Estimate: 2 Hours
157
Author(s): Patrick Alvarez
158
CAnimationInterpolator Description: The Interpolator will handle the processing or animating of an entity which includes but is not limited to the Player character or enemies. Functions:
Return Type Function Name Parameters Description
CAnimation* GetCurrentAnimation - void This function returns a pointer to the Interpolators current animation.
void SetAnimation - CAnimation* pInAnimation
Re-points the Interpolators current pointer to the sent in Animation pointer.
void AddTime - float fTime Adds the send in time to the Interpolators current time.
void SetTime - float fTime Re-sets the current time to the passed in time.
void Process - void Process will loop through all the Interpolators Animation data and through the use of joints and key frames it will animate the character.
CDynArr<CBoneFrame> GetCurrentBoneFrames - void Returns the Interpolators Dynamic Array of key frames that
Accesses: CBoneFrame Accessed By: CAnimationBlender, CAnimationEntity Stipulation:
159
None
Risk(s): None
Time Estimate: 4 Hours Author(s): Patrick Alvarez
160
CAnimationBlender Description: The Animation Blender will handle blending or interpolating between the current frame of the playing animation and the starting frame of the animation we will be switching to through the use of interpolators. Functions:
Return Type Function Name
Parameters Description
void SetTransitionTime float fTime Sets the blender‟s transition time.
void SetCurrentTime float fTime Sets the blender‟s current time to the time passed in.
void AddCurrentTime void Adds the time passed in to the blender‟s current time.
CDynnArr<CFrame>& GetFrames void Returns the blender‟s current dynamic array of blended frames.
float GetDissolveFactor Void Returns the blender‟s dissolve factor.
bool SetInterpolators CInterpolator* pInterpPrev, CInterpolator* pInterpNext
Sets the blender‟s interpolator pointers to the pointers passed in.
bool Dissolve void Dissolve will interpolate between the current animation‟s current key frame and the
161
next animation‟s current key frame which can both be accessed through the blender‟s CInterpolator pointers.
Accesses: CAnimationInterpolator Accessed By: Character state machine Stipulation: None
Risk(s): Rigid blending or trashing between animations.
Time Estimate: 40 Hours Author(s): Patrick Alvarez
162
Renderer
CEngineRenderer Description: The core engine renderer is responsible for rendering the current frame of the game. This is a main core component of the engine which handles 3D and 2D scene rendering. The visible set will be passed into this to render the current visible scene. This set will be sorted by render context if the render pipeline is used. The renderer will support:
Shaders with default attributes and uniforms. o ModelView Matrix o Ambient, Diffuse Material o Textures
Normal Maps
Specular Maps
Light Maps
Shadow Mapping on terrain plane. Functions:
Return Type Function Name Parameters Description
CEngineRenderer* GetInstance - void Returns a static instance of the object.
bool Initialize - HWND hWnd - GLint nScreenWidth - GLint nScreenHeight - GLfloat r - GLfloat g - GLfloat b
Initializes OpenGL to the window and returns if initialization was successful.
void InitDevices - HWND hWnd Initializes the render contexts of window, including pixel format.
void CleanUp - void Cleans up the memory allocated by this
163
class.
void BeginFrame - void Clears buffer bits, this should be called before rendering.
void EndFrame - void Swaps the back buffer to present the data to the window, this should be called after rendering.
void Resize - GLint nScreenWidth - GLint nScreenHeight
Resizes the render target for OpenGL.
void RenderScene - CRenderQueue& pVisibleQueue
Iterates through the queue and renders each geometry.
void ToggleFullscreen - void Toggles the window from window to full screen.
void SetClearColor - GLfloat r - GLfloat g - GLfloat b
Mutator to set the clear color.
Accesses: None Accessed By: CGame and CRenderPipeline Stipulation: None
Risk(s): None
Time Estimate:
164
8 Hours Author(s): Michael Diaz
165
CRenderNode Description: To encapsulate a high level render node that will be used as a base class to traverse through queues when rendering and will also store the function pointer to render. Functions:
Return Type Function Name Parameters Description
CRenderNode* GetNext - void Returns the next render node it is pointing to.
void SetNext - CRenderNode* pNext Sets the next render node pointer.
void (*RenderFunc) - CRenderNode& pNode
A function pointer that will be pointing to a certain specific render function.
void Render - void Renders this node by simply calling it‟s RenderFunc.
Accesses: None Accessed By: Anything that has to do with passing rendering data. Stipulation: None
Risk(s): None
Time Estimate: 0.5 Hours
166
Author(s): Michael Diaz
167
CRenderContext Description: To encapsulate a render context which will release the engine renderer from performing too many context switches, this context will set the texture and geometry before rendering its render queue. Functions:
Return Type Function Name Parameters Description
void PushNode - CRenderNode* pNode
Adds a render node to its render queue.
void ClearQueue - void Clears the render queue.
CRenderQueue GetRenderQueue - void Returns the render queue.
void Render - void Invokes render on each node in its render queue.
CMesh* GetMesh - void Returns the reference mesh.
void SetMesh - CMesh* pMesh Sets the reference mesh.
void AddTexture - CString szTexture
Adds a texture to the list of textures.
Accesses: None Accessed By: CRenderEntity, CAnimationEntity, and CContextManager Stipulation: None
Risk(s): None
Time Estimate:
168
2 Hours Author(s): Michael Diaz
169
CRenderPipeline Description: To encapsulate the pipeline in which all rendering modules will go through before being rendered onto the frame buffer. This pipeline is in charge of render sub modules, it will initialize the ContextManager, TextureManager, GeometryManager and ShaderManager. Functions:
Return Type
Function Name Parameters Description
void Initialize - void Initializes the render pipeline.
void CleanUp - void Releases and cleans up the memory allocated.
void UpdateVisibleQueue - CDynArray<cRenderNode*> pRenderList
Updates and builds the active visible queue with the current data.
void RenderScene - void Renders the current visible list, this function should ONLY be called after UpdateVisibleQueue was called.
Accesses: None Accessed By: The game state that needs rendering. Stipulation: None
Risk(s): None
170
Time Estimate: 4 Hours Author(s): Michael Diaz
171
CResourceManager Description: The resource manager is a template class that loads and manages resources. Whenever an asset is loaded into memory it will be stored in its cache table. This class will also handle setting a directory from which assets will load from specifically. This class derives from “IManager.” Functions:
Return Type Function Name Parameters Description
bool CheckDirectory - void Checks the directory buffer before using the manager.
void SetDirectory - const char* szPath
Sets the directory
void AddResource - const T resource - const char* szName
Adds the resource into the cache table.
void RemoveResource - const char* szName
Removes the resource from the cache table.
T& GetOpenResource - const char* szName
Accesses a certain resources open for read and write.
Accesses: None Accessed By: None Stipulation: None
Risk(s): Making sure the resource manager stores, unloads, and gets accesses correctly.
Time Estimate:
172
3 Hours Author(s): Michael Diaz
173
IManager Description: The IManager interface is an abstract manager that managers will derive from. Functions:
Return Type Function Name Parameters Description
virtual char* Serialize - void Serializes any data into a string buffer for debugging and profiling purposes.
void ToFile - const char* szFileName Stores the serialized data into a file for logging.
Accesses: None Accessed By: Game state that needs to load resources. Stipulation: None
Risk(s): None
Time Estimate: 0.5 Hours Author(s): Michael Diaz
174
CGeometryManager Description: A manager that stores bind instances of each geometry packet that is build/loaded from the geometry factory, in which each render entity can reference the data. This class is derived from “CResourceManager” and “CSingleton.” Essentially just uses functions from resource manager to load and remove assets. Functions:
Return Type Function Name Parameters Description
CGeometryManager* GetInstance - void Returns a static instance of the object.
void CleanUp - void Cleans up the memory allocated by this class.
char* Serialize - void Serializes any data into a string buffer for debugging and profiling purposes.
CGeometryData* LoadFromFile - CString szFileName - CString szName
This function will determine what kind of file is passed in and call the appropriate function to load the data.
Accesses: None Accessed By: Game states that need to load resources and the renderer when it needs to reference data. Stipulation: None
Risk(s): None
175
Time Estimate: 2 Hours Author(s): Michael Diaz
176
CGeometryData Description: To encapsulate geometry data, such as vertex array including verts, normal and ST cords. Also this class will be including the indices and primitive type. Functions:
Return Type Function Name Parameters Description
void BuildVertexBuffer - const void* pData - unsigned int uiSize
Builds the vertex buffer according to the data being passed in.
void BuildNormalBuffer - const void* pData - unsigned int uiSize
Builds the normal buffer according to the data being passed in.
void BuildTextureBuffer - const void* pData - unsigned int uiSize
Builds the texture buffer according to the data being passed in.
void BuildIndexBuffer - const void* pData - unsigned int uiSize
Builds the index buffer according to the data being passed in.
void Release - void Deletes the buffer arrays.
unsigned int GetVertCount - void Returns the number of vertices.
unsigned int GetIndicesCount - void Returns the number of indices.
unsigned int GetBufferVertices - void Returns the handle to the vertex buffer.
unsigned int GetBufferNormals - void Returns the handle to the normal buffer.
unsigned int GetBufferSTCoods - void Returns the handle to the texture buffer.
unsigned int GetBufferIndices - void Returns the handle to the index buffer.
bool GetIndexFlag - void Returns the flag determining if this data is indexed.
unsigned int GetPrimitiveType - void Returns the primitive type.
Accesses: None Accessed By: CRenderEntity
177
Stipulation: None
Risk(s): Making sure the Vertex Buffer Arrays are built correctly and the data is passed correctly through the shader by attributes.
Time Estimate: 2 Hours Author(s): Michael Diaz
178
CRenderEntity Description: To encapsulate a render object containing render data on how this entity will be rendered as well as a containment of shader that will determine how the geometry will be rendered through the render pipeline. Functions:
Return Type Function Name Parameters Description
static void RenderShaders CRenderNode& pNode Renders the mesh with the list of shaders that is currently active.
void AddToRenderContext - void Adds this node to its render context‟s render queue.
bool GetRenderFlag - void Returns a flag to determine if this object wants to be rendered.
CFrame& GetFrame - void Returns the frame of this object for read and write.
void SetRenderFlag - const bool bFlag Sets the render flag.
void SetRenderContext - CRenderContext* pContext
Sets this object‟s render context.
void AddShader - CString szShader Adds a shader to the list.
Accesses: None Accessed By: The object manager. Stipulation: None
Risk(s): None
Time Estimate:
179
1 Hours Author(s): Michael Diaz
180
CTextureManager Description: A manager that stores texture assets in its cache table and returns an id of that texture so render entities can reference the data. This class is derived from “CResourceManager” and “CSingleton.” Essentially just uses functions from resource manager to load and remove assets. Functions:
Return Type Function Name Parameters Description
CTextureManager* GetInstance - void Returns a static instance of the object.
void CleanUp - void Cleans up the memory allocated by this class.
char* Serialize - void Serializes any data into a string buffer for debugging and profiling purposes.
int GetTextureWidth - int nTextureHandle
Returns the width of the texture.
int GetTextureHeight - int nTextureHandle
Returns the height of the texture.
int LoadTexture - CString szFileName - CString szName
Loads the texture into memory and saves it by the name.
Accesses: None Accessed By: Game states that need to load resources and the renderer when it needs to reference data.
181
Stipulation: None
Risk(s): Making sure that cube maps are loaded correctly.
Time Estimate: 2 Hours Author(s): Michael Diaz
182
Spells CSpellManager Description: This module contains all the information for every skill/spell. Its stored data will be accessed by the player and all enemies for the stats for skills/spells. It derives from ISingleton. Functions:
Return Type Function Name Parameters Description
const ISpell* GetSpell - int nSpellID - int nSpellLevel
Returns the requests spell at the level. Level defaulted to 1
void Init - void Creates all spells and fills out the information
Accesses: All classes derived for CSpell, All classes derived from CSpellEffect Accessed By: CSpellSlot Stipulation: This module must be initialized upon entering the gameplay state. It is a singleton and can only be accessed through GetInstance.
Risk(s): None
Time Estimate: 6 Hours Author(s): Dylan Hagen
183
ISpell Description: Interface class for all spells/skills, it is a generic container for all the stats of the spells. Functions:
Return Type Function Name Parameters Description
bool Use - float fCooldownTime
Uses the ability Returns false if spells was on cooldown
Children: CQuake | CLeap | CShdwBind CGust | CHowl | CSlash CConflag | CSwipe | CAcidShot CRiptide | CBark | CSpikeShot CRefresh | CShdwSlash | CFireBreath CBite | CShdwSlap | CBossGust Accesses: Animation System, CEventSystem Accessed By: CSpellSlot Stipulation: All spell and skill classes must derive from this interface.
Risk(s): None
Time Estimate: 2 hours per child Author(s):
184
Dylan Hagen
185
CSpellSlot Description: Class that contains information about a spell and a timer for the cooldown. Functions:
Return Type Function Name Parameters Description
bool Use - void Uses the ability in the slot Returns false if it was on cooldown
void Update - float fDeltaTime Updates the timer
Accesses: CSpellManager, CEventSystem Accessed By: ICharacter Stipulation: None
Risk(s): None
Time Estimate: 1 Hour Author(s): Dylan Hagen
186
ISpellObject Description: Interface of the collision object for all spells Functions:
Return Type Function Name Parameters Description
void OnCollision - void Enacts the spells specific behavior on collision
Children: CHomingSphere CMovingSphere CStaticSphere CCone Accesses: CSpell, CSpellEffect Accessed By: ObjectManager Stipulation: All spell collisions objects must be derived from this interface.
Risk(s): Collision bugs.
Time Estimate: 3 hours per child. Author(s): Dylan Hagen
187
CSpellEffectManager Description: Contains all the information for each spell effect Functions:
Return Type Function Name Parameters Description
const ISpellEffect* GetSpellEffect - unsigned int uiEffectID
Returns the requested spell effect
void Init - void Initializes the spell effects
Accesses: Spell Effects Slot Accessed By: Spells Stipulation: None
Risk(s): None
Time Estimate: 24 Hours Author(s): Dylan Hagen
188
CSpellEffectList Description: This is a wrapper for the vector of spell effects in each entity. It will add effects to the list and remove any effect that has reached its duration. Functions:
Return Type Function Name Parameters Description
void Update float fDeltaTime, ICharacter* pTarget
Updates each spell effect and removes ones flagged for removal.
void AddSpellEffect CSpellEffect* pEffect Adds the effect to the list.
Accesses: CSpellEffect Accessed By: ICharacter Stipulation: None
Risk(s): None
Time Estimate: 2 Hours Author(s): Dylan Hagen
189
ISpellEffect Description: Base for all spell effects. Each spell effect will derive from this. Contains the modifier value and duration of the effect. Functions:
Return Type Function Name Parameters Description
void ApplyEffect - CEntity* pTarget Enters the effect into the targets effect list
Children: CSnareSpellEffect, CDoTSpellEffect Accesses: CEventSystem, ICharacter Accessed By: CSpellEffectSlot, CSpellManager Stipulation: None
Risk(s): None
Time Estimate: 2 hours per child. Author(s): Dylan Hagen
190
CSpellEffectSlot Description: Class the contains the information for the spell effects and a timer for the duration Functions:
Return Type Function Name Parameters Description
void Update - float fDeltaTime Updates the timer for the duration
Accesses: Geometry, Textures Accessed By: Spell Effect Manager Stipulation: None
Risk(s): None
Time Estimate: 8 Hours Author(s): Dylan Hagen
191
WWise
PreCompWWise Description: A pre-compiled header file for WWise that handles memory allocation for playing sounds virtual and regular memory allocation and deletion. Functions:
Return Type Function Name Parameters Description
void* AllocHook - size_t in_size A function that allocates memory for the WWise sound system.
void FreeHook - void* in_ptr A function that frees the memory passed in through a void pointer.
void* VirtualAllocHook - void* in_pMemAddress - size_t in_size - DWORD in_dwAllocType - DWORD in_dwProtect
Function that virtually allocated memory of a specified size, type and protection level to the passed in void pointer location.
void VirtualFreeHook - void* in_pMemAddress - size_t in_size - DWORD in_dwFreeType
A function that frees the previously virtually allocated data located at the position of the pointer passed in, the size of data that gets passed in is used for the amount of data being freed.
Accesses: Memory Manager Accessed By: WWise API Stipulation: None
192
Risk(s): Proper set up and implementation.
Time Estimate: 4 Hours Author(s): Patrick Alvarez
193
WWise Description: The WWise class will handle setting up the WWise sound system for the game. This class is also able to handle sound data based on events passed in. It can do things such as play sounds, change sound levels, stop sounds, etc… Functions:
Return Type Function Name
Parameters Description
WWise* GetInstance - void This function will return the single instance of the WWise sound manager. If no instance exists one will be created before being returned.
void Init - void The Init function will initialize the WWise systems functionality as well as setting up all its available plug ins and will also register all game objects that emit sound.
void ShutDown - void The shutdown will shut down all of the WWise sound systems .
void LoadBank - void The Load bank function will load up the games sound banks that contain all of the games sounds.
void UnloadBank -AkBankID bankID Unload bank will unload the specified bank from memory.
AKGameObjectID GetGameObj - unsigned int uiID This function returns an instance of a Game Object that is able to play sounds.
void HandleEvent - AKUniqueID eventID, - AKGameObjectID gameObj
HandleEvent will handle the passed in event based on the passed in events and objects.
void ProcessAudio - void The ProcessAudio function will call the engines RenderAudio function that plays all the events that were previously handled.
Accesses: WWise SDK and API Accessed By:
194
Event System, CGame Stipulation: None
Risk(s): Proper set up and implementation.
Time Estimate: 24 Hours Author(s): Pat Alvarez
195
Objects
ICharacter Description: Interface class for the characters (actor and agents) which is used to initialize the data for the character, update the character‟s state and position, render the character and clean up all memory and data used within the lifetime of the character. Functions:
Return Type Function Name Parameters Description
void Init - const CRenderEntity
renderEntity
Initializes the variables for
the character
void Update - const float fDeltaTime Updates the character
void Render const - void Renders the character
void Cleanup - void Cleans up memory
void HandleEvent - CEvent* pEvent Handles events
Accesses: None Accessed By: CActor, CAgent Stipulation: None
Risk(s): None
Time Estimate: 30 min Author(s):
196
Joshua Jacobs
197
CActor Description: Player class which is a child of the ICharacter interface and is used to initialize the player‟s default values, update the player‟s state and position, render the player, clean up all memory or data used within the lifetime of the player and handle all events that the player has registered for. Functions:
Return Type Function Name Parameters Description
void Init - const CRenderEntity
renderEntity
Initializes the variables for
the player
void Update - const float fDeltaTime Updates the player
void Render const - void Renders the player
void Cleanup - void Cleans up memory
void HandleEvent - CEvent* pEvent Handles events
Accesses: ICharacter, CAIStateManager, CAnimationManager, CContextManager Accessed By:
CObjectManager Stipulation: None
Risk(s): None
Time Estimate: 30 min Author(s): Joshua Jacobs
198
CAgent Description: Enemy class which is a child of the ICharacter interface and is used to initialize the agent‟s default values, update the agent‟s state and position, render the agent and clean up all memory or data used within the lifetime of the agent. Functions:
Return Type Function Name Parameters Description
void Init - const CRenderEntity
renderEntity
Initializes the variables for
the enemy
void Update - const float fDeltaTime Updates the enemy
void Render const - void Renders the enemy
void Cleanup - void Cleans up memory
void HandleEvent - CEvent* pEvent Handles events
Accesses: ICharacter, CAIStateManager, CAnimationManager, CContextManager Accessed By: CAIDirector, CAIStateManager Stipulation: None Risk(s): None Time Estimate: 30 min Author(s): Joshua Jacobs
199
Artificial Intelligence
CAIDirector Description: The CAIDirector is used to determine all logic and state changes for the agents. Inside this class we find all behavior (movement, attacks and decisions) for the agents. By encapsulating the logic of the agent from the agents themselves we are able to create a modular system that can be used to create a clutter-free agent class.
Functions:
Return Type Function Name Parameters Description
void UpdateState - CAgent* pAgent Uses a function pointer to update
the state of the enemy based on
the specific enemy‟s behavior.
void UpdateWolf - CAgent* pAgent Private helper function to update
the wolf‟s state based on its
behavior.
void UpdateShadow - CAgent* pAgent Private helper function to update
the shadow‟s state based on its
behavior.
void UpdateAmphibian - CAgent* pAgent Private helper function to update
the amphibian‟s state based on
its behavior.
Void FormWolfPack - CAgent* pLeader
- std::vector<CAgent*>
vWolfPack
Takes in a wolf to be an alpha
wolf and the rest to be part of his
pack.
void UpdateWolfPack - tSquad* pWolfPack Private helper function to update
the state of the squad type
wolves.
void DisbandWolfPack - tSquad* pWolfPack Private helper function to end
squad-like behavior for the
wolves when the alpha wolf dies.
Accesses: CIdleState, CFleeState, CDeathState, CCombatState, CActor, CAgent, CAIStateManager
200
Accessed By: CActor, CAgent, CAIStateManager Stipulation: None
Risk(s): None
Time Estimate: 2 hours Author(s): Joshua Jacobs
201
IState Description: Interface class that defines the skeleton functionality of the states. Functions:
Return Type Function Name Parameters Description
void Enter - void Enters the current state
void Update - void Updates the current state
void Exit - void Exits the current state
Accesses: None Accessed By: CCombatState, CDeathState, CFleeState, CIdleState, CAIStateManager Stipulation: None
Risk(s): None
Time Estimate: 30 min Author(s): Joshua Jacobs
202
CFSM Description: This class is a finite state machine for the player and enemies that will hold the current state and allow for easy abstraction of state behavior and animations. Functions:
Return Type Function Name Parameters Description
void Init - ICharacter* pCharacter Initializes the state
machine to the passed in
character
void Update - const float fDeltaTime Updates the state machine
void Shutdown - void Shuts down the state
machine
void SetInitialStates - IState* initialState Sets up the initial state
Accesses: CAIDirector, CAgent, IAIState Accessed By: CActor, CAgent Stipulation: None
Risk(s): None
Time Estimate: 1 hour Author(s): Joshua Jacobs
203
Miscellaneous CCamera Description: The camera will hold the frustum that will be used in all culling algorithms. This class will be our eye‟s into our game and will make sure that the player is always visible in game space. Calling Update every frame, passing in delta time, will update
the camera based on the player‟s new position vs the player‟s old position. You will be
able to get the frustum using GetFrustum to perform frustum culling outside of the Camera class. Render can also perform frustum culling if the class has access to the CObjectManager and CSceneManager. Functions:
Return Type
Function Name Parameters Description
void Init - void Setup the frustum and attach the camera to the player.
CVec3f** GetFrustum - void Returns the frustum for any calculations needed.
void Update - float fDeltaTime Updates the camera‟s movements and keeps it within a certain distance of the player
void Render - void Perform frustum culling.
void HandleEvent - CEvent* e Handles events, specifically for rotating the camera.
void SetPerspective - float fAspectRatio Used to change the aspect ratio
void SetScreenSize - int nWidth - int nHeight
Used to set up the dimensions of the far plane of the frustum
Accesses: CFrustum, Math/Physics, CSceneManager, CObjectManager Accessed By: CSceneManager, CRenderer Stipulation:
204
None
Risk(s): None
Time Estimate: 8 Hours Author(s): Gant Briseno
205
CGame Description: Base for all other modules. Initializes game states and controls the game loop. Functions:
Return Type
Function Name
Parameters Description
void Init - void Initializes all relevant game systems
void Shutdown - void Closes and cleans up all relevant game systems
void Run - void Contains the update and renders calls
Accesses: All systems. Accessed By: None Stipulation: CGame must be initialized before all other modules.
Risk(s): None
Time Estimate: 2 Hours Author(s): Dylan Hagen
206
CObjectManager Description: This class will allow objects to be managed automatically. You will use the AddObject function to add objects to the list held within CObjectManager and once it‟s in
there you will call Update every frame, passing in delta time, to properly update all objects within the list. Functions:
Return Type Function Name Parameters Description
void Init - void Sets up the Object Manager so that it‟s ready to go right out of the box.
void Update - float fDeltaTime Calls update on all objects being held.
CDynArr& GetObjects - void Returns the list of objects
void AddObject - CBaseObject* obj Adds an object to the list of objects
void Shutdown - void Makes sure everything is freed up and clears the list of any dynamic memory
Accesses: CDynArray, ICharacter Accessed By: CSceneManager Stipulation: None
Risk(s): None
Time Estimate:
207
4 Hours Author(s): Gant Briseno
208
Derivation Charts
ICharacter
CActor CAgentPlayer Enemy
Player or Enemy ( Dynamic Object )
Render Data CRenderEntity
Spell/Stats
ContainsDerives From
Key
ICharacter - ICharacter is an interface class that determines whether the character is the actor (player) or an agent (enemy). The character contains a CRenderEntity which contains the render data.
CActor and CAgent -The player and enemy contain a pointer to the spells which are stored in the spell / stats class.
209
210
Memory Map
System RAM Graphics RAM
3 MB: Executable 10 MB: Geometry
3 MB: Level Info (Locations, etc) 128 MB: Textures
15 MB: Animation Data 7 MB: Animation Data
30 MB: Sounds 2 MB: Lighting
7 MB: Events
10 MB: Collisions
Total Memory
68 MB 147 MB
Lighting - The lighting in the game will be set to 2MB since we will only have one actual light in the game. So the calculations for lighting should not be too heavy. In addition to this we will use light maps, but they will be categorized under textures. Animation Data - The max amount of memory set for the animations on the GPU is 7MB since it will handle any in-game encounter as well as player animation data. Textures - The game engine will have a heavy dependency on textures since every object will have at least 2 textures (A normal map and its diffused color map). We will also add light maps to the environmental pieces of the game which will be another required set of loaded textures and therefore the textures will be our largest chunk of memory coming in at a limit of 128MB. Geometry - Geometry in the game will be a particular memory intensive aspect. To alleviate loading excessive memory and re-loading geometry we will be using instancing so that the geometry only gets loaded into memory once and gets re-used in multiple areas of the map and therefore will be set to 10MB of memory. Collisions - Due to the constant running of checks for terrain and bounding volume collisions and reactions the collision‟s memory will be set to 10MB.
211
Events -The game‟s event system will handle the game‟s input and sound and will be continually running so it will be set to a limit of 7MB of memory. Sounds -The game‟s sounds will also be memory intensive, so in an effort to alleviate this, we will swap out sound banks between game states and run-time events to prevent it from exceeding its 30MB limit. Animation Data - Due to the processing of any animated object‟s joints and key frames, the CPUs animation data will be set to 15MB of memory. Level Info -The games level info will include foliage positions, enemy encounter locations, node locations, etc. and will be set to 3MB of memory. Executable -The executable will handle the games stack size and code base and therefore will be set to 3MB.
212
Code Review Plan
1. Scheduling 2. Every Friday 3. Purpose
a. Test and evaluate newly created modules b. Prevent unexpected side effects from occurring c. Make sure coding standards are being followed d. Give the team a better understanding of the modules that make up
the game and how they interact with each other 4. Procedure
a. All programmers will be on a code freeze while review is in place b. Tech leads will select a newly created module c. Review module for 15 minutes d. Write notes for later feedback e. Repeat for all newly created modules f. Entire review will last no more than 2 hours
5. Feedback a. Written by the tech leads and presented to the IPs b. Passed back to the author of the module by Monday c. Tips to improve safety and reliability of code d. Note potential logic flaws
213
Integration Plan
When a programmer completes a module, the author must test it thoroughly by using either a spike solution or an offline version of the build. The module must be able to pass all positive test cases and contain no warnings and/or errors to be able to be integrated into the build. When testing a module, the author must test for positive test cases; any test that was designed for the functions intended use, any test that could potentially crash a function, such as trying to invoke a function with an uninitialized parameter. For example, if an Add function was prototyped as int Add(int a, int b) and the value of 2 was passed in for both parameters, the function should return 4. If while testing, an A-level bug is found, the module becomes invalidated and cannot be integrated into the build until it passes all positive unit tests. However, if the module passes the unit tests and is then found to contain a bug that was not detected by the tests, then it will be added to the ongoing bug list and will be assigned to a programmer to fix at a later date.
If the author successfully completes all of the necessary test cases and has designed and implemented the module to meet all of the coding standards set forth for the project then the module is able to be fully integrated into the working build.
If the newly integrated code breaks the current build, the author will be
allotted a maximum of 8 hours, based on the priority and complexity of the task, to fix the build. If the integration is found to be extremely complex, multiple programmers will be assigned to assist in the task. Time for these tasks will be assigned by the tech leads. If the issue cannot be solved in the allotted time, the tech leads will review the progress made in fixing the build and then have the option to extend the amount of time and/or add one or more programmers to the task. If the tech leads see that little or no progress has been made, the tech leads may decide to roll back the build to a previous version or hold a vote on how to proceed next.
214
Testing Plans
Internal Testing
1. All team members must test the functionality of the their modules upon its completion before attempting to integrate it within the build.
a. Stipulations and Functionality (refer to the Module Breakdown section) must be met before submitting.
2. All team members as a group will play the current build of the game to help identity possible bugs early on in the project.
a. Group testing will take place every Thursday. i. Will be done for 1 to 4 hours, depending on what‟s left on the
schedule. b. Gameplay testing will take place every other day (individual
testing). c. Any bug submitted that is not able to be replicated during testing
will be taken off the list.
External Testing
1. Testers will be able to sign up for alpha and beta testing via invitation. a. Potential testers will fill out an External Tester Form giving us
information useful in deciding who we can use for testing. 2. Testers will have access to a bug report form that they can fill out when
they find a bug that they want to report. a. When the form is submitted it will be sent to the QA lead and IPs
which they will put on Hansoft.
Bug handling
1. Analysis a. The QA lead or IPs will confirm the existence of the bug.
i. By being able to reproduce it from a bug report. ii. This will be done every Thursday.
b. Priority will be assigned based on feature priority and bug severity. i. Bug priorities are A, B and C.
1. A-level bugs cause a game to crash or the game to be rendered unplayable due to unforeseen circumstances.
a. Examples i. A1: If you change the volume and then
enter the game and it crashes. ii. A2: If you back into a wall and cast a
spell you fall through the level.
215
2. B-level bugs directly affect gameplay, but do not cause game to be unplayable.
a. Examples i. B: Every time you cast a spell, it casts
twice. 3. C-level bugs do not directly affect gameplay, but may
cause visual anomalies. a. Examples
i. C: Texture distortion. 2. Assignment
a. The author of the affected module will be assigned as the primary owner of the bug and required to fix it.
i. If any team member has insight into the cause of the bug, they will pass the information to the owner of the bug and may provide assistance if it is required.
ii. If the author is unavailable to fix the bug, it will be assigned, based on priority, to a team member by the tech leads.
3. Reintegration a. The system must be re-tested and must pass all unit tests before
any code can be resubmitted. 4. Testing and resolution
a. The system must be retested to ensure that the bug has been fixed and to see if the changes have introduced any new bugs.
Responsibilities
The QA lead is in charge of collecting the bug report data and assigning the bugs to the appropriate team member based on the category of the bug as well as the amount of time allotted for each bug fix. The QA lead is also responsible for creating a log for all bugs both past and present and keeping track of their status. If the QA lead is unable to deduce the proper assignment of the bug, they may refer to the tech leads or the art lead to further track down the issue. Once the weekly testing is complete the QA lead is to report back to the IPs with the current progress.
Sample External Testing Information Form
Name: Age: Gender: Testing Experience: Game Production Experience: Computer Specifications:
- Motherboard/Computer make and model: - RAM: - CPU
216
o Model: o Manufacturer: o Speed:
- GPU o Model: o Manufacturer: o RAM:
Sample Bug Report
Type of bug (circle one): Crash (A1) Functionality (A2) Feature (B) Cosmetic (C)
Short description:
Steps to replicate:
Result of bug: Screen Capture (if visual bug):
Assigned To:
217
File Hierarchy