Mark Nelson mjas@itu.dk What are game engines? Fall 2013
date post
28-Dec-2015Category
Documents
view
213download
0
Embed Size (px)
Transcript of Mark Nelson mjas@itu.dk What are game engines? Fall 2013
Mark Nelson mjas@itu.dk
What are game engines?Fall 2013 www.itu.dk
Whats a game engine? Try #1
Real-time graphics engine?Maybe w/ physics?
Possible featuresRealistic waterShadowsReflectionsDestructible terrain
Whats a game engine? Try #2
Integrated game builder?
Possible featuresIDELevel editor3d modelingAsset pipelineDebuggingScripting
Engines are lots of things
LibrariesFrameworksCollaboration/integration architecturesGeneric game shellsTools
No engine
In the olden days, you might code a game by:Writing codethat implementsthe game
Engine as library
Its sometimes nice to reuse code
Collision detectionPhysicsSprite blittingAI
Engine as library
Engine as library
Bottom-up game-engine development
Write a game, then another oneAn engine is whatever you can reuse
Can you package that up into a library (or middleware)?
Engine as library
Engine as way of outsourcing complex but modular stuff
What do you need that is hard to implement, but could be plugged in if you had it?
AI, fancy graphics, advanced simulations, advanced physics
Engine as framework
Libraries let us reuse stuff we call out to
Can we reuse some of the structure, too?Check inputUpdate positionsCalculate dynamicsRedraw screenManage memorySync network state
Engine as library v. framework
Defining feature of frameworks is inversion of controlAnd, theyre opinionated about it
Your gameLibrary
FrameworkYour game
Engine as framework
Defines classes of stuff, and you plug in the specifics
Sprites, objects, levels, events, behaviors
Customize by extending or overriding classes
Instead of bottom-up abstraction, pattern-matching abstraction
In-class exercise
You are a 1-person programming team wanting to make a small-budget game. Do you code from scratch? Use an existing engine? If it depends, what does it depend on?
You are a 50-person team with a large budget. What about now?
[take 5 minutes to discuss]
Engine as collaboration/integration arch.
A lot of people work on a modern gameThey produce a lot of different stuff
Level designerDialog-tree writer3d modelerGraphics programmerAI programmerNetwork programmerNPC behavior scripter
Engine as collaboration/integration arch.
How do we plug all this stuff together?
An engine architecture provides modularity and interfaces
Asset pipelinesRequired functionalityDependenciesDivision of responsibilities
Engine as collaboration/integration arch.
One big boundary: code v. non-code
Architecturally: code v. data
Socially: programmers v. non-programmers
(Lots of other boundaries and interfaces.)
Engine as generic game
Codification of genre conventions
A Zelda-style engineA platformer engine
Everything but the game
A very opinionated framework
Final Fantasy engine
Quake 3 engine
Platformer engine
Civ 5 engine ?
Spectrum of engine genericity
Many engines are a mix of engine and game
Cleaner separation in more established genres
Cleaner separation from game content than dynamics
Engine as game-development tool
Unity as a game-development environmentLibrary, framework, editor, tools
Most engines have an associated toolchainSome 3rd party, e.g. MayaSome custom, e.g. level editor
Spectrum of wizardryRPG Builder, Game MakerUnityUDK
Exercise for next week
Choose an existing game and think about what engine features would make it easy to program similar gamesAn existing engine?Something new?Was the game already built on an engine (if known)?How generalizable is the game?
(Ill ask in class next week, but you wont be graded or need to hand the exercise in.)