a casual glance at the big picture for new game devs presented by jon davis

48
A PERUSAL OF GAME ENGINES AND APIS A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

Upload: mikel-scrogham

Post on 14-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

A PERUSAL OF GAME ENGINES

AND APIS

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

Page 2: 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

WindowsMac OS XLinuxconsolesmobilemulti-platform

Page 3: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 4: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 5: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

Dimensions To Evaluate (To Name A Few)

Development Environment Functional Requirements Install Base Environment Performance Requirements

Page 6: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 7: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 8: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

Dimensions To Evaluate (To Name A Few)

Development Environment Functional Requirements Install Base Environment

Operating SystemHardware RequirementsRuntime Prerequisites

Performance Requirements

Page 9: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 10: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 11: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 12: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 13: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 14: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 15: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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?)

Page 16: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 17: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 18: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 19: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 20: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

Video

3D GraphicsCg (nVidia)

○ Proprietary○ Not intended for game audiences

R.I.P.○ Glide○ QuickDraw 3D

Page 21: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 22: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 23: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 24: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 25: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 26: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 27: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 28: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 29: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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○ ???

Page 30: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 31: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

Game Engines

Page 32: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 33: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 34: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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)

Page 35: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 36: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

Game Engines: Crystal Space 3D Cross-platform SDK primarily targeting

Linux Open source Requires MinGW / Cygwin when

compiling on Windows

Page 37: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 38: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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!

Page 39: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 40: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 41: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 42: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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]

Page 43: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 44: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 45: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 46: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

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

Page 47: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

3D RPG / MMORPG Engines

Bigworld Technology Stargate Worlds

Gamebryo The Elder Scrolls IV: OblivionCivilization IV

HeroEngine Kaneva Game Platform Multiverse Network RealmCrafter

Page 48: A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis

Remember …

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

Get your game done!