Slides for Erik's talk

Download Report

Transcript Slides for Erik's talk

Tools for Game Developmet
Erik Harpstead
Carnegie Mellon University
1
Game Development is Hard
2
3
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
4
Three Routes for Development
5
Three Routes
• Roll your own engine
• Use a Framework
• Use an off-the-shelf engine
6
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
7
Using a Framework
• Usually provide basic utilities and primitives
• Commonly built around a state machine in a loop
8
Using a Framework
9
Using a Framework
10
Using a Framework
• Other Common Components:
– Rendering Library
– Physics Engine
– Input Abstraction
– Fast Math Libraries
– Object Pooling/Resource Management
– Audio Management
11
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
12
13
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
14
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
.... }
15
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)
... }
16
Components in Unity
• All public members of a script are
exposed in the GUI allowing nonprogrammer 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
17
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)
18
Questions?
19