A Casual Glance at the Big Picture for New Game... presented by Jon Davis

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



C




+ Easy to write, highly portable, used heavily on mobile devices
- Performance hit, not intended for gaming, few APIs / engines available
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



+ Fast, close-to-the-metal, strongly supported, many libs, moderately portable
- Not object-oriented, difficult to learn, write, and maintain
C++


+ Blazing fast, direct-to-the-metal
- Insanely difficult to learn, few or no support libraries
+ 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 multichannel 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: Open-Source Graphics
Rendering Engine
 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



DirectSound / DirectSound 3D / XACT



MS Windows only
XNA audio content pipeline toolset with XACT AAT
FMOD / FMOD EX / FMOD Designer




Win32 (MS Windows)
Core Audio (Mac OS)
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
○

EAX
○

Multi-platform alternative to DirectSound
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*
○
○
○
○
○



nV Physics SDK
CMLabs' Vortex
Open Source







Half-Life 2
Crackdown (Xbox 360)
Company of Heroes
The Elder Scrolls IV: Oblivion
Halo 2
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






Mac OS





DirectX
OpenGL
FMOD
SDL
.. and of course several other lesser known APIs
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, advanced 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.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Torque Game Engine
Truevision3D SDK 6
3DGameStudio
C4 Engine
Unity
3Impact
DX Studio v2.1
Beyond Virtual
LawMaker Game Engine
Deep Creator
Most Reviewed (DevMaster.net):
Open Source Engines
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
OGRE
Irrlicht
Crystal Space
jME (jMonkey Engine)
Panda3D
Reality Factory
The Nebula Device 2
RealmForge
Blender Game Engine
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!