Date post: | 12-Jan-2016 |
Category: |
Documents |
Upload: | bryan-gilmore |
View: | 214 times |
Download: | 1 times |
1
Gilese 581
(GLEE-ZA)Final
Presentation
Jan Horjus, Abebe Woreta, Neil Chu, Ritik
Ray & Patrick Logan
CS673 – Introduction to Software Engineering –
Tues. April 30 2013
2
Management Overview
Management
3
Management Overview
Focus of this iteration; don’t just finish, but polish our product.
• All software must be efficient, proficient and usable; our game must be something more.
• Tweak the user experience
Examples:• Display damage value per attack, not just an ambiguous health
bar.• Further options added, i.e. concede defeat.• Art, voice acting & sound effects improved• Interface streamlined and polished.
4
Management Overview
Focus of this iteration; don’t just finish, but polish our product.
• Everyone wore multiple hats:
• We were fortunate to have multiple levels of experienced engineers on our team.
• The size of our team required us to push our skills & abilities
• Finish line in sight, all pushed hard to make the final iteration/product a success.
• With further goals still on the drawing board, not all were reachable within our timetable. By keeping tight reins on the scope of the project, we drilled down to what was possible.
5
Management Overview
• Project Risks:
• Budget – $0. WE HIT OUR GOAL!
• Schedule – 5 adults with hectic schedules. Worked around, adapted.
• Personnel – many diverse skills/talents. Each person found their niche but still worked outside their comfort zone.
• Resources – luckily, what we needed was freely available to students.
• Customer – our first customer was us, the most demanding customer.
• Requirement issues – XNA provided a bit of a learning curve.
• Complexity – Not just a software product. Needed to do more than process input to output. Needed to be polished, nuanced, enjoyable.
6
Management Overview
• Technical Risks:
• Specification ambiguity: we knew what we wanted to make from the outset, not 100% certain of the specifics.
• Leading-edge tech: XNA is a leading production environment for small scale or not-for-profit game production.
• Potential design: from concept to product, we stayed true to the original concept design.
7
Management Overview
• Business Risks:
• Market/Sell risk
• Current incarnation, most likely not a mass market release.
• Scalable to mobile device format, monetizing through in-game ad revenue or micro-transaction game add-ons.
• Major success has been achieved for similar games.
8
Management Overview
• Generic Risks:
• Product size: small in current incarnation but could be scaled up through future additions, downloadable content.
• Development environment: Visual Studio 2010 & Microsoft XNA• C# based, but with peculiarities.
• Staff size/experience: 2 senior engineers, 2 mid-tier and 1 novice.• All were familiar with VS & C#, all had to learn XNA.• Given experience with C# gave us a leg-up on the learning curve.
9
Management Overview
Functional Design
10
Application Features or Functionality Overview
Main Menu Screen Game Setup Screen
Map Screen (actual game)
New Game Load Game
Options Exit
Start
End
Options Screen
Cancel
Apply
Cancel Start Game
Screen Size
Sound Effects Volume
Music Volume
FUN!
Choose Players
Choose Army
Choose Map
Choose Victory
Condition
Map Scroll speed
Enable Unit
VoicesEnable Mouse
Scrolling
New Player Profile screen
Choose Name
Choose Portrait
Choose Unit Color
CancelSave
Click to create a new player profile
Main Menu
Options
Surrender
Return to Game
Escape menu
11
Main Menu
Name Game
• causes the user to leave main menu and transition to Game setup screen
Load Game
• causes the user to leave the main menu and transition directly to the main Game screen, where the game which was previously saved will be restored in its previous state.
Options
• causes the user to transition to options screen which provides options for adjusting sound volume, changing screen resolution and Game resolution
Exit
• Terminates the game application
12
Game setup Screen
The purpose of the game setup screen is to allow the user to determine the parameters of a new game before it begins: These parameters include: Selecting two players to participate in the match:- The user selects from a list of
player profiles, which is loaded from the disk when the Game setup screen is initialized
Game Setup Screen – cont’d
• Creating and Saving Player Profiles:- In addition to a list of current player profiles, the user is able to create new profiles by clicking “Click here to create new player profile”. The profiles include name, portrait and unit color
13
14
Game setup screen-cont’d
• Loading saved profiles from disk:-Player profiles are saved in xml format in directory called “PlayerProfiles”. Any profiles found in that directory are automatically loaded when the game setup screen is initialized
• Editing and Deleting player profiles:- Properties of player profile can be edited after the profile has been created and profiles can be deleted.
15
Game setup screen – cont’d
• Customizing player forces and choosing Victory conditions:-The players have to agree on the size of the army, the map they will be playing on and the victory condition before the match begins
• Victory conditions: Elimination or Assassination Elimination:- In an elimination game, a player must destroy all the opponents units in order to claim
victory. Assassination:- In an assassination game each player designates one of their units as the “commander”.
The first player to destroy the opponent’s commander unit is the victor.
16
Options Screen• The purpose of the options screen is allow user to adjust sound volume, adjust
screen size, Enable unit voices,…
17
Main Game screen
• This is the screen where players play the game.• This screen contains
The Game map- Displayed as a hexagonal grid which can be zoomed in and out Player status display – Shows the name and portrait of the player participating in
the match whose turn it currently is. Unit Status Display – When a player selects one of his/her own units, its statistics
such as unit name, HP, movement speed, recharge, attack type and Damage will be displayed in the unit status display
18
Main Game Screen – cont’d
• The Escape pop up menu:• Pressing the “Escape” key on the key board during the game will bring a pop up with the
following options: Main Menu- brings the user to the main menu screen Options Menu – brings user to the options screen Surrender – Ends the game and award the victory to the opponent of the player
whose turn it currently is Return to Game- Brings user back to the main Game screen
19
Main Game Screen – cont’d
• Victory Screen: after the game is over victory screen gets displayed
20
Management Overview
Software Design
21
Template Design Pattern
22
Composite Design Pattern
23
Singleton Design Pattern
24
Range and Movement using MapTemplate
Directio
n
• This class encapsulates a direction enumeration (there are 6 directions in the game)
• Provides many convenient operator overrides (++, --, ==, !=, integer conversions)
• Is used to index into a sprite rotation table.
MapLocation
• This class contains both a direction and a coordinate point.
• Primary functions is “Step(direction)” which moves the coordinate one step in the specified direction.
• StepForward() simply moves one space in the current direction.
25
Range and Movement using MapTemplate (cont.)
HexEffect
• Abstract class with one function: ApplyToHex(Hex)
• Can be used to do anything to a Hex object. Our inherited classes include “HighlighEffect” “DoubleHighlightEffect” and “UnitDamageEffect”
MapTe
mplate
• An Abstract class with one method: OnApply(Map, MapLocation, HexEffect)
• Puts all the pieces together.• It’s purpose is to apply an effect to a group of hexes
based on a starting location and direction. • Inherited classes include “RangeTemplate” and
“LineTemplate”. Both are designed to be flexible.
26
Flexible Design in Map Templates
LineEffec
t
RangeEffe
ct
27
Temporary Graphical Effects on Hexes
IDrawnEffect Interface
• Extends the IDrawnObject interface (so it has a Draw function), and adds one more function: bool IsFinished();
• Simply provides a standard way for a temporary drawn object to let its owner know when it is done and should be disposed of.
Inheriting
Effects
• The ExplosionEffect and DrawnTextEffect classes use the IDrawnEffect interface.
• Each Hex on the map keeps a list of effects. • Each is Drawn until it declares itself finished, then
removed.
28
Loading Maps from Files
How it
Works
• Map.InitMapFromFile(string filename)• This function uses a simple state machine to scan
a text file character by character and line by line.• No complex inheritance patterns – just a switch
statement in a loop, about 35 lines of code.
A Map File
29
Map “Environments”
Environment
Class
• Defines two hex textures and one background image.
• A static list of 5 combinations are defined, but any environment can be created.
• MapEnvironment.GetRandomEnvironment() is called at the beginning of each game.
Room for Improvem
ent
• Grouping together related properties of a map into a sub-component (composition, not inheritance) allows modularity.
• We can also define music to go with each environment, but we didn’t have any original music, so this options is not used.
Testing Overview
With a relatively simple game, and a small group that is continuously
developing and testing, it is easy to test the limits of the game and verify
functionality.
Unit Testing
• Unit testing is always preformed by each developer
• Code is submitted after the developer is satisfied with his work (yes this can be subjective)
Code Review
• Code is reviewed after check-in by another developer (a new set of eyes always helps)
• Iterative testing – need to make sure a change doesn’t affect functionality somewhere else in the game
Beta Testing PARTY!
• Coding, defect write ups, feature requests, food, friends and gaming.
• All group members are developers, so it goes without saying that our game is fully functional and perfect.
• …Good thing we had input from the users as well.• Game was played continuously by multiple
people on different machines to gauge user satisfaction and game functionality.
Gliese 581g STP
• The standard test procedure outlines user stories to verify that the game is functional and also tests boundary conditions
35
Management Overview
Lessons LrnedLens on Leed
Lessons Learned
36
Lesson Learned
• Software Development
• Patient
• Time Management
• Solve Problems
• Communication!!!!!
Unit Tactics• 7 different unit types • Diverse and competitive game play• Units are balanced• Each unit has their own strengths and weaknesses
Artillery
• Low health• Slowest Movement• Largest, most flexible attack range• Area Of Effect• Decent damage• Camp this guy somewhere safe and bombard
the enemy lines!
Commander
• Medium movement range• High HP and damage• Amazing reach with “5 in a line”
attack…if your own units aren’t in the way.
• WHAT ARE YOU DOING THAT’S YOUR COMMANDER!
Infantry
• Low health• Large movement range• Small Attack Range• Small-ish Damage…but it adds up.• Fast Recharge• Harass your enemies! Block their
movement and tank-fire!
Mech
• Most Powerful Unit in the game.• Huge HP, high damage, great reach and
AOE.• Like an even better commander and you
don’t lose if he dies. • Look I got a triple kill!
Rough Rider
• Fast movement• Large flexible attack range• Medium recharge
• Low health• Low damage• Great for finishing off
weakened targets that try to flee and heal!
Scout
• Largest movement range• Fastest recharge time• Low damage, Low health, Low range• Can be killed by a tank with one shot.• Best used to block enemy movement and
finish weakened enemies.
Tank
• Highest single-target damage• Medium movement range• Medium attack range• Attacks in a straight line, impacting
first obstacle• Long recharge