Everything Forever Entertainment

Preview:

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

Citation preview

Everything Forever Entertainment

Randy HatakedaKyle 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?

Recommended