everything forever entertainment

31
Everything Forever Entertainment Randy Hatakeda Kyle Pickering

Upload: braith

Post on 17-Feb-2016

35 views

Category:

Documents


3 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Everything Forever Entertainment

Everything Forever Entertainment

Randy HatakedaKyle Pickering

Page 2: Everything Forever Entertainment

Debriefing

C++ DirectX 3D RPG Isometric View FMOD Point-Based

Page 3: Everything Forever Entertainment

Extrinsic Tools

Visual Studio 2008 Direct X February 2010 SDK NVIDIA Shader Library Blender

Page 4: Everything Forever Entertainment

Special Features

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

Page 5: Everything Forever Entertainment

Feature - Simple Input

Mouse Context Sensitive Mouse Events Shift 1, 2, 3, 4, and 5

Page 6: Everything Forever Entertainment

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

Page 7: Everything Forever Entertainment

Feature - Map Generation Individual Tiles Tile Layouts World Map Generated

Page 8: Everything Forever Entertainment

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

Page 9: Everything Forever Entertainment

Feature - A.I.

A.I. Level General Choice Action Choice

Page 10: Everything Forever Entertainment

Feature - Pathfinding

Search Pattern Creates a list of nodes Converts list to XYZs

Page 11: Everything Forever Entertainment

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

Page 12: Everything Forever Entertainment

Discuss Problem Solving Techniques .cpp files Map editor .X parser Enemy spell aiming calculation Using cosine to calculate y axis

height (0 – 180) Picking

Page 13: Everything Forever Entertainment

Tech - Dot CPP Files

“Cross inclusion” Problem When certain classes need to be aware

of eachother.

Page 14: Everything Forever Entertainment

Tech - Map Editor

In the console Creates the tile layout text files

Page 15: Everything Forever Entertainment

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

Page 16: Everything Forever Entertainment

Tech - Enemy Aiming

Calculate distances Calculate times Calculate time differences Pick smallest Select action

Page 17: Everything Forever Entertainment

Tech - Cosine

Wanted a smooth natural flight up and down.

Cosine arc delivers: Int a = (currentLifetime / maxLifetime) *

180; spellPos.y = cos(a) * maximumHeight;

Page 18: Everything Forever Entertainment

Team Dynamics

Planned very generally, made more specific goals as we went

Separated out work so we wouldn’t have to worry about conflicts

Page 19: Everything Forever Entertainment

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

Page 20: Everything Forever Entertainment

Team - One Step at a Time Akin to SCRUM/Agile Development

Exception: Very loosely defined product backlog, or “wishlist”

Page 21: Everything Forever Entertainment

Team - Separated Work

Separated workload in a manner that Allowed for minimal conflict with file

manipulation

Page 22: Everything Forever Entertainment

What We’d Like to Change

Hooking up animation controllers to animated models

Enemy Initialization Further Entity Inheritance through

abstract Classes, perhaps Interface Classes.

Page 23: Everything Forever Entertainment

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.

Page 24: Everything Forever Entertainment

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.

Page 25: Everything Forever Entertainment

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

Page 26: Everything Forever Entertainment

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

Page 27: Everything Forever Entertainment

Lesson - CPP Files Are Awesome We didn’t know the power of Dot CPP

files at the start of development

Page 28: Everything Forever Entertainment

Lesson - Know What You Want Few specific goals resulted in few

specific successes

Page 29: Everything Forever Entertainment

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

Page 30: Everything Forever Entertainment

Lesson - Optimize?

Single lines aren’t horrible Sqrt() New Delete Cos()

Optimize entire algorithms

Page 31: Everything Forever Entertainment

The End

Questions?