310 likes | 426 Views
Everything Forever Entertainment. Randy Hatakeda Kyle Pickering. Debriefing. C++ DirectX 3D RPG Isometric View FMOD Point-Based. Extrinsic Tools. Visual Studio 2008 Direct X February 2010 SDK NVIDIA Shader Library Blender. Special Features. Simple Input DirectX Mesh Loading
E N D
Everything Forever Entertainment RandyHatakeda Kyle Pickering
Debriefing • C++ • DirectX • 3D • RPG • Isometric View • FMOD • Point-Based
Extrinsic Tools • Visual Studio 2008 • Direct X February 2010 SDK • NVIDIA Shader Library • Blender
Special Features • Simple Input • DirectX Mesh Loading • Map Generation • Enemy Spawning • A.I. • Pathfinding • Dynamic Spell Handling System
Feature - Simple Input • Mouse • Context Sensitive Mouse Events • Shift • 1, 2, 3, 4, and 5
Feature - Single Mesh Hierarchy • One mesh, multiple instances • Animation Controllers
Feature - Map Generation • Individual Tiles • Tile Layouts • World Map Generated
Feature - Enemy Spawning • Up to 12 enemies alive at a time • The World finds a point where one can spawn • Outside of visible radius • Inside a global radius • Enemies are removed if they are outside the global radius
Feature - A.I. • A.I. Level • General Choice • Action Choice
Feature - Pathfinding • Search Pattern • Creates a list of nodes • Converts list to XYZs
Feature - Complex Spell System • The Spell Class Has: • Heavily logic-based update function • Ability to create more Spell Entities • An Individual Spell Entity Has: • Attributes relating to updates • Events • Init, Death, Update, Hit
Discuss Problem Solving Techniques • .cpp files • Map editor • .X parser • Enemy spell aiming calculation • Using cosine to calculate y axis height (0 – 180) • Picking
Tech - Dot CPP Files • “Cross inclusion” Problem • When certain classes need to be aware of eachother.
Tech - Map Editor • In the console • Creates the tile layout text files
Tech - Dot X File Parser Tool • Animated model came with one gigantic animation • Animated model file is 100,000 lines long • The tool: • Isolates a set of frames, removing the unwanted • Creates an Animation Set, used by DirectX
Tech - Enemy Aiming • Calculate distances • Calculate times • Calculate time differences • Pick smallest • Select action
Tech - Cosine • Wanted a smooth natural flight up and down. • Cosine arc delivers: • Int a = (currentLifetime / maxLifetime) * 180; • spellPos.y = cos(a) * maximumHeight;
Team Dynamics • Planned very generally, made more specific goals as we went • Separated out work so we wouldn’t have to worry about conflicts
Team - The Master Plan • Single Day • Green, Yellow, Red • Fairly broad and general, with a few specifics: • 3D in DirectX • Complex Spell System • Map Generation through Text Files
Team - One Step at a Time • Akin to SCRUM/Agile Development • Exception: Very loosely defined product backlog, or “wishlist”
Team - Separated Work • Separated workload in a manner that • Allowed for minimal conflict with file manipulation
What We’d Like to Change • Hooking up animation controllers to animated models • Enemy Initialization • Further Entity Inheritance through abstract Classes, perhaps Interface Classes.
Horrible - Connecting Meshes • Game-Side and DirectX-Side • Game-Side models had Animation Controllers • Initializing in the Game-Side added to an “uncontrolledAnim” integer. • DirectX hooks up Animation Controllers to the proper mesh during update. • Better solution: use .cpp files.
Horrible - Enemy Initialization • They couldn’t be initialized when they were created without changing the structure • Update checks a bool to see if they have been initialized or not.
Horrible – Similar Classes • The player, enemy, and destructable class share many attributes and methods • health • sufferDamage() • Using further derived classes would allow for all health-based entities to share the same functions
Lessons Learned • Dot CPP file usage • Plan on paper, check logic, convert to code • Knowing what you want at the beginning is best • Optimization algorithms, not sqrt()
Lesson - CPP Files Are Awesome • We didn’t know the power of Dot CPP files at the start of development
Lesson - Know What You Want • Few specific goals resulted in few specific successes
Lesson - Plan, Check, Code • Step 1: Plan out logic, on paper • Step 2: Check logic, on paper • Step 3: Code • Step 4: ???????????? • Step 5: Profit
Lesson - Optimize? • Single lines aren’t horrible • Sqrt() • New • Delete • Cos() • Optimize entire algorithms
The End • Questions?