490 likes | 694 Views
A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis. A Perusal of Game Engines and APIs. 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
E N D
A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis A Perusal of Game Engines and APIs
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 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 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 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 / 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: 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 • 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-FusioExEn ("Execution Engine") • cell phones • Java • freely available
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 • 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 • 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!