GMNG 4312 –Game Engines Unit 01: Introduction Alireza Tavakkoli, Ph.D.
Objectives • Learn about game development • Game Engine Terminologies • Game Genres • Game Engine Survey
Introduction • A Long Time Ago Ubiquitous Game Engines!
A Game Engine? • So what is a Game Engine? • Reusable Software • Easy to manipulate • Multi-platform • platform independence • Examples?
Basic Game Engine Components • Core Components • Rendering Engine • Collision and Physics engine • Animation System • Audio System • Game World Object Modeler • Artificial Intelligence System • Etc.
What We Cover • Overall Theories • Architecture of industrial grade engines • Game development team organizations • Major game engine sub-systems • Genre-dependent vs. Genre-agnostic systems • Game and Engine boundaries • Practical Systems • Unreal • OGRE • Unity • Tools and Techniques • Logical vs. Physical software architecture • Revision systems and software development environment
Engineers • Software design and implementation • Runtime Programmers • Engine and Game Itself • Tools Programmers • Offline tools • Example? • Sub-engine system Engineers • AI/Rendering/Physics/etc. • Gameplay • Scripting and gameplay programmers • Lead Engineers • Technical Director (CD) and Chief Technology Officer (CTO)
Artists • “Content is king.” • Concept artists • Technical artists • 3D Modelers • Texture artists • Lighting artists • Animation • Animators • Motion Capture actors • Audio • Sound designers • Voice actors • Composers
Game Designers • Design interactive portion of the player’s experience. • Gameplay • Senior (Macro-level) designers • Overall feel of the game • Story chapter seq. goals and objectives • Micro-level designers • Each level individually • Geometry • Keypoints and logistics • Etc. • Writers (some can afford it!)
Producers and Other Staff • Producers • Manage the scheduling and HR • Liaisons for financing, legal, marketing, etc. • Other Staff • IT • Marketing • Etc. • Publishers and Studios • Marketing and manufacture of the game title.
What is a Game? • So what is a game? • General Terminology • Monopoly, chess, sports, etc. • In Academia • Game theory • In Digital • 3D images in virtual worlds • Even 2D older versions! • RaphKoster: • ”A game is an interactive experience that provides the player with an increasingly challenging sequence of patterns which he or she learns and eventually masters”.
Video Games as Soft Real-Time Simulations • Soft Real-Time Interactive Agent-based Computer Simulation • Imaginary worlds • Approximation and Simplification of Complex Mathematics • SIMULATION! • Responsive • Use human/player’s input and react to it • INTERACTIVE! • One/more Opponents • Each object is potentially dynamic • AGENT_BASED! • Deadlines • Each action must happen at the time they are supposed to! • SOFT REAL-TIME! • Missed deadlines won’t be catastrophic!
Mathematical Models and Game Loop • Analytical vs. Numerical Models • Analytical • y(t) = ½ g t2+v0t+y0 • Numerical • y(t+Dt)=F(y(t),y’(t),y”(t)) • Can anyone see the difference between these two models? • In Games • Use Numerical models Each game state from its previous state(s). • Game Loop!
What is a Game Engine • Doom First Person Shooter 1st Game Engine • Separation between • core software component • rendering, collision detection system • the art assets • Models, objects, gameplay, etc. • Value? • Reusability! • Modability! • Licensing! • Lines between game and engine is often blurry!
What Differentiates Game Engine from Game • Data-driven Architecture • No specific game rules • No object specific rendering • Extensible • Efficiency vs. Extensibility • Trade-offs! • Optimization vs. generalization! Customize for Similar Games Customize for Similar Game Genre Customize for Any Game Genre Just for 1 Game PacMan Hydro Thunder Engine Quake III Unreal Probably Impossible
Engine Difference Across Genres • Similar in All Game Genre • User input • 3D mesh rendering • Powerful audio system • Heads-Up Display (UHD), etc. • Example of a Soft Engine (UNREAL) • First person shooter Unreal Tournament • 3rd person shooter Gears of War • Action-adventure Grimm • Racing Game Speed Star
Game Genres • First Person Shooters (FPS) • Quake, Unreal Tournament, Half-Life, Counter-Strike, Call of Duty.
Game Genres (continued) • First Person Shooters (FPS) • Slow on-foot roaming • Modern movements • On-foot Locomotion, driving, flying, etc. • Small view level (potentially large) • Possibly vast outdoors as well • Most technologically challenging! • Why? • Immersion in virtual reality! • Technologies: • Efficient 3D rendering • Responsive camera control • High fidelity animation • Hand held weaponry • Forgiving character collision models (floaty) • High fidelity AI • Small scale multiplayer
Game Genres (continued) • First Person Shooters (FPS) • Adapting to large scale maps • Binary Space partitioning
Game Genres (continued) • Third Person Shooters (FPS) • Space Panic, Donkey Kong, Pitfall, Super Mario Brothers!
Game Genres (continued) • Third Person Shooters (FPS) • Can be 3D like Super Mario 64 and Galaxy!
Game Genres (continued) • Third Person Action/Adventure(FPA) • Ghost Recon, Gears of war, Uncharted: Drake’s Fortune
Game Genres (continued) • Third Person vs. First Person • More emphasis on character body, animation, locomotion • More fidelity in player character animation • What about online multiplayer FSPs? • Third Person Technologies: • Moving platforms and geometry • Puzzles • Follow camera • Complex camera collision system • Never clip through background geometry and foreground objects
Game Genres (continued) • Fighting Games • Two player humanoids like Tekken, Soul Calibur, etc.
Game Genres (continued) • Fighting Games • Two player humanoids like Tekken, Soul Calibur, etc. • Technologies • Fighting animations • Accurate hit detection • Complex user input systems • Crowds; typically static backgrounds with semi-random movements • Close-up cameras: • Little or no world subdivision and occlusion culling • However!
Game Genres (continued) • Fighting Games • State-of-the-art like Fight Night • Technologies • Fighting animations • Accurate hit detection • Complex user input systems • Crowds; typically static backgrounds with semi-random movements • Close-up cameras: • Little or no world subdivision and occlusion culling • However!
Game Genres (continued) • Fighting Games • State-of-the-art like Fight Night • Technologies • High definition character graphics • Realistic skin, hairs, subsurface scatter, sweat effects, etc. • High fidelity character animation • Physics based cloth and hair simulation
Game Genres (continued) • Racing Games • Driving vehicles Race! • Simulation Realistic experience! • Technologies
Game Genres (continued) • Racing Games • Driving vehicles Race! • Simulation Realistic experience! • Technologies • Tricks in rendering distant background! • Breaking down tracks into 2D regions • Optimized for pathfinding, AI, etc. • FPS or TPS cameras • Efficient collision resolution for cameras in tight spaces. • Tunnels, etc.
Game Genres (continued) • Real-Time Strategy (RTS) • Dune II The first in this genre. • Warcraft, Age of Empires, Command and Conquer!
Game Genres (continued) • Real-Time Strategy (RTS) • Dune II The first in this genre. • Warcraft, Age of Empires, Command and Conquer! • Technologies • Oblique cameras! • No viewer camera modification • Various optimizations in rendering. • Grid-base world construction • Simplified rendering • Relatively low-res units • Height-field terrain maps • User terrain modifications • Simple user interactions
Game Genres (continued) • Massively Multiplayer Online(MMO) • World of Warcraft, Star Wars Galaxies, etc. • Huge number of simultaneous players!
Game Genres (continued) • Massively Multiplayer Online(MMO) • One persistent large map! • A world larger than life (of its millions of logged users) • Subcategories • Role-playing • (Dream Of Mirror Online) • Real-time strategy • (Battle Forge) • First Person Shooter • (Sudden Attack) and (Soldier Front)
Game Genres (continued) • Massively Multiplayer Online(MMO) • One persistent large map! • A world larger than life (of its millions of logged users) • Technologies • Massive battery of dedicated servers • Authorative state of the game • User logging • Inter-user chat VoIP • User transactions and account management • User subscriptions • Monthly charge • Pay per play • In game cost • What about graphics Fidelity?
Game Genres (continued) • Other Genres? • Sports • Role Playing Games • God games • Environment/Social Simulations • Puzzles • Non-electronic • Web-based • Serious games • …….
Game Engine Survey • The Quake Family • First 3D FPS ? 3DW • Doom Quake Quake 2 Quake 3 • Quake Engine has been used for many games • Quake2 Sin FAKK 2 Medal of Honor • Valve’s Source Engine is based on Quake Tech. • Who wants to get the source code and play with it? • You can run the game in MSVS and debug! • What does that mean?
Game Engine Survey • The Unreal Family • Epic Games Inc. Unreal Tournament! • Unreal Engine 2 Unreal Tournament 2004 • Highly modable • Unreal Engine 3 The most powerful toolset in the industry • Rich Graphics UI, rendering, shading, animation, cinematic systems! • Game Logic Visual Programming Kismet • Use to build almost in any game genre! • Developers Network UDN • Free Developer Kit UDK
Game Engine Survey • The Source Family • Valve Half-life • Microsoft XNA Game Studio • Based on MS C# CLR • Good for PC and Xbox
Game Engine Survey • Other Commercial Engines • C4 Engine by Terathon • SAGE (EA’s RTS engine)
Game Engine Survey • Open Source Engines • Freely available! • Licensing: • GPL • Free use not profit • LGPL • Free use Commercialize • Many open source engines exist • Some great, some awful! • OGRE 3D: • 3D Rendering engine • Advanced lighting, shaders, interaction, animation, HUD system!
Runtime Engine Architecture • Runtime Engine Architecture. • Two components of a game engine • Tool Suite • Runtime Component • First let’s check the runtime component: • Layered Architecture! • Like all software it is based on a layered architecture.
Runtime Engine Architecture • Runtime Engine Architecture. • Two components of a game engine • Tool Suite • Runtime Component • First let’s check the runtime component: • Circular Dependency • When lower layers dependon upper layers: • This is bad!
Hardware • The computer system or console • PC, Xbox, etc. • What is a platform? • The hardware + The system software (OS, etc.) • Most of the things we study are platform-agnostic • As long as you write in c++ you can compile and run on any platform! • Not really
Device Drivers • The lowest-level software components • Either by OS or by the hardware vendor • IO management • Memory management • Graphics management • Really all hardware resources! • Why this is important? • Shield hardware from the upper layers including the OS! • Details • Variants • Communication
Device Drivers • On PC this software controls the hardware • Running all the time. • Time-sharing • Multi-tasking • On traditional consoles • A thin library compiled into the game executable! • Owns the entire machine! • On modern consoles • System resources are shared by the OS! • Can interrupt the game execution to perform housekeeping tasks!
3rd Party SDKs and Middleware • Software Development Kits • These tools are widely used to develop system-dependent functionalities. • You don’t have to re-invent the wheel! • The functional interfaces provided by the SDKs • Application Programming Interface (API) • Examples? • OpenGL, DirectX, STL, etc.
3rd Party SDKs and Middleware • Data Structures and Algorithms • A game is an algorithm and all game components are structures – i.e. data structures. • Standard Template Library (STL) • C++’s basic I/O algorithms and data structures • STLport
3rd Party SDKs and Middleware • Data Structures and Algorithms • A game is an algorithm and all game components are structures – i.e. data structures. • Boost • A powerful implementation of a bunch of algorithms and data structures • www.boost.org • Cool huh
3rd Party SDKs and Middleware • Data Structures and Algorithms • A game is an algorithm and all game components are structures – i.e. data structures. • Loki • a powerful generic programming template library!