A good engine hides the problems you don’t care about and amplifies your ability to tackle the ones you do care about.
A bad engine brings out new problems and weighs you down as you go about your other business.
Use/make the right tool for the job, even if it doesn’t look like a traditional “game engine”.
BMOSLFGEMW: A Spectrum of Game Engine Architectures
1. BMOSLFGEMW:
A Spectrum of Game Engine Architectures
Adam M. Smith
expressiveintelligencestudio
UC Santa Cruz
amsmith@soe.ucsc.edu
CMPS 164 – Game Engines
March 30, 2010
2. What I’m about to show you cannot be found
in any textbook,
on any website,
on any sheet of paper anywhere.
expressiveintelligencestudio UC Santa Cruz
3. Outline
What’s a game engine?
The Spectrum
Some Examples
Spectrum Details
What’s in your engine?
What’s at stake?
expressiveintelligencestudio UC Santa Cruz
4. What’s a game engine? (first attempt)
A 3D graphics library with optional support for
physics and other animation-related
computation.
Example: Ogre3D
expressiveintelligencestudio UC Santa Cruz
5. What’s a game engine? (second attempt)
A comprehensive game building environment
with specialized languages, libraries, and
tools.
Example: Unity3D
expressiveintelligencestudio UC Santa Cruz
6. What’s a game engine? (giving up now)
All the software and hardware in your game
that isn’t part specific to that particular game.
Examples:
cstdio
HTML5+javascript
iOS
…
expressiveintelligencestudio UC Santa Cruz
7. The Spectrum
Bare Metal
Operating Systems
Libraries
Frameworks
Game Engines
Makers
Wizards
expressiveintelligencestudio UC Santa Cruz
15. The Spectrum, revisited
Bare Metal
Operating Systems
Used to build engines
Libraries
Frameworks
Game Engines
Used to build games
Makers
Wizards
expressiveintelligencestudio UC Santa Cruz
16. Bare Metal
Features
Processor, memory, I/O hardware
Primitive programming languages
Examples
Gameduino
PC with no OS
Early consoles
Giveaways:
Reinventing dynamic memory allocation,
managing hardware registers
expressiveintelligencestudio UC Santa Cruz
17. Operating Systems
Features
Filesystems, IO streams, memory management
Examples
Windows 7, Mac OSX, Ubuntu
Some consoles (OtherOS on PS3)
Giveaways
Developer documentation suggests you are
making “applications”
expressiveintelligencestudio UC Santa Cruz
18. Libraries
Features
Isolated technical solutions
Internal vocabulary of domain
“middleware” in enterprise marketspeak
Examples
ODE (physics), bodies/geoms/joints
OpenGL (graphics), matrices/primitives/textures
Fmod (sound)
Giveaways:
Used outside of just games
No reference to computational hardware
expressiveintelligencestudio UC Santa Cruz
19. Frameworks
Features
Integration of many libraries using common
vocabulary
Examples
DirectX
XNA
Delta3D (engine-ish)
SDL
PyGame
Ogre3D (library-ish)
Giveaways
Contains multiple libraries!
expressiveintelligencestudio UC Santa Cruz
20. Game Engines
Features
Support for genre-specific abstractions
Examples
Flixel (“a platformer engine”, modulo abuses)
Unity3D
Unreal Engine
Giveaways
Only for games, only for games in certain genres
You are writing one yourself after your second
game in a genre
expressiveintelligencestudio UC Santa Cruz
21. Makers (/ Construction Toys)
Features
Drag-and-drop GUI
Integrated level editor
Usable with mouse only
Examples
Game Maker
Game Salad
RPG Maker
FPS Maker
Giveaways
Marketed at non-programmers
Programming is optional / impossible
expressiveintelligencestudio UC Santa Cruz
22. Wizards
Features
Included content libraries
Coarse mechanics
Machine has initiative (it asks you questions)
Examples
Klik-and-play
Customizable games (insert your friends)
Giveaways
There is a clear set of steps to follow that always
results in a game.
expressiveintelligencestudio UC Santa Cruz
23. The Spectrum, revisited, again
Bare Metal
Operating Systems
Libraries
Frameworks You’ll reinvent these over and over.
Game Engines
Makers
Wizards
expressiveintelligencestudio UC Santa Cruz
24. What’s in your engine?
Technical Solutions
Languages
Practices
expressiveintelligencestudio UC Santa Cruz
25. Technical Solutions (library components)
Input
Network
Keyboard/mouse/joystick/gamepad/touchscreen Other CS topics:
Data structures
Event synchronization
State propagation and prediction
Protocols
Algorithms
Roles (client/server/peer/supernode/etc.)
Simulation
Physics
AI
Graphics Storage
Content Storage
Textures / models / levels / characters
Downloading/streaming from remote sources Databases
De/compression and caching
Modeling
Game modes Graphics
Finite state machines
Scene graphs
UI stacks AI
Output
Video
Audio
Force feedback
Platform Integration
Achievents / trophies / badges
Points
Presence and text/voice chat
Matchmaking
Metrics
expressiveintelligencestudio UC Santa Cruz
26. Languages (data and code, syntax and tools)
Base classes Other CS topics:
Game Object
Component Programming
Scripting languages languages
For designers Compilers
For developers
Data languages
Object vs. Level formats
Interop
Language specification
Tools
Compilers, assemblers,
packagers, decoders,
debuggers
expressiveintelligencestudio UC Santa Cruz
27. Practices (the human part)
How do you create Other CS topics:
and integrate art? Software engineering
How do you plan? HCI / Interfaces
How do you build?
How do you debug?
How do you
deploy/ship?
expressiveintelligencestudio UC Santa Cruz
28. What’s at stake?
A good engine hides the problems you don’t
care about and amplifies your ability to tackle
the ones you do care about.
A bad engine brings out new problems and
weighs you down as you go about your other
business.
Use/make the right tool for the job, even if it
doesn’t look like a traditional “game engine”.
expressiveintelligencestudio UC Santa Cruz
29. Thank you
BMOSLFGEMW :
A Spectrum of Game Engine
Architectures
Presenter:
Adam M. Smith
amsmith@soe.ucsc.edu
expressiveintelligencestudio UC Santa Cruz