everything forever entertainment randy hatakeda kyle pickering

31
Everything Forever Entertainment Randy Hatakeda Kyle Pickering

Upload: warren-parsons

Post on 14-Jan-2016

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

Everything Forever Entertainment

Randy HatakedaKyle Pickering

Page 2: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

Debriefing

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

Page 3: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

Extrinsic Tools

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

Page 4: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

Special Features

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

Page 5: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

Feature - Simple Input

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

Page 6: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

Feature - Single Mesh Hierarchy

One mesh, multiple instances Animation Controllers

Page 7: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

Feature - Map Generation

Individual Tiles Tile Layouts World Map Generated

Page 8: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

Feature - A.I.

A.I. Level General Choice Action Choice

Page 10: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

Feature - Pathfinding

Search Pattern Creates a list of nodes Converts list to XYZs

Page 11: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

Tech - Dot CPP Files

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

of eachother.

Page 14: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

Tech - Map Editor

In the console Creates the tile layout text files

Page 15: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

Tech - Enemy Aiming

Calculate distances Calculate times Calculate time differences Pick smallest Select action

Page 17: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

Team - One Step at a Time

Akin to SCRUM/Agile Development Exception: Very loosely defined product

backlog, or “wishlist”

Page 21: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

Team - Separated Work

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

manipulation

Page 22: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

Lesson - Know What You Want

Few specific goals resulted in few specific successes

Page 29: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

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 Randy Hatakeda Kyle Pickering

Lesson - Optimize?

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

Optimize entire algorithms

Page 31: Everything Forever Entertainment Randy Hatakeda Kyle Pickering

The End

Questions?