Game EnginesGame Engines
Non-game specific technologyGame:
– Engine– Assets (models, animations, sounds, AI, and
physics)– Code (AI, Scripting, etc.)
Game Engines:Game Engines: Rendering PipelineRendering Pipeline
1.1. AApplication/Scenepplication/Scene Scene database update/traversalScene database update/traversal Object/Camera Movement/AnimationObject/Camera Movement/Animation Visibility/LOD/CullingVisibility/LOD/Culling
2.2. GeometryGeometry Transforms: Model/World/ViewTransforms: Model/World/View Viewport & Backface CullingViewport & Backface Culling
3.3. TrianglesTriangles Scan-line conversionScan-line conversion
4.4. RasterizationRasterization ShadingShading Texturing/Fog/AlphaTexturing/Fog/Alpha DepthDepth
Game Engines:Game Engines: Shading Shading
FlatFlat Vertex (Gouraud)Vertex (Gouraud) Pixel (Phong)Pixel (Phong)
Light MapsLight Maps Programmable (Vertex & Pixel Shaders)Programmable (Vertex & Pixel Shaders)
Game Engines:Game Engines: Memory Management Memory Management
Cache ThrashingCache Thrashing– Group Primitives by Textures?Group Primitives by Textures?– Hardware T&LHardware T&L– CompressionCompression
Card MemoryCard Memory– Why isn’t 32 bit color (16.7M) enough?Why isn’t 32 bit color (16.7M) enough?– 1280x1024x12 (Front,Back,Z)= 15MB1280x1024x12 (Front,Back,Z)= 15MB
Game EnginesGame Engines
3D Engine3D LanguagesAuthoring SystemSpecialized Authoring (first or third
person shooters)
Game EnginesGame Engines
3D Engine– library of 3D graphics functions. – free, $50-$100 up to $250,000 for commercial use. – Require programming with an external delevopment
system, normally Microsoft Visual C++. – maximum of flexibility– maximum of experience, work and time required.
Game EnginesGame Engines3D Languages
– DirectX/OpenGL interface with a scripting language
– especially designed for 3D games– Simpler than 'real' programming. – Many based on Basic
easy to learn not very well suited for large or complex games
– Alternatives: C- or Javascript-based languages.
Game EnginesGame Engines
Authoring System– 3D engine and a visual – very fast 'clicking together' a game prototype.– only simple games can be created without any
programming.– scripting language for programming or
customizing the game.
Game EnginesGame Engines
Specialized FPS (first or third person shooters) – offer no or limited scripting. – good alternative if you don't want to
script and are not interested in publishing a game commercially.
Engine ConsiderationsEngine Considerations Platforms Performance Data Rendering/Features Animation Physics & Environment Scripting Authoring I/O Save/Load
PerformancePerformanceOcclusion Culling
– Cell Based: BSP tree, Portal, Octree– Other: Potentially Visible Set, HOM
LODAdaptive NURBS/PatchesPolygon ReductionTerrain Primitives
Data Import/ExportData Import/Export 3D file formats
– X, 3DS, MDL, MD2, MAP, WAD Texture/Image Formats Models/Animations:
– Maya, 3D Studio MAX Levels
– WorldcraftT or MilkshapeT Plugins
RenderingRenderingFeaturesFeatures
OpenGL vs. DirectXOpenGL vs. DirectX– DX6-9DX6-9– OpenGL1.1-1.5,2.0OpenGL1.1-1.5,2.0
Shadow Maps (Lightmaps)Shadow Maps (Lightmaps) ShadersShaders Dynamic ShadowsDynamic Shadows MIP Maps/Multi Maps/ Bump MappingMIP Maps/Multi Maps/ Bump Mapping EffectsEffects
AnimationAnimation Keyframe Bones (Skinning) Facial Animation Vertex Animation Inverse Kinematics (IK) Dynamics High-level Authoring
Physics & Physical Physics & Physical EnvironmentEnvironment
Visibility Collision Detection Terrain Following Gravity Physics
– Rigid & non-rigid bodies
ScriptingScripting
• Scripting languages add logic for controlling actors or objects
• Languages:• Javascript• Luo -http://www.lua.org/• Python• Basic• Custom:UnrealScript, C-Script, etc.
• Script Compilers for performance
Save/Load SystemSave/Load System
• allows the end user to save a complete game state.
• 'freezes' all running scripts and all objects and variables of the game and writes them into a file
• Without such a system:• a script has to be written which stores the
state of every variable and object and the position within every script function
Authoring/EditingAuthoring/Editing
• Level Editor• Model Editor• Script Editor• Terrain• Logic
Sample EnginesSample Engines• Specialized Authoring (FPS, 3PS)Specialized Authoring (FPS, 3PS)
• 3DGM, RF3DGM, RF• AuthoringAuthoring
• Quest, Radish, Virtools, Gamestudio/A6, Alice, Adobe Quest, Radish, Virtools, Gamestudio/A6, Alice, Adobe Atmosphere, BlenderAtmosphere, Blender
• 3D Languages3D Languages• Jamagic, DarkBASIC, BlitzJamagic, DarkBASIC, Blitz
• 3D Engines3D Engines• TV3D, Irrlicht, Torque, Nebula, Crystal, Cipher, PR, Jupiter, TV3D, Irrlicht, Torque, Nebula, Crystal, Cipher, PR, Jupiter,
Quake3, Unreal2Quake3, Unreal2• Standards-based Engines & Tools (VRML/X3D)Standards-based Engines & Tools (VRML/X3D)
• Internet Scene Assembler, Cortona, Blaxxun,OpenWorlds, Internet Scene Assembler, Cortona, Blaxxun,OpenWorlds, VizX3DVizX3D
Game Engine ResourcesGame Engine Resources
http://www.devmaster.net/engineshttp://www.pcplus.co.uk/reviews/ (->Software->Development and ->Software->Graphics) http://directory.google.com/Top/Computers/Pr
ogramming/Games/3D/ http://cg.cs.tu-berlin.de/~ki/engines.html http://fraktali.849pm.com/graphengines.html http://www.flipcode.com/links/