a casual glance at the big picture for new game devs presented by jon davis
TRANSCRIPT
A PERUSAL OF GAME ENGINES
AND APIS
A Casual Glance at the Big Picture for New Game Devspresented 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
WindowsMac OS XLinuxconsolesmobilemulti-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 EnvironmentProgramming language, IDE supportAvailability of complementing APIsExtensibility (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 SystemHardware RequirementsRuntime 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 choppyInterface is responsiveArtificial intelligence and physics are responsive
Programming LanguagesMake 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 languagesLet 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 LanguagesMake 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 LanguagesMake 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 / Display2D / 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 enginesAPIs do not offer runtimesMultiple separate APIs for specific purposes
○ Audio, video, networking
The most prominent:DirectXSDL
Multi-Function API Suites DirectX
Direct3D – for [2D and] 3D video renderingDirectDraw (obsoleted and removed) – for 2D
renderingDirectSound / DirectSound 3D – for multi-channel
audioDirectPlay (deprecated) – for networkingDirectInput – for user interfacing (mouse,
keyboard, etc)DirectMusic – MIDI playback and synchronizationPopular 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 GraphicsDirect3D
○ 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 standardsOpenGL – No longer controlled by Silicon GraphicsglFX – API for OpenGL runtime effectsCOLLADA - XML schema for exchanging 3D assets
○ COLLADA FX – Extension of COLLADA to describe shader effects (using the OpenGL Shader Language)
OpenGL ES – Embedded 3D GraphicsOpenVG – Embedded hardware-accelerated vector
graphics (for tasks similar to those of Adobe Flash)OpenSL ES – Embedded Audio
Video
3D GraphicsCg (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 engineOpen-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
OGGMP3WMA
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
RelatedIRRKLANG
○ Multi-platform (Windows, Mac OS, Linux)○ Supports .NET○ WAV, MP3, OGG, MOD, XM, S3D, IT
IRR EDIT○ IRRLICHT world editor and radiosity light
generatorJirr
○ 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!
FeaturesOpenGL 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 InterfaceEmbedded 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 Engines1. 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 Engines1. 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: OblivionCivilization 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!