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” 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 AtAutocad . The Engine Product Scripters • Depending on the project, use a combination of in‐ house software, 3rd party solutions and open .

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… 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 & 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 wiihth ffildailed engine initiatives. – “Small” gets larger every year. • Making an engine genre agnostic is very hard…potentially • Viable 3rd party engines now exist: impossible. • – 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 • Not part of the engine (at least so far) – Resurgence of the PC, and emergence of mobile • Typically implemented via a HTTP/HTTPS & REST – Abundant web technology & infrastructure – Most common back ends are PHP, but all kinds used – Most common database is MySQL, but nosql is gaining • Result has been the rise of games with a “back • Games are much more write heavy than other Web apps – Scalability is a problem end” component • 3rd party hosting services (AWS, Rackspace) used a lot – Means: the game connects to a database • One of the biggest areas of active “research.”

7 10/17/2014

Hardware Evolution: Where are we going? NES PS1 PS2 PS3 Current PC Xbox One CPU MOS MIPS 294 MHz 3.2 GHz 8 Cores at 3 8 Core AMD Tech R3000A‐ 32‐ MIPS POWER GHz custom CPU 6502 bit RISC chip "Emotion PPE, Frequency: 1.79MHz at 33 MHz Engine" seven 1.75 GHz 3.2 GHz SPEs GPU ‐ 66 MIPS 147 MHz 550 MH Gerforce 853 MHz vector math "Graphics z based 650 GPU unit on CPU Synthesizer on 1058 Mhz Custom " Nvidia 384 Cores AMD G70 Storage Cartridge CD DVD Blu‐Ray HDD HDD

Game Programming: The price of Content is King admission… • We have already reached the sweet spot for • Most of game & engine programming is just solid CS. • However, there are areas which are typically missing from a most game features: CS program: – 4 enemies to 8  big difference – Mathematical modeling, vector math – Simulation & physics – 64 enemies to 128  small difference – GhiGraphics, particu lar ly speciilal effec ts • PS2 was the tipping point between ability to • This is why I’m so excited about this class! • Database and server programming are now important as display content and ability to make it. well. – We are now firmly in the era where content • Need to be able to work with large code bases. • Games are a serious career for people who are serious creation cost is the driving factor. about it.

8