1 / 48

A Perusal of Game Engines and APIs

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

sandra_john
Télécharger la présentation

A Perusal of Game Engines and APIs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A Casual Glance at the Big Picture for New Game Devs presented by Jon Davis A Perusal of Game Engines and APIs

  2. 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

  3. 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

  4. 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

  5. Dimensions To Evaluate (To Name A Few) • Development Environment • Functional Requirements • Install Base Environment • Performance Requirements

  6. 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

  7. 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

  8. Dimensions To Evaluate (To Name A Few) • Development Environment • Functional Requirements • Install Base Environment • Operating System • Hardware Requirements • Runtime Prerequisites • Performance Requirements

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

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

  16. 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

  17. 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

  18. 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

  19. 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

  20. Video • 3D Graphics • Cg (nVidia) • Proprietary • Not intended for game audiences • R.I.P. • Glide • QuickDraw 3D

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

  29. 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 • ???

  30. 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

  31. Game Engines

  32. 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

  33. 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

  34. 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)

  35. 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

  36. Game Engines: Crystal Space 3D • Cross-platform SDK primarily targeting Linux • Open source • Requires MinGW / Cygwin when compiling on Windows

  37. 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

  38. 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!

  39. 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

  40. 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

  41. 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

  42. 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]

  43. 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

  44. 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

  45. 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

  46. 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

  47. 3D RPG / MMORPG Engines • Bigworld Technology • Stargate Worlds • Gamebryo • The Elder Scrolls IV: Oblivion • Civilization IV • HeroEngine • Kaneva Game Platform • Multiverse Network • RealmCrafter

  48. Remember … Choosing a path is extremely important, but once the path is chosen, the other paths DON'T MATTER. Get your game done!

More Related