1 / 31

Everything Forever Entertainment

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

braith
Download Presentation

Everything Forever Entertainment

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Everything Forever Entertainment RandyHatakeda Kyle Pickering

  2. Debriefing • C++ • DirectX • 3D • RPG • Isometric View • FMOD • Point-Based

  3. Extrinsic Tools • Visual Studio 2008 • Direct X February 2010 SDK • NVIDIA Shader Library • Blender

  4. Special Features • Simple Input • DirectX Mesh Loading • Map Generation • Enemy Spawning • A.I. • Pathfinding • Dynamic Spell Handling System

  5. Feature - Simple Input • Mouse • Context Sensitive Mouse Events • Shift • 1, 2, 3, 4, and 5

  6. Feature - Single Mesh Hierarchy • One mesh, multiple instances • Animation Controllers

  7. Feature - Map Generation • Individual Tiles • Tile Layouts • World Map Generated

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

  9. Feature - A.I. • A.I. Level • General Choice • Action Choice

  10. Feature - Pathfinding • Search Pattern • Creates a list of nodes • Converts list to XYZs

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

  12. Discuss Problem Solving Techniques • .cpp files • Map editor • .X parser • Enemy spell aiming calculation • Using cosine to calculate y axis height (0 – 180) • Picking

  13. Tech - Dot CPP Files • “Cross inclusion” Problem • When certain classes need to be aware of eachother.

  14. Tech - Map Editor • In the console • Creates the tile layout text files

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

  16. Tech - Enemy Aiming • Calculate distances • Calculate times • Calculate time differences • Pick smallest • Select action

  17. Tech - Cosine • Wanted a smooth natural flight up and down. • Cosine arc delivers: • Int a = (currentLifetime / maxLifetime) * 180; • spellPos.y = cos(a) * maximumHeight;

  18. Team Dynamics • Planned very generally, made more specific goals as we went • Separated out work so we wouldn’t have to worry about conflicts

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

  20. Team - One Step at a Time • Akin to SCRUM/Agile Development • Exception: Very loosely defined product backlog, or “wishlist”

  21. Team - Separated Work • Separated workload in a manner that • Allowed for minimal conflict with file manipulation

  22. What We’d Like to Change • Hooking up animation controllers to animated models • Enemy Initialization • Further Entity Inheritance through abstract Classes, perhaps Interface Classes.

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

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

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

  26. 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()

  27. Lesson - CPP Files Are Awesome • We didn’t know the power of Dot CPP files at the start of development

  28. Lesson - Know What You Want • Few specific goals resulted in few specific successes

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

  30. Lesson - Optimize? • Single lines aren’t horrible • Sqrt() • New • Delete • Cos() • Optimize entire algorithms

  31. The End • Questions?

More Related