Upload
whitney-griffith
View
215
Download
0
Tags:
Embed Size (px)
Citation preview
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
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
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
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)