19
Tools for Game Developmet Erik Harpstead Carnegie Mellon University 1

Tools for Game Developmet Erik Harpstead Carnegie Mellon University 1

Embed Size (px)

Citation preview

1

Tools for Game Developmet

Erik HarpsteadCarnegie Mellon University

2

Game Development is Hard

3

4

Challenges in Game Development

• Rapidly shifting design requirements

• Multi-platform development

• Integration of many different forms of media (sound, music, art, modeling)

• Highly interdisciplinary teams

• The demand for novelty

5

Three Routes for Development

6

Three Routes

• Roll your own engine

• Use a Framework

• Use an off-the-shelf engine

7

Rolling Your Own Engine

• Surprisingly common

• Special game mechanics require custom software architectures

• Existing tools are too restrictive for rapid design changes

• Using other people’s tools is a cop-out

8

Using a Framework

• Usually provide basic utilities and primitives

• Commonly built around a state machine in a loop

9

Using a Framework

10

Using a Framework

11

Using a Framework

• Other Common Components:– Rendering Library

– Physics Engine

– Input Abstraction

– Fast Math Libraries

– Object Pooling/Resource Management

– Audio Management

12

Using a Full Game Engine

• Use some kind of interactive editor

• Provide custom API or scripting language for defining game mechanics

• More approachable by design and art members of a development team

• Combines many tools into a single package

13

14

Entity/Component Model

• A pattern that is becoming more popular in game development

• Used in the Unity Game Engine

• Every game object is an entity which contains different components

• Those components are acted on by systems that run in loops

15

Example Entity

class Entity {

void AttachComponent(ComponentType, argumentList, name)

void DetachComponent(name) void UpdateComponents()

void UpdateComponentType(ComponentType typeOfComponentToUpdate)

void HandleMessage(MessageType message) // echoes to all attached components

...

BaseComponentList attachedComponentList

.... }

16

Example Component

class BaseComponent {

virtual void Startup()

virtual void Update()

virtual void Shutdown()

virtual void HandleMessage(MessageType message) .... }

 

class RenderComponent: Public BaseComponent {

virtual void Startup() // (registers the renderable mesh with the rendering system)

virtual void Shutdown() // (removes the renderable mesh from the rendering system)

... }

17

Components in Unity

• All public members of a script are exposed in the GUI allowing non-programmer team members to control game settings

• Built in Component types can also be accessed and edited this way

• Properties can be changed in the GUI while the game is running to test changes

18

Open Areas for Game Tool Development

• Implementing AI behaviors (complex simulation in general)

• Better animation control (some promising recent tools)

• Truly cross-platform deployment (particularly to web)

19

Questions?