A Perusal of Game Engines and APIs - Jon Davis

numbergrandioseInternet and Web Development

Feb 5, 2013 (4 years and 4 months ago)

229 views

A Casual Glance at the Big Picture for New Game
Devs

presented by Jon Davis

Objectives

Take a quick glance at the several prominent
game engines and APIs


Application
-
specific APIs such as graphics and
sound


Broad solution engines


On different platforms


Windows


Mac OS X


Linux


consoles


mobile


multi
-
platform

Observations


Game development involves a specialized
skill set


Game tools have traditionally been as
fragmented as their hardware / OS host
environments


… But less so now than ever!


There
seem

to be more game engines than
games!


On the other hand, there are very few polished
game engines capable of producing high quality
games

Selecting A Technology


Technology choice precedes initial
development by defining its basic
essence


Technology choice provides functional
options and imposes limits on others


Technology choice defines user
prerequisites


Technology choice contributes to
developer experience and/or bias

Dimensions To Evaluate

(To Name A Few)


Development Environment


Functional Requirements


Install Base Environment


Performance Requirements

Dimensions To Evaluate

(To Name A Few)


Development Environment


Programming language, IDE support


Availability of complementing APIs


Extensibility (plug
-
ins, scripts)


Supporting tools (level designer, mesh
converters / importers, audio library
management, etc.)


Functional Requirements


Install Base Environment


Performance Requirements

Dimensions To Evaluate

(To Name A Few)


Development Environment


Functional Requirements


2D
scroller
? 3D MMORPG?


Simple puzzle? Heavy 3D physics?


Basic bleeps and
bloops
? Advanced 3D
multi
-
track audio?


Install Base Environment


Performance Requirements

Dimensions To Evaluate

(To Name A Few)


Development Environment


Functional Requirements


Install Base Environment


Operating System


Hardware Requirements


Runtime Prerequisites


Performance Requirements

Dimensions To Evaluate

(To Name A Few)


Development Environment


Functional Requirements


Install Base Environment


Performance Requirements


Renderer is playable and convincing


Minimum 30 FPS (rendered Frames per Second)


Target at least 60 FPS


Audio is convincing, immersive, and not choppy


Interface is responsive


Artificial intelligence and physics are responsive

Programming Languages

Make yourself at home!


Find the proper balance of functionality,
performance and productivity


Languages often infer core language
libraries that can be used as support APIs


It’s okay (and, in large systems, ideal) to
layer low
-
level languages with high
-
level
scripting languages


Let the language fit the task!


Assembly / C / C++ for HAL automation and
intensive computing tasks (physics, et al)


Scripting language for general game logic

Programming Languages

Make yourself at home!


Assembly


+ Blazing fast, direct
-
to
-
the
-
metal


-

Insanely difficult to learn, few or no support libraries


C


+ Fast, close
-
to
-
the
-
metal, strongly supported, many
libs
, moderately portable


-

Not object
-
oriented, difficult to learn, write, and maintain


C++


+ Object
-
oriented, fast, strongly supported, popular, owns control of most APIs and
libs
, mostly compatible with C, moderately portable


-

Difficult to learn, write, and maintain


Java


+ Easy to write, highly portable, used heavily on mobile devices


-

Performance hit, not intended for gaming, few APIs / engines available


C#


+ Easy to write, moderately portable (Xbox 360, Mono), can make C calls easily


-

Some performance hit due to managed memory and IL
JIT’ing


Used by: XNA,
Irrlicht
, Axiom


VB.NET


+ Easy to read, popular with beginner and corporate programmers seeking
distractions


-

Bad general reputation for serious developers, no support with XNA

Programming Languages

Make yourself at home!


Scripting languages (to name a few)


Python


+ Popular


-

Integration hassles


Compiled variant used in EVE Online


UnrealScript


+ Good object
-
oriented language on an excellent game
engine


-

Proprietary to the Unreal Engine


Used in all Unreal Engine based games


Lua


+ Designed specifically to be easy to integrate to C
based runtimes; fast becoming popular


-

Relatively new, obscure, and lightweight in feature set

Typical Game Engine Components


Core


System runtime for controlling threads, loop(s), basic
math functions, and general runtime dependencies


APIs

do not typically implement runtime cores


Game engines
often implement runtime cores


Video / Display


2D / 3D rendering


Physics Engine


Audio and Music


(not quite the same thing)


Input / Interface


Networking

Multi
-
Function API Suites


Not to be confused with game engines


APIs do not offer runtimes


Multiple separate APIs for specific purposes


Audio, video, networking


The most prominent:


DirectX


SDL


Multi
-
Function API Suites


DirectX


Direct3D


for [2D and] 3D video rendering


DirectDraw (obsoleted and removed)


for 2D
rendering


DirectSound / DirectSound 3D


for multi
-
channel audio


DirectPlay (deprecated)


for networking


DirectInput


for user interfacing (mouse,
keyboard, etc)


DirectMusic


MIDI playback and
synchronization


Popular games:


… Too many to mention (Nearly every successful
commercial game for Windows?)

Multi
-
Function API Suites


SDL


Über multi
-
platform .. but considered old hat unless
complimented with other APIs such as OpenGL


Supports audio, keyboard, mouse, joystick, and 2D video
framebuffer


Natively runs with C / C++, with bindings to
Ada
, C#,
Eiffel,
Erlang
, Euphoria, Guile, Haskell, Java, Lisp,
Lua
,
ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python,
Ruby, and Smalltalk


Runs on Linux, Windows, Windows CE, BeOS,
MacOS
,
Mac OS X, FreeBSD,
NetBSD
,
OpenBSD
, BSD/OS,
Solaris, IRIX, and QNX


Unofficial:
AmigaOS
, Dreamcast, Atari, AIX, OSF/Tru64,
RISC OS,
SymbianOS
, and OS/2


Popular games (to name a couple)


Neverwinter

Nights (2002)


Second Life

Video


2D

Graphics


Direct3D


DirectDraw is long gone


Windows only


Basically “paint” onto a camera
-
facing 2D plane


OpenGL


Multi
-
platform


Same as Direct3D, render onto a 2D plane


SDL (Simple DirectMedia Layer)


Über multi
-
platform

Video


3D Graphics


Direct3D


Windows only; Windows standard


Current hardware standard (esp. with DirectX 10)


Extremely fast and highly programmable


DirectX 8.x


introduced programmable
shaders


Shader Model 1.1
-
1.4


DirectX 9.x


Shader Model 2.0 / 3.0


current standard


used on Xbox 360


DirectX 10 Vista only


Fully programmable pipeline; Shader Model 4.0


Built on the new video card driver model in Vista


OpenGL


Easy to learn


Highly multi
-
platform, particularly with OpenGL ES

Speaking of OpenGL …


Khronos

Group


Working group for several
important technologies and standards


OpenGL


No longer controlled by Silicon Graphics


glFX



API for OpenGL runtime effects


COLLADA
-

XML schema for exchanging 3D assets


COLLADA FX


Extension of COLLADA to describe
shader effects (using the OpenGL Shader Language)


OpenGL ES


Embedded 3D Graphics


OpenVG



Embedded hardware
-
accelerated vector
graphics (for tasks similar to those of Adobe Flash)


OpenSL

ES


Embedded Audio


Video


3D Graphics


Cg (
nVidia
)


Proprietary


Not intended for game audiences


R.I.P.


Glide


QuickDraw 3D

Video Middleware


OGRE:
O
pen
-
Source
G
raphics
R
endering
E
ngine


Scene
-
oriented 3D engine in C++


Considered a rendering engine (built on
top of Direct3D / OpenGL), not a game
engine


Axiom


C# port of the OGRE rendering engine


Open
-
source, cross
-
platform 3D graphics
rendering engine for .NET and Mono

Video Middleware: Truevision 3D


A commercial rendering SDK


Built on C++ but supports multiple languages such
as C#, VB.NET, Delphi


Easy to use; clean code


Features


HLSL Shader support (to Shader Model 3.0)


Landscape and Terrain System


Static and animated meshes and
minimeshes


Material and lighting system


Particle systems


GPGPU (General Processing on the GPU)


Integrated Newtonian physics engine


Post
-
processing effects

Video Middleware:


C++ library with Python bindings


Designed for short learning curve and
rapid development


Free software license


Platforms: Windows, Linux


Used by Disney for
Toontown

Audio


Basic subsystems


Win32 (MS Windows)


Core Audio (Mac OS)


DirectSound / DirectSound 3D / XACT


MS Windows only


XNA audio content pipeline toolset with XACT AAT


FMOD / FMOD EX / FMOD Designer


Platform
-
optimized multi
-
platform (Windows [32/64bit], Mac [PPC/x86], Linux
[32/64bit], Sony PS2/PS3/P3P, MS Xbox/Xbox360, Nintendo GC/
Wii
) audio
subsystem


DSP effect suite and VST support


Bioshock
, Call of Duty 4,
Starcraft

II,
WoW
,
Crysis
, many more


Creative Technologies


OpenAL


Multi
-
platform alternative to DirectSound


EAX


3D environmental audio effects (echo, reverb, chorus, etc)


SDL


Multi
-
platform multimedia API

Music


Not typically multi
-
channel (but for 2x) unless
using a tracker music subsystem


Typically large compressed file requirements


OGG


MP3


WMA


Consider Digital Rights Management (DRM)


Interesting example:
DirectSong


MIDI and tracked music are obsolete


.. but still fine for embedded devices


FMOD should do fine for OGG

Networking


Basic TCP / UDP easy to come by


Advanced networking options often stacked in feature
-
complete
game engines


DirectPlay


Deprecated; use XNA?


Portions already removed:


DirectPlay Voice


DirectPlay NAT Helper Service


Microsoft XNA Framework v2 (not available yet)


HawkNL


Free, open
-
source, game
-
oriented API, GNU license


Based on Berkeley/UNIX sockets and Winsock


Torque’s
openTNL

(
GarageGames
)


Focuses on versatility; cross
-
platform


RakNet


UDP
-
centric; cross
-
platform; high performance


SDL

Physics


Commercial


Havok
*


Half
-
Life 2


Crackdown (Xbox 360)


Company of Heroes


The Elder Scrolls IV: Oblivion


Halo 2


nV

Physics SDK


CMLabs
' Vortex


Open Source


Open Dynamics Engine (ODE)*


Bullet


OPAL


PAL


Tokamak


Farseer

(2D physics for XNA)


Freeware (closed source)


AGEIA
PhysX
*


Newton Game Dynamics


Simple Physics Engine


True Axis

Probably Typical API Assumptions

from the OS Perspective


MS Windows


DirectX


OpenGL


FMOD


SDL


.. and of course several other lesser known APIs


Mac OS


Cocoa (object
-
oriented OS API)


Carbon (C based OS API)


Core Audio


SDL


Linux


OpenGL


SDL


Many open source game engines

Probably Typical API Assumptions

from the OS Perspective


Consoles


Xbox 360


Homebrew:


C#


XNA


Commercial:


C++


DirectX 9


PIX (performance testing)


Xbox Live networking APIs


Microsoft certification tools


Nintendo
Wii


???


Sony
Playstation

3


???

Probably Typical API Assumptions

from the OS Perspective


Handheld Homebrew


devKitPro


Systems:


GameBoy

Advance


GP32


Playstation

Portable


GameCube


C++ based


freely available


J2ME


cell phones


Java


freely available


In
-
Fusio

ExEn

("Execution Engine")


cell phones


Java


freely available

Game Engines

Game Engines: Microsoft XNA


Complete game engine / runtime


Implemented in C#


Built upon DirectX


One
-
click deployment to Windows


and to Xbox 360!


Real
-
time debugging for Windows


and for Xbox 360 over the LAN!


All basic game functions fully implemented and abstracted


Basic SDK supporting Windows is completely free


Extended feature set, support, and Xbox integration requires a fee


$49 / 4 mo.


$99 / 12 mo.


Failure points
in current (v1) release only
:


No Xbox Live integration … no networking at all, actually


Xbox 360: Very slow floating point calculations


No support for Visual Studio SKUs except only Visual C# 2005
Express
Edition

Game Engines:
Irrlicht


Built with C++


with managed (C#) wrappers that are portable to Linux using Mono with
the replacement Irrlicht.NET CP (deprecates previous C# wrappers)


Multi
-
platform


Windows 95, 98, NT, 2000, XP


Linux


MacOS


Provides for video rendering:


Direct3D


OpenGL


Two platform and driver independent fast software renderers included


They have different properties (speed vs. quality) and feature everything
needed: perspective correct texture mapping, bilinear filtering, sub pixel
correctness …


Technically a rendering engine, not a game engine; however,
related / complimentary tools exist that do not relate to the
rendering engine

Game Engines:
Irrlicht


Features


Huge built
-
in and extensible material library with vertex and pixel shader
support


Seamless indoor and outdoor mixing through highly customizable scene
management


Character animation system with skeletal and morph target animation


Particle effects, billboards, light maps, environment mapping, stencil
buffer shadows, and lots of other special effects


z
-
buffer, gouraud shading, alpha
-
blending and transparency, fast 2D
drawing and more.


Powerful, customizable and easy to use 2D GUI System with Buttons,
Lists, Edit boxes, ..


2D drawing functions like alpha blending, color key based blitting, font
drawing and mixing 3D with 2D graphics


Direct import of common mesh file formats: Maya (.
obj
), 3DStudio (.3ds),
COLLADA (.
dae
),
DeleD

(.
dmf
), Milkshape (.ms3d), Quake 3 levels
(.
bsp
), Quake2 models (.md2), Microsoft DirectX (.X)


Direct import of Textures: Windows Bitmap (.bmp), Portable Network
Graphics (.
png
), Adobe Photoshop (.
psd
), JPEG File Interchange Format
(.jpg), Truevision Targa (.
tga
), ZSoft Paintbrush (.
pcx
)

Game Engines:
Irrlicht


Related


IRRKLANG


Multi
-
platform (Windows, Mac OS, Linux)


Supports .NET


WAV, MP3, OGG, MOD, XM, S3D, IT


IRR EDIT


IRRLICHT world editor and
radiosity

light
generator


Jirr


Java binding for IRRLICHT

Game Engines: Crystal Space 3D


Cross
-
platform SDK primarily targeting
Linux


Open source


Requires
MinGW

/
Cygwin

when
compiling on Windows


Game Engines: Torque


Complete soup
-
to
-
nuts cross
-
platform 3D
game engine with landscape/terrain, audio,
networking, and more


Developed for rapid indie game
development


$100 one
-
time registration fee


Built on the Tribes 2 codebase


.. and expanded since then


Commercial publishing options available
for finished games


Excellent community

Game Engines: 3D Game Studio



Complete

commercial game engine for Windows


Features


Rendering engine


OpenGL / Direct3D


Particle

& effect engine


Physics

& collision engine


2D

engine


Sound

engine


Networking


Including

MMOG support


Complementing

C
-
Lite


Allows

for building a complete game without knowing
C++ (or any common language) at all!

Game Engines:


Commercial 3D game engine


Lightweight,

even has a web player


.. but can produce serious games as
well


Focus

is on ease of use, rapid
development


Platforms:


Mac OS X


Windows 2000/XP/Vista

Game Engines: C4 Engine


Commercial game engine


Claims to be “
one of the most technologically
advanced 3D game engines available today for
the Windows and
MacOS

X platforms”


Platforms
:

Windows, Mac, PS3 (Xbox 360 coming)


Features


Rendering (
Full
-
scene

dynamic lighting and
shadows, a
dvanced

per
-
pixel shading
capabilities, other special effects)


Audio


Networking


Collada


Game Engines: Blitz3D/
BlitzMax


BlitzMax


Commercial 2D game SDK ($80)


Compiler, modules, 2D graphics, IDE, debugger, sample code,
documentation


Cross
-
platform


Blitz3D SDK


Commercial 3D game SDK ($100)


Windows only


Functions


Renderer


OpenGL / Direct3D


Audio


Input


Static libraries and interfaces for C, C++, C#,
BlitzMax

and
PureBasic


Dynamic library for shipping with your games


Installation guides and comprehensive API documentation


Game Engines:
jMonkey

Engine


A complete game engine for Java
programmers!


Features


OpenGL renderer


Geometry bounding, visual effects, texture system,
multi
-
format model loading, shape primitives,
camera system, terrain, billboards, et al


Sound


using FMOD and
OpenAL


User Interface


Embedded integration


Java applet, AWT/Swing, SWT [through user
code]



Game Engine
Mods


Easy and cheap (but not free) to create
complete games by modifying existing
games


Licensing
mods

as commercial games is
legally impossible (a commercial engine
license or complete buy
-
out is required)


Few games are fully exploitable for
mods

A Few Popular
Moddable

Game Engines


Unreal Engine (Unreal, Unreal Tournament series)


Game bundled with
UnrealED
,
UnrealScript


Commercial license available (but expensive)


Used with several games


Rune


Deus Ex


Gears Of War


many others


Quake Engine


Used with many games


Half
-
Life 2 / Source Engine


Very thorough and complete mod toolset


Modern / current feature set

Most Reviewed (DevMaster.net):

Commercial Engines

1.
Torque Game Engine

2.
Truevision3D SDK 6

3.
3DGameStudio

4.
C4 Engine

5.
Unity

6.
3Impact

7.
DX Studio v2.1

8.
Beyond Virtual

9.
LawMaker

Game Engine

10.
Deep Creator

Most Reviewed (DevMaster.net):

Open Source Engines

1.
OGRE

2.
Irrlicht


3.
Crystal Space

4.
jME

(
jMonkey

Engine)

5.
Panda3D

6.
Reality Factory

7.
The Nebula Device 2

8.
RealmForge


9.
Blender Game Engine

10.
OpenSceneGraph

3D RPG / MMORPG Engines


Bigworld

Technology


Stargate

Worlds


Gamebryo



The Elder Scrolls IV: Oblivion


Civilization IV


HeroEngine



Kaneva

Game Platform


Multiverse

Network


RealmCrafter

Remember …

Choosing a path is extremely important,
but once the path is chosen, the other
paths DON'T MATTER.


Get your game done!