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
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
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
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
What’s a game engine? (second attempt)
 A comprehensive game building environment
  with specialized languages, libraries, and
  tools.

 Example: Unity3D




expressiveintelligencestudio                   UC Santa Cruz
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
The Spectrum
    Bare Metal
    Operating Systems
    Libraries
    Frameworks
    Game Engines
    Makers
    Wizards



expressiveintelligencestudio   UC Santa Cruz
Gameduino (bare metal)




expressiveintelligencestudio   UC Santa Cruz
Ubuntu (OS)




expressiveintelligencestudio   UC Santa Cruz
ODE (library)




expressiveintelligencestudio   UC Santa Cruz
PyGame (framework)




expressiveintelligencestudio   UC Santa Cruz
Flixel (engine)




expressiveintelligencestudio   UC Santa Cruz
Game Maker (maker)




expressiveintelligencestudio   UC Santa Cruz
Klik-and-Play (wizard)




expressiveintelligencestudio   UC Santa Cruz
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
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
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
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
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
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
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
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
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
What’s in your engine?
 Technical Solutions
 Languages
 Practices




expressiveintelligencestudio   UC Santa Cruz
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
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
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
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
Thank you




 BMOSLFGEMW :
  A Spectrum of Game Engine
  Architectures

 Presenter:
       Adam M. Smith
       amsmith@soe.ucsc.edu

expressiveintelligencestudio   UC Santa Cruz

BMOSLFGEMW: A Spectrum of Game Engine Architectures

  • 1.
    BMOSLFGEMW: A Spectrum ofGame Engine Architectures Adam M. Smith expressiveintelligencestudio UC Santa Cruz amsmith@soe.ucsc.edu CMPS 164 – Game Engines March 30, 2010
  • 2.
    What I’m aboutto 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 gameengine? (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 gameengine? (second attempt)  A comprehensive game building environment with specialized languages, libraries, and tools.  Example: Unity3D expressiveintelligencestudio UC Santa Cruz
  • 6.
    What’s a gameengine? (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
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 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 (/ ConstructionToys)  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 yourengine?  Technical Solutions  Languages  Practices expressiveintelligencestudio UC Santa Cruz
  • 25.
    Technical Solutions (librarycomponents)  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 andcode, 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 humanpart)  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