SlideShare uma empresa Scribd logo
1 de 65
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
INTRODUCTION

• Who am I?
• Who are Slant Six Games?
• Who are you?
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
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
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.
YOU ARE?
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
Rewind...
Evolution of Production
               Circa 1980 AD
Part 1: The Programmer
The Evolution of Production
                     Circa 1985 AD
Part 2: The Artist
The Evolution of Production
                  Circa 1994 AD
Part 3: Somebody hired a Game Designer
The Evolution of Production
                  Circa 1998 AD
Part 3.5: Artist & Designer Spanking –
popularity diminished
The Evolution of Production
                           Circa 2000 AD
Part 4: Can‟t we all just get along?
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
“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
Iterate!
Supersize Your Production Pipe?
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
Supersize Your Production Pipe
Super-size (so̵̅o̅′pər sīz′):
   • “Increase capacity”
   • “Make bigger”
   • In order to:
        • Increase flow
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
Let‟s Begin...
“The Production Pipeline”

•   Infrastructure
•   Content Authoring
•   Data Conversion
•   Game Runtime
•   Game / Asset Packaging
•   Game / Asset Sharing
A Typical Scenario
EvilThingSpawnTriggerVolume:
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.
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.
Author vs. Tweak

Author:
   • Addition/deletion of something new
   • Latency: < 30 seconds

Tweak:
  • Movement or property change of something existing
  • Latency: < 5 seconds
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
Infrastructure
    [IF]
Infrastructure
•   Asset storage
•   Automated building
•   Automated testing
•   Automated metrics reporting
•   Process analysis
Infrastructure – Asset Storage
• Big data, many files, frequent access
• Large capacity, fast access hardware
• Revision control software
   - Perforce
   - Subversion/GIT/Mercurial
   - Alienbrain
   - Homegrown solution
Infrastructure –
Automated Building
Infrastructure – Automated Regression
                     Testing
Infrastructure – Automated Metrics
Infrastructure - Analysis
                           Sharing
                           Boundary




              Internal +   Internal Only
              External
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
Infrastructure - Analysis
Content Authoring
        [CA]
Content Authoring
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
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
Tracking Assets
Tracking software/tools              Consistent language
     Hansoft                             Normal map change
     Excel                               Mesh change
     Custom solution (web-based?)        Detail change…
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
Budgets and Metrics
Data Conversion
     [DC]
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
Data Conversion
Many better options available:
   Scons (we like this )
   MSBuild
   Ant/NAnt
   Jam
   Make
Wrap in a UI
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!
Game Runtime
    [GR]
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?
Middleware @ Slant 6

•      : Collision, rigid body physics, ragdoll

•      : Audio asset management, audio runtime

•      : Low-level networking

•      : Maya export via FCollada

•      : Mesh LoD
Engine Considerations
Live update:
     Tuning variables
     Object position/scale/rotation
     Object creation/deletion
     Object refresh
Live variable introspection/reflection:
     Game variable state reflected in authoring tools
Game and Asset Packaging
       [AP]
Game and Asset Packaging
• Which format?
    MSI / ZIP / RAR
    PSN package
    XBL package
• Configuration TRC/TCR complexity
• Configuration combination explosion
• Automate!
Game and Asset Sharing
      [AS]
Game/Asset Sharing
•   Shared Server
      Perforce + P4 Proxy
      Microsoft Team Server
      Windows Shared Folders
•   Package Drop
      FTP
      Aspera fasp™
      HDD Courier
•   Carrier pigeon?
Asset Sharing – P4 Proxy
Asset Sharing – Package Drops
FTP/Aspera fasp™
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!
In Summary…
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
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
Talk to me...


   Twitter: @GitOpThar
Q&A

Mais conteúdo relacionado

Mais procurados

My 10 days with Phaser.js - WarsawJS Meetup #13
My 10 days with Phaser.js - WarsawJS Meetup #13My 10 days with Phaser.js - WarsawJS Meetup #13
My 10 days with Phaser.js - WarsawJS Meetup #13Piotr Kowalski
 
Connect2014 BP205: Improving Your IBM Domino Designer Experience
Connect2014 BP205: Improving Your IBM Domino Designer ExperienceConnect2014 BP205: Improving Your IBM Domino Designer Experience
Connect2014 BP205: Improving Your IBM Domino Designer Experiencepanagenda
 
Game Programming 08 - Tool Development
Game Programming 08 - Tool DevelopmentGame Programming 08 - Tool Development
Game Programming 08 - Tool DevelopmentNick Pruehs
 
Server side game_development
Server side game_developmentServer side game_development
Server side game_developmentYekmer Simsek
 
K2000 Scripted Installations
K2000 Scripted InstallationsK2000 Scripted Installations
K2000 Scripted InstallationsDell World
 
Lecture 5 - Procedural Content Generation
Lecture 5 - Procedural Content GenerationLecture 5 - Procedural Content Generation
Lecture 5 - Procedural Content GenerationLuke Dicken
 
Software Distribution
Software DistributionSoftware Distribution
Software DistributionDell World
 
Troubleshooting K2000
Troubleshooting K2000Troubleshooting K2000
Troubleshooting K2000Dell World
 
K2000 Mac Imaging
K2000 Mac ImagingK2000 Mac Imaging
K2000 Mac ImagingDell World
 
West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...Gerke Max Preussner
 
Continuous Deployment at Disqus (Pylons Minicon)
Continuous Deployment at Disqus (Pylons Minicon)Continuous Deployment at Disqus (Pylons Minicon)
Continuous Deployment at Disqus (Pylons Minicon)zeeg
 
Game Development Challenges
Game Development ChallengesGame Development Challenges
Game Development ChallengesNick Pruehs
 
Optimizing K2000 Workflow
Optimizing K2000 WorkflowOptimizing K2000 Workflow
Optimizing K2000 WorkflowDell World
 
East Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
East Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...East Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
East Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...Gerke Max Preussner
 
Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Karsten Wysk
 
K2000 Advanced Topics
K2000 Advanced TopicsK2000 Advanced Topics
K2000 Advanced TopicsDell World
 
K2000 Recovery Console Tips and Tricks
K2000 Recovery Console Tips and TricksK2000 Recovery Console Tips and Tricks
K2000 Recovery Console Tips and TricksDell World
 
K2000 Keeping Your Deployments Up-to-Date
K2000 Keeping Your Deployments Up-to-DateK2000 Keeping Your Deployments Up-to-Date
K2000 Keeping Your Deployments Up-to-DateDell World
 
How to develop and localize Xbox 360 titles
How to develop and localize Xbox 360 titlesHow to develop and localize Xbox 360 titles
How to develop and localize Xbox 360 titlesSangJin Kang
 

Mais procurados (20)

My 10 days with Phaser.js - WarsawJS Meetup #13
My 10 days with Phaser.js - WarsawJS Meetup #13My 10 days with Phaser.js - WarsawJS Meetup #13
My 10 days with Phaser.js - WarsawJS Meetup #13
 
Connect2014 BP205: Improving Your IBM Domino Designer Experience
Connect2014 BP205: Improving Your IBM Domino Designer ExperienceConnect2014 BP205: Improving Your IBM Domino Designer Experience
Connect2014 BP205: Improving Your IBM Domino Designer Experience
 
Game Programming 08 - Tool Development
Game Programming 08 - Tool DevelopmentGame Programming 08 - Tool Development
Game Programming 08 - Tool Development
 
Server side game_development
Server side game_developmentServer side game_development
Server side game_development
 
K2000 Imaging
K2000 ImagingK2000 Imaging
K2000 Imaging
 
K2000 Scripted Installations
K2000 Scripted InstallationsK2000 Scripted Installations
K2000 Scripted Installations
 
Lecture 5 - Procedural Content Generation
Lecture 5 - Procedural Content GenerationLecture 5 - Procedural Content Generation
Lecture 5 - Procedural Content Generation
 
Software Distribution
Software DistributionSoftware Distribution
Software Distribution
 
Troubleshooting K2000
Troubleshooting K2000Troubleshooting K2000
Troubleshooting K2000
 
K2000 Mac Imaging
K2000 Mac ImagingK2000 Mac Imaging
K2000 Mac Imaging
 
West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
 
Continuous Deployment at Disqus (Pylons Minicon)
Continuous Deployment at Disqus (Pylons Minicon)Continuous Deployment at Disqus (Pylons Minicon)
Continuous Deployment at Disqus (Pylons Minicon)
 
Game Development Challenges
Game Development ChallengesGame Development Challenges
Game Development Challenges
 
Optimizing K2000 Workflow
Optimizing K2000 WorkflowOptimizing K2000 Workflow
Optimizing K2000 Workflow
 
East Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
East Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...East Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
East Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
 
Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011
 
K2000 Advanced Topics
K2000 Advanced TopicsK2000 Advanced Topics
K2000 Advanced Topics
 
K2000 Recovery Console Tips and Tricks
K2000 Recovery Console Tips and TricksK2000 Recovery Console Tips and Tricks
K2000 Recovery Console Tips and Tricks
 
K2000 Keeping Your Deployments Up-to-Date
K2000 Keeping Your Deployments Up-to-DateK2000 Keeping Your Deployments Up-to-Date
K2000 Keeping Your Deployments Up-to-Date
 
How to develop and localize Xbox 360 titles
How to develop and localize Xbox 360 titlesHow to develop and localize Xbox 360 titles
How to develop and localize Xbox 360 titles
 

Semelhante a Supersize your production pipe enjmin 2013 v1.1 hd

Ottawa unity user_group_feb13_2015
Ottawa unity user_group_feb13_2015Ottawa unity user_group_feb13_2015
Ottawa unity user_group_feb13_2015Karman Interactive
 
De Re PlayStation Vita
De Re PlayStation VitaDe Re PlayStation Vita
De Re PlayStation VitaSlide_N
 
Massively Social != Massively Multiplayer
Massively Social != Massively MultiplayerMassively Social != Massively Multiplayer
Massively Social != Massively MultiplayerPaul Furio
 
Inside the IT Territory game server / Mark Lokshin (IT Territory)
Inside the IT Territory game server / Mark Lokshin (IT Territory)Inside the IT Territory game server / Mark Lokshin (IT Territory)
Inside the IT Territory game server / Mark Lokshin (IT Territory)DevGAMM Conference
 
Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...
Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...
Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...Amazon Web Services Korea
 
Designing a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesDesigning a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesiFunFactory Inc.
 
2004: Söldner - a Post Mortem
2004: Söldner - a Post Mortem2004: Söldner - a Post Mortem
2004: Söldner - a Post MortemTeut Weidemann
 
Building Multiplayer Games (w/ Unity)
Building Multiplayer Games (w/ Unity)Building Multiplayer Games (w/ Unity)
Building Multiplayer Games (w/ Unity)Noam Gat
 
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...gamifi.cc
 
Working Well Together: How to Keep High-end Game Development Teams Productive
Working Well Together: How to Keep High-end Game Development Teams ProductiveWorking Well Together: How to Keep High-end Game Development Teams Productive
Working Well Together: How to Keep High-end Game Development Teams ProductivePerforce
 
(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...
(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...
(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...Amazon Web Services
 
Designing a Highly Available Environment Using Methods of Modern IT Infrastru...
Designing a Highly Available Environment Using Methods of Modern IT Infrastru...Designing a Highly Available Environment Using Methods of Modern IT Infrastru...
Designing a Highly Available Environment Using Methods of Modern IT Infrastru...Perforce
 
Initial design (Game Architecture)
Initial design (Game Architecture)Initial design (Game Architecture)
Initial design (Game Architecture)Rajkumar Pawar
 
Best Practices For Game Development Using Perforce Streams
Best Practices For Game Development Using Perforce Streams Best Practices For Game Development Using Perforce Streams
Best Practices For Game Development Using Perforce Streams Perforce
 
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkMaking A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkGorm Lai
 
1-Introduction (Game Design and Development)
1-Introduction (Game Design and Development)1-Introduction (Game Design and Development)
1-Introduction (Game Design and Development)Hafiz Ammar Siddiqui
 
Harlan Beverly Lag The Barrier to innovation gdc austin 2009
Harlan Beverly Lag The Barrier to innovation gdc austin 2009Harlan Beverly Lag The Barrier to innovation gdc austin 2009
Harlan Beverly Lag The Barrier to innovation gdc austin 2009Harlan Beverly
 
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...Umbra Software
 
Thomas Blair Portfolio
Thomas Blair PortfolioThomas Blair Portfolio
Thomas Blair PortfolioBlixtev
 

Semelhante a Supersize your production pipe enjmin 2013 v1.1 hd (20)

Ottawa unity user_group_feb13_2015
Ottawa unity user_group_feb13_2015Ottawa unity user_group_feb13_2015
Ottawa unity user_group_feb13_2015
 
De Re PlayStation Vita
De Re PlayStation VitaDe Re PlayStation Vita
De Re PlayStation Vita
 
Massively Social != Massively Multiplayer
Massively Social != Massively MultiplayerMassively Social != Massively Multiplayer
Massively Social != Massively Multiplayer
 
Inside the IT Territory game server / Mark Lokshin (IT Territory)
Inside the IT Territory game server / Mark Lokshin (IT Territory)Inside the IT Territory game server / Mark Lokshin (IT Territory)
Inside the IT Territory game server / Mark Lokshin (IT Territory)
 
Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...
Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...
Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...
 
Designing a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesDesigning a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile games
 
2004: Söldner - a Post Mortem
2004: Söldner - a Post Mortem2004: Söldner - a Post Mortem
2004: Söldner - a Post Mortem
 
Building Multiplayer Games (w/ Unity)
Building Multiplayer Games (w/ Unity)Building Multiplayer Games (w/ Unity)
Building Multiplayer Games (w/ Unity)
 
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
 
Working Well Together: How to Keep High-end Game Development Teams Productive
Working Well Together: How to Keep High-end Game Development Teams ProductiveWorking Well Together: How to Keep High-end Game Development Teams Productive
Working Well Together: How to Keep High-end Game Development Teams Productive
 
God Of War : post mortem
God Of War : post mortemGod Of War : post mortem
God Of War : post mortem
 
(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...
(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...
(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...
 
Designing a Highly Available Environment Using Methods of Modern IT Infrastru...
Designing a Highly Available Environment Using Methods of Modern IT Infrastru...Designing a Highly Available Environment Using Methods of Modern IT Infrastru...
Designing a Highly Available Environment Using Methods of Modern IT Infrastru...
 
Initial design (Game Architecture)
Initial design (Game Architecture)Initial design (Game Architecture)
Initial design (Game Architecture)
 
Best Practices For Game Development Using Perforce Streams
Best Practices For Game Development Using Perforce Streams Best Practices For Game Development Using Perforce Streams
Best Practices For Game Development Using Perforce Streams
 
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkMaking A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You Think
 
1-Introduction (Game Design and Development)
1-Introduction (Game Design and Development)1-Introduction (Game Design and Development)
1-Introduction (Game Design and Development)
 
Harlan Beverly Lag The Barrier to innovation gdc austin 2009
Harlan Beverly Lag The Barrier to innovation gdc austin 2009Harlan Beverly Lag The Barrier to innovation gdc austin 2009
Harlan Beverly Lag The Barrier to innovation gdc austin 2009
 
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
Umbra Ignite 2015: Graham Wihlidal – Adapting a technology stream to ever-evo...
 
Thomas Blair Portfolio
Thomas Blair PortfolioThomas Blair Portfolio
Thomas Blair Portfolio
 

Mais de slantsixgames

Ask the Producers Feb 8th
Ask the Producers Feb 8thAsk the Producers Feb 8th
Ask the Producers Feb 8thslantsixgames
 
Maximize Your Production Effort (Chinese)
Maximize Your Production Effort (Chinese)Maximize Your Production Effort (Chinese)
Maximize Your Production Effort (Chinese)slantsixgames
 
SCons an Introduction
SCons an IntroductionSCons an Introduction
SCons an Introductionslantsixgames
 
Confrontation Audio GDC 2009
Confrontation Audio GDC 2009Confrontation Audio GDC 2009
Confrontation Audio GDC 2009slantsixgames
 
Audio SPU Presentation
Audio SPU PresentationAudio SPU Presentation
Audio SPU Presentationslantsixgames
 
Collision Detection an Overview
Collision Detection an OverviewCollision Detection an Overview
Collision Detection an Overviewslantsixgames
 
Modern Graphics Pipeline Overview
Modern Graphics Pipeline OverviewModern Graphics Pipeline Overview
Modern Graphics Pipeline Overviewslantsixgames
 
PPU Optimisation Lesson
PPU Optimisation LessonPPU Optimisation Lesson
PPU Optimisation Lessonslantsixgames
 
Event System Presentation
Event System PresentationEvent System Presentation
Event System Presentationslantsixgames
 

Mais de slantsixgames (9)

Ask the Producers Feb 8th
Ask the Producers Feb 8thAsk the Producers Feb 8th
Ask the Producers Feb 8th
 
Maximize Your Production Effort (Chinese)
Maximize Your Production Effort (Chinese)Maximize Your Production Effort (Chinese)
Maximize Your Production Effort (Chinese)
 
SCons an Introduction
SCons an IntroductionSCons an Introduction
SCons an Introduction
 
Confrontation Audio GDC 2009
Confrontation Audio GDC 2009Confrontation Audio GDC 2009
Confrontation Audio GDC 2009
 
Audio SPU Presentation
Audio SPU PresentationAudio SPU Presentation
Audio SPU Presentation
 
Collision Detection an Overview
Collision Detection an OverviewCollision Detection an Overview
Collision Detection an Overview
 
Modern Graphics Pipeline Overview
Modern Graphics Pipeline OverviewModern Graphics Pipeline Overview
Modern Graphics Pipeline Overview
 
PPU Optimisation Lesson
PPU Optimisation LessonPPU Optimisation Lesson
PPU Optimisation Lesson
 
Event System Presentation
Event System PresentationEvent System Presentation
Event System Presentation
 

Supersize your production pipe enjmin 2013 v1.1 hd

  • 1.
  • 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
  • 3. INTRODUCTION • Who am I? • Who are Slant Six Games? • Who are you?
  • 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
  • 10. Evolution of Production Circa 1980 AD Part 1: The Programmer
  • 11. The Evolution of Production Circa 1985 AD Part 2: The Artist
  • 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
  • 23. “The Production Pipeline” • Infrastructure • Content Authoring • Data Conversion • Game Runtime • Game / Asset Packaging • Game / Asset Sharing
  • 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
  • 30. Infrastructure • Asset storage • Automated building • Automated testing • Automated metrics reporting • Process analysis
  • 31. Infrastructure – Asset Storage • Big data, many files, frequent access • Large capacity, fast access hardware • Revision control software - Perforce - Subversion/GIT/Mercurial - Alienbrain - Homegrown solution
  • 33. Infrastructure – Automated Regression Testing
  • 35. Infrastructure - Analysis Sharing Boundary Internal + Internal Only External
  • 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
  • 42. Tracking Assets Tracking software/tools Consistent language  Hansoft  Normal map change  Excel  Mesh change  Custom solution (web-based?)  Detail change…
  • 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
  • 45.
  • 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!
  • 50. Game Runtime [GR]
  • 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?
  • 52. Middleware @ Slant 6 • : Collision, rigid body physics, ragdoll • : Audio asset management, audio runtime • : Low-level networking • : Maya export via FCollada • : Mesh LoD
  • 53. Engine Considerations Live update:  Tuning variables  Object position/scale/rotation  Object creation/deletion  Object refresh Live variable introspection/reflection:  Game variable state reflected in authoring tools
  • 54. Game and Asset Packaging [AP]
  • 55. Game and Asset Packaging • Which format?  MSI / ZIP / RAR  PSN package  XBL package • Configuration TRC/TCR complexity • Configuration combination explosion • Automate!
  • 56. Game and Asset Sharing [AS]
  • 57. Game/Asset Sharing • Shared Server  Perforce + P4 Proxy  Microsoft Team Server  Windows Shared Folders • Package Drop  FTP  Aspera fasp™  HDD Courier • Carrier pigeon?
  • 58. Asset Sharing – P4 Proxy
  • 59. Asset Sharing – Package Drops FTP/Aspera fasp™
  • 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
  • 64. Talk to me... Twitter: @GitOpThar
  • 65. Q&A

Notas do Editor

  1. Opening Screen
  2. Bonjour tout le monde.Désolé, mon Français est crappy, ainsi je vais faire cette présentation en Englais.
  3. Programmers sat in dark offices and built an entire video game.Some of them that had a partial right-brain, also created the artwork
  4. 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
  5. 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
  6. Some assertions…Quality comes from iteration – more iteration cycles, higher qualityMore time = more iteration cycles = more quality
  7. In the land of the AAA product, Iteration is king!
  8. 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
  9. 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.
  10. 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
  11. Take a step back, look at your process Take inventory, see what works well, what is broken
  12. Here is a dump of some execution timings for tools in our Data Conversion pipeline Can you generate something similar for analysis?
  13. 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
  14. 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.
  15. Asset meta-currency Each coloured dot = different resource type
  16. Scene cost barometer
  17. 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.
  18. I have presented entire lectures on this topic so please free to ping me offline if you have any questions here
  19. 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?
  20. These are non-trivial features for your engine to support Can’t have engine team working in isolation of tools team
  21. Generation of TRC-compliant PSN / XBL packages is a complicated process Familiarize yourself with it early Don’t leave until Beta!
  22. 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
  23. 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