Supersize your production pipe enjmin 2013 v1.1 hd
2. ENJMIN 2013
January 24th 2013 | Angoulême, France
SUPERSIZE YOUR PRODUCTION PIPE!
Getting the Best from your Studio‟s
Content Creation Tools and Data Pipeline
Paul Simon Martin
Director of Technology
4. PAUL SIMON MARTIN (@GitOpThar)
• Director of Technology / Co-founder, Slant Six Games
• 16 years videogame industry experience
• Slant Six Games („05-Present):
Technical Direction: Hexane Game Engine
AAA-quality, cross-platform engine
Xbox 360, PS3 & Windows
Full suite of content authoring tools
Data transformation pipelines
Automated build, test & publish environments
• Sony Computer Entertainment America („00-‟05):
Developed: PS2 core & graphics engine (Syphon Filter)
Developed: PSP core & graphics prototype engine (Syphon Filter)
• Prior („96-‟00):
Graphics engines & tools for PS1, Dreamcast & Windows
5. SLANT SIX GAMES
• Location: Vancouver, British Columbia, Canada
• Founded: 2005
• Staff: 75+
• Games:
Galactic Reign- Windows 8 Mobile 2013
The Bowling Dead – iOS 2012, Android 2013
Resident Evil: Operation Raccoon City – PS3/Xbox
360/Windows 2012
SOCOM U.S. Navy Seals Fireteam Bravo 3 – PSP 2010
SOCOM Confrontation – PS3 2008 and Cold Front DLC
2009
SOCOM U.S. Navy Seals Tactical Strike – PSP 2007
Syphon Filter: Dark Mirror - PSP 2006 – Rendering Engine
6. AWARDS & RECOGNITION
2007 2008 2009 2010 2011
ELAN AWARDS BAFTA AWARDS IGN PSP BEST OF E3 IGN PSP BEST OF BEST OF E3
Best New Studio SOCOM:US Navy SOCOM:US Navy SEALs 2010 WINNER 2011
ELAN AWARDS SEALs Tactical Tactical Strike SOCOM:US Navy Resident Evil:
Strike Best Multiplayer Operation
SOCOM:US Navy Experience SEALs Fireteam
SEALs Tactical Nominated for Bravo 3 Raccoon City
Strike Best Strategy Best Competitive Best Multiplayer
Game TOP 10 BEST
Best Handheld COMPANIES TO WORK Multiplayer
Game FOR IN B.C. TOP 10 BEST
COMPANIES TO
WORK FOR IN B.C.
8. Glossary of Terms
Source Content:
Any unoptimized game asset file that has not yet gone through data conversion
E.g. *.ma, *.dds, *.tga, *.csv
Game Data:
Data file that is ready to be loaded by the game
Usually optimized for platform(s)
Authoring Tools:
A tool (usually residing on PC) used to author source content
E.g. Maya, Photoshop, CustomStudioTool
Data Pipeline:
A set of tools & scripts that are used to convert Source Content Game Data
Typically driven via a build engine
12. The Evolution of Production
Circa 1994 AD
Part 3: Somebody hired a Game Designer
13. The Evolution of Production
Circa 1998 AD
Part 3.5: Artist & Designer Spanking –
popularity diminished
14. The Evolution of Production
Circa 2000 AD
Part 4: Can‟t we all just get along?
15. The Evolution of Production
Current Day
• Studios value their artists and designers
• Artists and designers:
• Build The Game
• Programmers:
• Support artists and designers
• Implement core gameplay that can‟t be data-driven
16. “Your Studio is as good as your Tools”
• Paul M, circa 2003
• “Tools”= Authoring + Infrastructure + Pipeline + Packaging
• Today‟s games must have massively efficient runtime
• => Bake as much optimization into data as possible
• Games built by production teams
• Faster workflow => more content
• Faster workflow => more iteration = polish = quality
19. Supersize Your Production Pipe
Production pipe (prə duk′s̸hən, prō- pÄ«p):
• “The process that generates content for your games”
• narrow constrictive poor flow
• wide dilative good flow
• Considerations:
• Internal team process / workflow
• External team process / workflow
• Authoring tools / workflow
20. Supersize Your Production Pipe
Super-size (so̵̅o̅′pər sīz′):
• “Increase capacity”
• “Make bigger”
• In order to:
• Increase flow
21. Latency – The Silent Killer
• Latency: A measure of time delay experienced in a system
• High latency = Low flow
• Identify maximum iteration time
• Identify latency
• Derive a plan
• Re-evaluate
25. Old School
1. Trigger volume authored/tweaked in the level editor
2. User hits the “export” button
3. User runs a script to re-export the entire world
15 mins
• textures converted, visibility map
compiled, navigation mesh generated, …
4. User waits 10+ mins
5. User launches the game
6. It takes 5 mins to load
7. User runs player character from level start -> test area
8. Volume was too big/too small? Try again, back to step 1.
26. Much Better
1. Trigger volume authored/tweaked in the level editor
2. User hits the “save” button
3. The build infrastructure detects a file change
5-15 secs
• Triggers fast asset conversion for the new trigger
volume alone
• Signals (already running) game there is a change
• Game hot-loads new volume and associated scripts
• Player character (still) in test location
4. Volume too big/too small? Back to step 1.
27. Author vs. Tweak
Author:
• Addition/deletion of something new
• Latency: < 30 seconds
Tweak:
• Movement or property change of something existing
• Latency: < 5 seconds
28. What Happens Next...
Post-iteration, user commits changes…
1. User hits “commit” button User involvement ends here /
2. New level data committed to moves on to new task
asset depot
3. Build/Test Server (BTS) detects a change and begins
asset conversion
4. BTS launches an automated test of the game with
new asset
5. All happy? BTS sends user a confirmation email
6. Problem? BTS sends user an email with relevant info
36. Infrastructure - Sharing Tools
• Which to share and why?
- Remember that dotted „sharing‟ line last slide…
• Establish internal vs external workflow
• Tool & data versioning
- Developer studio tool versions usually more recent than
remote studio‟s. So…
- Flexible runtime or…
- Asset upgrade process
40. Content Authoring
• Intuitive UI
- Also, mirror existing commercial tools key bindings
& shortcuts (Maya, Photoshop, …)
• Consistent UI
• Close to Zero-iteration time
- The 5 Second Rule
- Ideally in-game/in-viewer
- Or in tool viewport
41. Organizing Assets
By meta-tag (e.g. iTunes)
Requires implementation effort
Tends towards poor file
management
By directory (e.g. Windows)
Tough to relocate
Find a balance
<= 200 tagged items per folder
Disallow tags defined by user
43. Budgets and Metrics
• Establish ‘Cost Scores’ for all assets
• Find a currency for each asset type
E.g.
– Filesize (Kilobytes)
– Dimensions (pixels wide/pixels tall/pixels deep)
– Runtime cost (GPU cycles or even # lines of code!)
• Allow users to evaluate the total cost of a scene
• Document currencies for outsource partners
• Document budgets in asset tracker when outsourcing
47. Data Conversion
DOS Batch files are evil!
Limited functionality
Poor scripting language
Slow to execute
No data dependency checking => each build
takes as long as the previous
Hard to debug
48. Data Conversion
Many better options available:
Scons (we like this )
MSBuild
Ant/NAnt
Jam
Make
Wrap in a UI
49. Data Conversion
Error Checking:
As much as possible
Report in a timely manner
– Often convenient to check for missing
assets in data conversion pipe but…
– Try to prevent errors getting this far
– Better to report errors at authoring time
Report errors clearly!
51. Engine Considerations
Middleware:
Not inherently evil but don‟t rush into it
Consider: Tools authoring process (identify any latency!)
Consider: Interoperability with your runtime
Consider: Integration with your tools & data pipeline
Consider: Support?
Consider: Source code?
60. Asset Sharing – Package Drops
Problem:
Long build process for packages
Usually commence late in the work day
Someone needs to work late!
Solution:
Automate the package shipping!
62. Don‟t
• Let production process evolve on its own
• Always prioritize game features over tools &
workflow improvements
• Ignore your production team‟s workflow
requests
• Underestimate management effort for
outsourcing
63. Do
• Identify latency in your production pipeline
• Automate as much as possible
• Have regular „asset authoring priorities‟ meetings
• Hire an army of tools engineers!
• Create an outsourcing plan
• Treat outsourcing partners like part of the team
• Regular status meetings with outsourcing partners
Bonjour tout le monde.Désolé, mon Français est crappy, ainsi je vais faire cette présentation en Englais.
Programmers sat in dark offices and built an entire video game.Some of them that had a partial right-brain, also created the artwork
The chance of hiring a programmer that has good artistic skills is slim-to-nonePeople started to realize this fairly early on and hired a token artist
The chance of hiring a programmer that has good artistic skills is slim-to-nonePeople started to realize this fairly early on and hired a token artist
Some assertions…Quality comes from iteration – more iteration cycles, higher qualityMore time = more iteration cycles = more quality
In the land of the AAA product, Iteration is king!
What breaks flow?If you’re as impatient as me, then you are acutely aware of latency in almost every consumer electronic device that you interact with, daily.For example, drawing cash from an ATM, authorization after punching your PIN into a supermarket checkout, etc.In a production environment, the time that is taken by artists or designers waiting for results to happen after they hit the “do stuff now” button is wasted time that is hard to hide with multi-tasking.What I mean by that is that typically they are either:1/ Too short to switch gears and do meaningful work while waiting for the results OR2/ Too long to wait for the results, so the gear switching is a long one and the person loses momentum on that task altogether
The rest of this talk will be divided between 6 sections related to the Production Pipeline We will have time for the 1st 3-4, which I think you will find the most interesting today The other items you can read offline and contact me if you’d like more information.
To illustrate my breakdown of “the pipeline” here is a slightly contrived example of the lifecycle of a typical new game feature, in an authoring pipeline... PC enters instance of EvilThingSpawnTriggerVolume, causes evil NPCs to be spawned that want to cause PC harm
Take a step back, look at your process Take inventory, see what works well, what is broken
Here is a dump of some execution timings for tools in our Data Conversion pipeline Can you generate something similar for analysis?
Pre-define meta-tags (e.g. Building, Detail, Blocker, Light, Trigger) – don’t allow each user to define new ones that are shared by the team
Wherever possible, source assets should have a clearly defined associated cost.Establish a currency that is well-defined (even if using a meta-points system) and used when referring to budgetsWhen working with an outsourcing studio, this system is invaluable since it allows a black-and-white way to define your expectations regarding asset budgets, and whether they have been met.
Asset meta-currency Each coloured dot = different resource type
Scene cost barometer
DOS Batch files are evil!Seriously, if your studio’s data conversion pipeline consists solely of a bunch of batch files that are run sequentially, take it out the back alley, shoot it, and tell your kids that Floppy died a peaceful death and we’ll get a new one.
I have presented entire lectures on this topic so please free to ping me offline if you have any questions here
Runtime interoperabilityMemory managementProfilingTools IntegrationDo they supply format conversion tools?Can you drive their data conversion tools from the command line?Do they expose an API for deriving input dependency files and resultant output files?
These are non-trivial features for your engine to support Can’t have engine team working in isolation of tools team
Generation of TRC-compliant PSN / XBL packages is a complicated process Familiarize yourself with it early Don’t leave until Beta!
Package drop Package up assets on each end, send to recipient by some protocolFTP – slooow (but free)Aspera – fast (but costs) I have good personal experience with Aspera; it was our transfer protocol of choice when working with Sony Japan and Sony USA
Problem: Someone needs to hang around after work hours, waiting on a lengthy build process, just so they can push a button to start the FTP/Aspera transferSolution:Have your package build pipeline automatically post the package upon successful completionEasy to do using FTP command line clientI worked with Aspera’s support people to customize their command line client such that we could automate delivery by FASP – now also trivial to implement