Mark Nelson What are game engines? Fall 2013

Click here to load reader

  • date post

  • Category


  • view

  • download


Embed Size (px)

Transcript of Mark Nelson What are game engines? Fall 2013

  • Mark Nelson

    What are game engines?Fall 2013

  • 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.)