story overview
DESCRIPTION
Story Overview. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/1.jpg)
![Page 2: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/2.jpg)
You find your kitten "Sparkles" has been catnapped! You discover a note left by his captor and vow to retrieve your precious Sparkles. Little did your newfound enemy know, you are actually a Gunsmithing Major at the local Community College. You will stop at nothing to save him, fighting your way through various environments, building new weapons as you go to take down increasingly tougher enemies.
Gunsmithing major gives an excuse as to why main character can create guns as well as she can.
![Page 3: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/3.jpg)
Terence LeeGrant JohnsonKevin HobsonJeff Patterson
![Page 4: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/4.jpg)
• Language: C#• Graphics Framework: XNA• Physics: JigLibX• Inventory Menus: XWinForms• Installer: Inno Setup 5• Tools:– Visual Studio 2008– Paint.NET– Blender
![Page 5: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/5.jpg)
Custom model renderer◦ Everything is a SceneNode
Combined with JigLibX physics◦ Handles collisions and movement
![Page 6: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/6.jpg)
GameManagerGameManager
ScreenManager
Game Screen
CollisionManager
SceneManager
LevelManager Console
Debug Drawer
Game
Menu Screen Pause Screen
Level Editor
SceneNodeSceneNode EntityEntity
SceneNodes Entities
ModelNodeModelNode
PhysicalNodePhysicalNode
FPSCameraFPSCamera LevelNodeLevelNode
EnemyEnemy ItemItem LevelLevel
WeaponPart
WeaponPart WeaponWeapon
![Page 7: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/7.jpg)
JigLibX◦ Gravity◦ Friction◦ Collisions◦ Collision event handlers
In ModShooter: ◦ Relative bounding boxes◦ OR triangle accuracy meshes (levels)
![Page 8: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/8.jpg)
![Page 9: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/9.jpg)
![Page 10: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/10.jpg)
Common FPS controls◦ WASD movement and strafing◦ Spacebar: Jump◦ Control: Crouch◦ Shift: Run◦ Mouse: Look and fire
Crouching and jumping is context sensitive◦ Need to calculate distance from ground
![Page 11: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/11.jpg)
• Different graphics framework– XNA too low level• Had to implement basics such as:– SceneNode framework– Camera system– Model rendering/transforming
• Convenience of matrices vs Euler vectors– Additional calculations, no simple object transformations
• Comparatively few resources– However, C# was good• Should have used more interfaces– Did not refactor code often; test code remains
![Page 12: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/12.jpg)
Select your action, then select your barrel.
![Page 13: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/13.jpg)
Could select parts and build weapons. No information. Could not un-equip weapons without
disassembling them.
All of this has been addressed!
![Page 14: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/14.jpg)
Add data displays for parts and weapons.◦ Show stats of individual parts.◦ Preview resulting stats from valid combinations.◦ Show stats of weapon, parts it’s using.
“Unequip” button: save a weapon for later.
Prohibit selection of incompatible parts.◦ Or at least tell the user “NO!”
![Page 15: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/15.jpg)
Information boxes for each action and barrel
Information for weapons “Dequip” buttonThere’s more! Can now discard unwanted items Can NOT assemble incompatible parts Given a few parts to start with
![Page 16: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/16.jpg)
If you build it, they will be shot
![Page 17: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/17.jpg)
Infinite ammo One click, one shot Physical bullets Invisible gun! Code all over the place Manual naming
![Page 18: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/18.jpg)
Consolidate methods into Player class.
Connect weapon’s fire rate, ammo capacity into game play.
Implement other weapons.◦ Shotgun◦ Machine gun
![Page 19: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/19.jpg)
Ammo and Reloading Semi/auto firing Hitscan Mauser Code consolidated Auto named
![Page 20: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/20.jpg)
Behaviors (AI-ish)◦ STAND (for level placement)◦ AIMPLAYER◦ PATROL (unused, left over from previous TB)◦ PATROL_AND_CHASE
Models◦ Wizard, Warlock (unused – Texture issue)
AIMPLAYER shooting◦ issues
![Page 21: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/21.jpg)
![Page 22: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/22.jpg)
More advanced AI◦ Behaviors not just based on distance from player◦ Waypoints
Fixing Textures (Warlock texture) More models Bullets and Walls
![Page 23: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/23.jpg)
When an Enemy is killed, they drop one of the following:◦ (A)ction Box – randomized action and
characteristics Upon pick up, this action added to the inventory
◦ (B)arrel Box – randomized barrel and characteristics Upon pick up, this barrel added to the inventory
◦ Health Box
![Page 24: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/24.jpg)
![Page 25: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/25.jpg)
![Page 26: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/26.jpg)
Inno Setup 5 used◦ Open source program◦ Comes with helpful installer-creating wizard
Included script with program creates Inno Setup’s installer!
◦ Installer checks whether .NET 2.0 and XNA 3.0 is present
Issues:◦ Lack of familiarity with Pascal◦ Installing XNA 3.0 Redist files if not present
![Page 27: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/27.jpg)
Blender used to create game environments exported in XBF format
![Page 28: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/28.jpg)
Each Entity type implements two functions◦ LoadFromXml(XmlNode): Reads info from XML,
sets properties of Entity◦ WriteXml(TextWriter): Writes the Entity’s
properties in XML format to the TextWriter Each Entity reads/writes data common to all
Entities (Name, Model, Position, etc.) and data specific to its type (Life, AmmoCapacity, BarrelLength, etc.)
![Page 29: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/29.jpg)
<?xml version="1.0" encoding="utf-8" ?> <level> <levelModel>Content/Models/office</levelModel> <entities> <player> <camera> <position>10,0,-10</position> <xRotation>-0.04199977</xRotation> <yRotation>-0.6885061</yRotation> </camera> <life>100</life> </player> </entities></level>
![Page 30: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/30.jpg)
XNAConsole IronPython for scripting Python Interpreter
◦ Can change variables during runtime◦ Works with C# Reflection system◦ Custom commands
Save Load Spawn
![Page 31: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/31.jpg)
Purpose of custom console commands Can create any entity with any parameters
directly from in-game console
![Page 32: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/32.jpg)
Crosshair Health Ammunition Color flashes for events
◦ Hit by bullet: Red◦ Pick up health pack: Green
Death Screen
![Page 33: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/33.jpg)
![Page 34: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/34.jpg)
![Page 35: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/35.jpg)
![Page 36: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/36.jpg)
Specialized Item Entity Collision fires event
◦ Increases player health◦ Notifies HUD◦ Deletes health box
![Page 37: Story Overview](https://reader030.vdocument.in/reader030/viewer/2022032708/56812ac2550346895d8e8f47/html5/thumbnails/37.jpg)
Take specialized action upon collision Invisible except in debug mode Warp Boxes
◦ Send player to another location (same or different level)
◦ Used to switch levels Damage Boxes
◦ Harmful to any entity (player or enemy) that touches it
◦ Used for “dangerous” areas