Game Engines: Why and What? 6 Months
Total Page:16
File Type:pdf, Size:1020Kb
10/17/2014 Olde Tyme Game Making Turbo Assembler, Programmer Game Game Engines: Why and What? 6 months Dan White 30+ years ago, a game might have 1 Studio Technical Director programmer, and maybe 1 artist Pipeworks [email protected] A current mid‐large size project looks View from the CEO’s chair… like: Head Count • Games are big business – Current AAA titles: $30 million budget, 2+ year Artists time frame Animators • GTAV = 1 $Billion, $265 million to develope DiDesigners – Even mobile games: $500 thousand Scripters Programmers – Project completion date is very important Producers • Particularly for licensed properties, sports, holiday launches, or anything with advertising Game development Money Product On large projects, programmers are a small part organization On smaller projects, a larger part Where is test? Forgotten as usual.. This means we make games differently… Complexity When I first noticed change… • Even small games are complex software development projects involving multiple Jumpman Atari 800 disciplines. circa 1983: • Just “go make stuff” approach doesn’ t work. • The project management side is a discipline in itself. This game had an EDITOR! • What to do…. At the time, this seemed revolutionary to me. 1 10/17/2014 The solution: Game “Engines” Doom Engine cemented the idea.. • Idea is to use a set of reusable tools and Doom released in 1993 runtime to create product. – Spawned • “Engine,” like “object,” “beta” or “alpha” is a HeXen, Heretic and word that means many things. so on. – Started the idea that an engine is potentially valuable on its own. A more detailed view of today… The real task of engineers • The primary task of engineering is to make tools and Artists runtime to enable artists and designers to make games. – Saves money, but just as important increases Animators predictability. • This is how most industries work anyway…you don’t Designers need programmers to use AtAutoca d. C The Engine Product Scripters • Depending on the project, use a combination of in‐ house software, 3rd party solutions and open source. Audio Tech • Not to worry, we are decades away from losing the chance to be creative. Gameplay Engineers – Also, you don’t want designers bothering you to change hit Programmers points… Content Team Engineer programmer software developer The goal is a pipeline… How a game team should work… Tool chain Runtime Back End • Artists make assets: models, textures, etc.) • Designers use the assets to make levels. Import Assets Distribute • The levels are packed to make game data. • The runtime loads, processes and presents the data. Edit Game Load Collect Data • The back end saves data, statistics and transactions. Data • Back end data can be analyzed to close the loop. • Sound familiar? Bundle for Simulate Analyze Runtime – Source file Compiled EXE – EXE run by an OS Present 2 10/17/2014 Primary Components The art pipeline… Designers & Artists Scripters Render monkey, Photoshop FX composer 3ds Max DCC Tools Level Editor Source of: Maya .fx, .hlsl or .cg PSD/Tiff files Meshes files Animations Art Assets Level File Materials Textures Skins Aka: Distiller, packer Bundler Maya, 3ds Max, Resource converter Motionbuilder XSI Proprietary There will be at least one version DCC = Digital content Game data (commercial Special Pluggins binary files Creation for each target platform: PSP, PS2 products) XBOX, WII, X360, PS3, PC, X1… Export Pluggins Collada Runtime Originally targeted at film. DCC Tool Examples 3 10/17/2014 The level editing pipeline… Unreal Engine 4 Art assets Scripts Special effects Engine specific level editor Level file • Object placement & properties • Setup lights • Create light/shadow maps • Script binding (connect triggers and so forth) • Script testing • Create camera paths & cinematic sequences. • In some cases…creating of the static world geometry (now out of fashion) Spigot Other tools • Special Fx editor – Particle systems very important for look and feel. – Edit and tweak particle systems – Can be really fun to work with & neglected academically • Sound editor – Take sound samples (from Sound Forge or whatever) and create runtime sound‐effects by applying patches, filters etc. • Animation Graph Editor • Shader Editor • Asset management – This is a huge problem with > 10^5 files • UI System – Game UI can be very time consuming to make 4 10/17/2014 Unreal 4 Shader Editor Recurring Theme About the Bundler… • • The bundler preprocess data for the runtime. Editor • The bundler does the final conversion of assets to a platform specific format. • Previewer – Like the compiler • Runtime: loads, simulates, presents • Stripify & build meshes • Convert texture formats • As usual, the UI (editor) takes most of the – Also build texture atlases. • Compress everything that can be compressed. work • Layout binary data for streaming. • Handles endian swapping. • Build large data structures (e.g. BSP or kD trees) • Do every possible preprocess operation! – Among other advantages, finds errors early Runtime Loading and Asset Runtime Design Issues Management • Game runtime is a real‐time simulation • A misunderestimated problem – Predictable performance is what matters! • Number of assets may be > 10^5 – Typically vary per platform. • Steady 30hz is better than hunting between 30 and 60. – Artists are constantly updating • Amortization is not the answer – Data is big: WSOP takes 300GB on our Perforce server • Garbage collection is…garbage • Many source control systems choke – But we use it anyway • Loading assets into memory can take a long time. – Often networked – How long does it take to fill 5GB? • 7200RPM HDD can maybe hit 1Gb/sec…best case • Consoles need special treatment: – It may also require CPU – Resources are limited, memory is generally scarce • Loading and asset management are often the biggest (relative to the PC) problem…more than framerate! – Each frame is a new frame, but the set of loaded assets persists, so – Hardware has poor memory bandwidth & small “bad things” last many frames. caches 5 10/17/2014 Runtime…some important systems When it all goes together, you get: Telemetry Simulation/World Culling & “Scene Patching/CDN (Game object) Graph” Streaming & IO Rigid body Physics Geometry management (e.g. BSP Cloth/water Network trees Scripting Animation Math Interface & GUI Material Management Messaging/Events Shapes & Meshes Debugging Sound Special Effects Controller Video Primitive rendering Platform SDK (e.g. DX9 + Win32) Perhaps 80% is cross platform. This is a mobile game!!! Perspective Iteration –DW2 vs DW1 • The tools complexity, by line count, will be multiples of the runtime side (at least for a single platform). • The engineers use the runtime, but all the content people use the tools. – Training time on tools is much higher, cause more people are involved. – Productivity payoff is much higher for the same reason. • Runtime changes with platform and fads, but tools can remain forever. • A lot of what makes a runtime “good” is performance, but the payoff to the user may be low. – 2x increase in poly count is often barely noticeable • Iteration makes games good, and the tool chain allows iteration. • Our task as engineers is to think about the WHOLE engine, not just the runtime. This is essentially the same game and engine code. 6 10/17/2014 3rd party engines: Issues with making engines… Why build when you can buy? • You can make a game without tools, but you can’t make a game • without runtime. Until recently, needing an engine was a barrier to – Just like you can make a game without artists, but not without entry. programmers. • For financial and technical reasons, you must assemble an engine in • A small company can’t maintain an engine team. stages. – Pipeworks, at 55 people is even too small. • It is very easy to screw up. The world is fille d wihith fildfailed engine initiatives. – “Small” gets larger every year. • Making an engine genre agnostic is very hard…potentially • Viable 3rd party engines now exist: impossible. • Unity – Genres: FPS, RTS, RPG, fighting, puzzle, driving and the all‐important 3rd persona action adventure. • Unreal – Repurposing an engine is perilous. • Cryengine • In the end, users don’t give a darn…they want a fun game. – Prices have become reasonable Unity What if you use a 3rd party engine… • Combines in one tool: – Level editor rd – Particle editor • Even if you use a 3 party engine, you need – Previewer people who understand how engines work. • It has the killer feature: Game runs in the editor. • UI based on 3rd party plug ins – Unless you are just re‐skinning samples – In fact, there is an amazing market for 3rd party code & assets • Scripting bbdased on Mono • You can cross this line without knowing it – Has garbage collection…. rd • Targeted at mobile & browser. • A 3 party engine is more like an application – In fact, owns this market. framework for making games. • Also support consoles…sort of. • Unlike Ogre and some others, used to make many commercial games. • Line between engine and gameplay • Unity is an excellent thing to study! programmers blurs. The Back End Back End Implications • Disruptive forces since late 2000’s: • Once you connect to a database, many things become easy: – Cloud based save load – Piracy, and the need to control it – Multiplayer lobbies & leaderboards – Digital Distribution • But not synchronous MP – Social integration – Success of MMORPGS (e.g. WOW) – Freemium economy & transactions – High broadband penetration – Piracy protection – Telemetry, which has changed game design forever – Microtransactions