Gilese 581

44
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 1

description

Gilese 581. Management. 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. - PowerPoint PPT Presentation

Transcript of Gilese 581

Page 1: Gilese  581

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

Page 2: Gilese  581

2

Management Overview

Management

Page 3: Gilese  581

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.

Page 4: Gilese  581

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.

Page 5: Gilese  581

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.

Page 6: Gilese  581

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.

Page 7: Gilese  581

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.

Page 8: Gilese  581

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.

Page 9: Gilese  581

9

Management Overview

Functional Design

Page 10: Gilese  581

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

Page 11: Gilese  581

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

Page 12: Gilese  581

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

Page 13: Gilese  581

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

Page 14: Gilese  581

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.

Page 15: Gilese  581

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.

Page 16: Gilese  581

16

Options Screen• The purpose of the options screen is allow user to adjust sound volume, adjust

screen size, Enable unit voices,…

Page 17: Gilese  581

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

Page 18: Gilese  581

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

Page 19: Gilese  581

19

Main Game Screen – cont’d

• Victory Screen: after the game is over victory screen gets displayed

Page 20: Gilese  581

20

Management Overview

Software Design

Page 21: Gilese  581

21

Template Design Pattern

Page 22: Gilese  581

22

Composite Design Pattern

Page 23: Gilese  581

23

Singleton Design Pattern

Page 24: Gilese  581

24

Range and Movement using MapTemplate

Direction

• 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.

Page 25: Gilese  581

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”

MapTemplate

• 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.

Page 26: Gilese  581

26

Flexible Design in Map Templates

LineEffect

RangeEffect

Page 27: Gilese  581

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.

Page 28: Gilese  581

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

Page 29: Gilese  581

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 Improvement

• 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.

Page 30: Gilese  581

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.

Page 31: Gilese  581

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)

Page 32: Gilese  581

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

Page 33: Gilese  581

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.

Page 34: Gilese  581

Gliese 581g STP

• The standard test procedure outlines user stories to verify that the game is functional and also tests boundary conditions

Page 35: Gilese  581

35

Management Overview

Lessons LrnedLens on Leed

Lessons Learned

Page 36: Gilese  581

36

Lesson Learned

• Software Development

• Patient

• Time Management

• Solve Problems

• Communication!!!!!

Page 37: Gilese  581

Unit Tactics• 7 different unit types • Diverse and competitive game play• Units are balanced• Each unit has their own strengths and weaknesses

Page 38: Gilese  581

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!

Page 39: Gilese  581

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!

Page 40: Gilese  581

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!

Page 41: Gilese  581

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!

Page 42: Gilese  581

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!

Page 43: Gilese  581

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.

Page 44: Gilese  581

Tank

• Highest single-target damage• Medium movement range• Medium attack range• Attacks in a straight line, impacting

first obstacle• Long recharge