SlideShare a Scribd company logo
Killzone Shadow Fall
Creating art tools for a new generation of games
Sander van der Steen
Senior Technical Artist
Guerrilla Games
Intro
•Guerrilla Games is based in Amsterdam
•First party Sony studio since 2005
•Killzone Shadow Fall
•Launch title for the Playstation 4
•Pipeline build around Maya
Takeaway
•Maya in the Guerrilla Games pipeline
•Integrating a game-engine in Maya
•Maya scene file considerations for next-gen
•New possibilities of viewport 2.0
Maya in the Guerrilla Games pipeline
Simple Killzone Shadow Fall pipeline overview
Asset creation
Maya, Mudbox, Motion builder etc.
• All assets are imported into Maya and placed in environment
• Individual assets are tweaked
Simple Killzone Shadow Fall pipeline overview
Asset creation
Environment
Art
• The levels with geometry transfer to the lighting team
• “Complete” levels will be exported to game
Simple Killzone Shadow fall pipeline overview
Asset creation
Environment
Art
Lighting Game
Simple Killzone Shadow Fall pipeline overview
Asset creation
Environment
Art Lighting Game
• Many iterations required to reach production quality
•Artist friendly + familiar
•A lot of editing for free
•Mesh edits (polygon tools)
•Material edits (hypershade)
•Less need to import/export to/from applications
Autodesk Maya advantages
Autodesk Maya in-engine viewport demo:
Autodesk maya in-engine viewport demo:
Autodesk Maya in-engine viewport demo:
Killzone Shadow Fall: Creating Art Tools For A New Generation Of Games
Integrating a game-engine in Maya
Maya needs to know how:
•To render
•Game engine specific
•To communicate attribute changes
•Mesh edits, position updates etc.
•To read game data
•Maya scene usage
A lot of tools coding!
A game-engine in Maya: Deferred rendering
Initial implementation:
•Brute force updates each frame (CPU limited)
•Knowing what to update can be difficult
•Limited integration
•View selected, draw overrides, etc.
Deferred rendering: Killzone 3
Playstation 3 vs. Playstation 4
VS
RAM
Processing Power PS3
PS4
~10x
16x
Workstation performance: “Killzone 3” vs “Killzone Shadow Fall”
VS
RAM
Single threaded processing power 2009
2013
~2x
~4x
Deferred rendering: Killzone 3
Maya Updates
Maya Render
Deferred Render
Single frame CPU time distribution
• Maya mesh edits?
• Tricky hierarchical updates (from a parent transform)
• Visibility changes
• Maya LOD groups
• Shader changes?
Challenges for pushing updates
Maya’s DAG tree might not be represented 1 on 1 in-game.
• Callbacks? (MMessage)
• Often no notion of groups or hierarchy
• Only world-space transforms in-game
Challenges for pushing updates 2
•A lightweight representation of the DAG tree in Maya
•It mirrors the DAG tree in Maya
•Implemented using C++ callbacks (API MMessage class)
Solution: Guerrilla DAG
EngineGuerrilla DAGMaya
• Node added callback (MDGMessage):
• Create GG DAGnode
• Transforms, lights, maya meshes, building blocks and sets (shaders)
• Add GG DAGnode to database
• Node removed callback (MDGMessage):
• Cleanup
Implementing Guerrilla DAG
will have read only access to it’s sibling via an
MObjectHandle to the maya node
Implementing Guerrilla DAG
GG DAG node
Maya node
Engine
Each Guerrilla DAG node:
will have read only access to it’s “sibling” via an
MObjectHandle to the maya node
Implementing Guerrilla DAG
GG DAG node
Maya node
Engine
Each Guerrilla DAG node:
will listen for AttributeChanged callback on it’s sibling
(MNodeMessage)
will have read only access to it’s “sibling” via an
MObjectHandle to the maya node
Implementing Guerrilla DAG
GG DAG node
Maya node
Engine
Each Guerrilla DAG node:
will listen for AttributeChanged callback on it’s sibling
(MNodeMessage)
deals with AttributeChanged as appropriate for the
nodetype
Implementing Guerrilla DAG
GG DAG node
Maya node
Engine
Each Guerrilla DAG node:
Knows how to update the game engine
Transforms are special cases:
• Monitor child
added/removed
(MDagMessage)
• Keep an up-to-date list of
children
• Can push updates to
children
Implementing Guerrilla DAG
GG DAG node
Maya node
Child GG DAG node A
Child Maya node A
Child Maya node B
Child GG DAG node B
Implementing Guerrilla DAG
GG DAG node
Maya node
Child GG DAG node A
Child Maya node A
Child Maya node B
Child GG DAG node B
Child nodes can also
access siblings!
Practical example: Moving a group
Group1
pCube1
pCubeShape1
pCube2
pCubeShape2
Produces an identical Guerrilla
DAG hierarchy
Practical example: Moving a group
Group1
pCube1
pCubeShape1
pCube2
pCubeShape2
Attribute changed on group1
triggered
Practical example: Moving a group
Group1
pCube1
pCubeShape1
pCube2
pCubeShape2
Update cached matrix and
propagate
Practical example: Moving a group
Group1
pCube1
pCubeShape1
pCube2
pCubeShape2
Finally update the game
Results, single frame
Maya Updates
Maya Render
Deferred Render
Single frame CPU time distribution
Results, single frame
Maya Updates
Maya Render
Deferred Render
Single frame CPU time
distribution
•Performance increase 40x
•Most CPU time spend rendering
•Much better integration with Maya
 Hidden object groups
 view selected
 Maya LOD groups
Killzone Shadow Fall: Creating Art Tools For A New Generation Of Games
Scene file considerations
Killzone 3 (Playstation 3)
•Released in February 2011
•Average team size ~120
•5TB of working data
•Released in November 2013
•Average team size ~160
•12TB of working data
•Larger Maya files
•Longer load/export time
Killzone Shadow Fall (Playstation 4)
Reducing file-load times
In general: Small files load faster
Identify bottlenecks in file-load
Killzone 3 / early Killzone Shadow Fall: 80% of Maya file
• Mesh data
• Attribute data
Identify bottlenecks in file-load
Custom attributes on native
Maya nodes
Export-time state:
• Collapsing
• Physics
• Destructability
• Etc.
Attribute data
Attribute-data overhead in scene size
Each custom attribute on a Maya node requires:
Attribute-data overhead in scene size
Each custom attribute on a Maya node requires:
• An addAttr statement in the Maya file per instance
Attribute-data overhead in scene size
Each custom attribute on a Maya node requires:
• An addAttr statement in the Maya file per instance
• A setAttr statement in the Maya file per
instance(optional)
Attribute-data overhead in scene size
Each custom attribute on a Maya node requires:
• An addAttr statement in the Maya file per instance
• A setAttr statement in the Maya file per
instance(optional)
• A nodeAdded callback to install the attributes on a
newly instanced maya node
Attribute-data overhead in scene size
In Killzone Shadow Fall:
• ~20 custom attributes on a node
• ~40.000 nodes in an average maya scene containing
a level section
• ~50.000 Maya files stored
Solution: Extension attributes
Introduced in Maya 2012
• Allows static definition of a custom attribute
• Add to type of class once (e.g. transform)
• Attribute definition not stored in scene
• Defined in plugin
Benefits:
• No more addAttr calls required per instance
• No callback required on nodeAdded
Extension attributes results:
•Static scene (20.000 cubes)
Dynamic
attributes
Extension
attributes
Difference
Scene size 85MB 15MB - 80%
File load time 45 sec. 14 sec. - 66%
Result: Switching to Extension attributes
•Mesh data is large by nature
•Reduce amount of maya meshes required
•Look at the use of maya meshes
Mesh-data overhead in scene size
Mesh usage in Killzone 3
Building blocks
• Developed during Killzone 2
• Referencing of game-data
•Small section of re-usable static geometry
• Custom shape (MpxSurfaceShape)
Building blocks
Custom shape generates a Maya mesh
Custom shape
Maya mesh shape
2 Shapes for a transform
Building blocks
Why Maya meshes of game-data?
• Wireframe and smooth shaded views
• Snapping
• Software rendering for lightmaps
• Performance in viewport 1.0
•No snapping for artists (fixed in Maya 2013)
Problems and solutions with custom shapes (MPxSurfaceShape)
•No snapping for artists (fixed in Maya 2013)
•Custom shapes need to feel as Maya meshes for artists.
•Draw overrides, display layers, colors
Problems and solutions with custom shapes (MPxSurfaceShape)
•No snapping for artists (fixed in Maya 2013)
•Custom shapes need to feel as Maya meshes for artists.
•Draw overrides, display layers, colors
•Create maya meshes on demand for lightmaps
•Do not save these to file (delete after use)
Problems and solutions with custom shapes (MPxSurfaceShape)
•No snapping for artists (fixed in Maya 2013)
•Custom shapes need to feel as Maya meshes for artists.
•Draw overrides, display layers, colors
•Create maya meshes on demand for lightmaps
•Do not save these to file (delete after use)
•Drawing slow due to OpenGL state switching
•Use MpxModelView, or viewport 2.0
Problems and solutions with custom shapes (MPxSurfaceShape)
Viewport 2.0
What is viewport 2.0?
A new viewport for Autodesk Maya
• Designed for current generation hardware
• Less state switching, much less CPU overhead
• A new API for plugin drawing
• No more MPxLocatorNode::draw, MPxSurfaceShapeUI, etc
New possibilities of viewport 2.0
The new viewport 2.0 API offers:
• More performance
• Maya meshes at least x10
• More controlled integration with Maya
• Depth buffer sharing
• New features
• Mix and match MRenderOperations
Deferred renderer based on “Viewport 1”
• (MViewportRenderer class)
• Little control/integration with Maya
Artists lacked:
• Selection highlighting
• Depth between Maya and game geometry incorrect (locators/lights)
• No display of Maya meshes
Viewport 2.0: Integration
Comparing deferred and deferred_vp2
Killzone Shadow Fall: Creating Art Tools For A New Generation Of Games
Killzone Shadow Fall: Creating Art Tools For A New Generation Of Games
Comparing deferred and deferred_vp2
Proper depth support, no more clutter!
Comparing deferred and deferred_vp2
Proper depth support, no more clutter!
Comparing deferred and deferred_vp2
How does it work?
MRenderOverride
Custom Viewport 2.0 renderer
• MRenderOperation
A pass in MRenderOverride
• MSceneRender
Maya’s viewport 2 rendering pass
• MUserRenderOperation
Do your own!
Viewport 2.0: High level API overview
Render deferred beauty and depth (MUserRenderOperation)
Deferred Viewport 2.0: Rendering operations
Copy to Maya’s buffers (MQuadRender)
Deferred Viewport 2.0: Rendering operations
Render Maya’s view on top, preserving depth (MSceneRender)
Deferred Viewport 2.0: Rendering operations
Deferred Viewport 2.0: Rendering stages
•Allows artists to work directly with in-game rendering
•Selection highlighting, depth
•Full support for Maya native geometry/manipulators etc.
•Full control over what maya draws
•Rendering API Agnostic (DirectX or OpenGL)
Viewport 2.0: Integration advantages
Killzone Shadow Fall: Creating Art Tools For A New Generation Of Games
Debug modes as extra operations
Export settings:
• Visualize draw call count
• Single color for each draw call
Viewport 2.0: More then rendering
Visualize LOD states
Killzone Shadow Fall: Creating Art Tools For A New Generation Of Games
The Future
• Bringing Maya and game closer together
• Background scene loading (streaming)
• Storing scene elements in game-format only
• Multithreading
• Direct X rendering
Conclusions
• Integrating game-engine in Maya improves productivity
• Carefully thinking on scene configuration saves loads!
• Viewport 2.0 provides flexibility and new possibilities
Questions?
Thank you
Visit us at guerrilla-games.com

More Related Content

PPTX
Decima Engine: Visibility in Horizon Zero Dawn
PDF
Siggraph2016 - The Devil is in the Details: idTech 666
PDF
Screen Space Reflections in The Surge
PDF
An introduction to Realistic Ocean Rendering through FFT - Fabio Suriano - Co...
PPTX
Moving Frostbite to Physically Based Rendering
PDF
Killzone Shadow Fall Demo Postmortem
PDF
Lighting of Killzone: Shadow Fall
PPTX
The Rendering Technology of Killzone 2
Decima Engine: Visibility in Horizon Zero Dawn
Siggraph2016 - The Devil is in the Details: idTech 666
Screen Space Reflections in The Surge
An introduction to Realistic Ocean Rendering through FFT - Fabio Suriano - Co...
Moving Frostbite to Physically Based Rendering
Killzone Shadow Fall Demo Postmortem
Lighting of Killzone: Shadow Fall
The Rendering Technology of Killzone 2

What's hot (20)

PPTX
Lighting you up in Battlefield 3
PDF
【Unite Tokyo 2019】Unityプログレッシブライトマッパー2019
PDF
Rendering AAA-Quality Characters of Project A1
PPTX
Practical usage of Lightmass in Architectural Visualization (Kenichi Makaya...
PDF
Volumetric Lighting for Many Lights in Lords of the Fallen
PPT
Secrets of CryENGINE 3 Graphics Technology
PPTX
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
PPTX
The Rendering Pipeline - Challenges & Next Steps
PPT
Crysis Next-Gen Effects (GDC 2008)
PPT
The Unique Lighting of Mirror's Edge
PDF
Taking Killzone Shadow Fall Image Quality Into The Next Generation
PDF
「原神」におけるコンソールプラットフォーム開発
PDF
Deferred Rendering in Killzone 2
PPTX
Photogrammetry and Star Wars Battlefront
PDF
Precomputed Voxelized-Shadows for Large-scale Scene and Many lights
PDF
The Next Generation of PhyreEngine
PPSX
Dx11 performancereloaded
PPTX
Optimizing the Graphics Pipeline with Compute, GDC 2016
PDF
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
PPT
Light prepass
Lighting you up in Battlefield 3
【Unite Tokyo 2019】Unityプログレッシブライトマッパー2019
Rendering AAA-Quality Characters of Project A1
Practical usage of Lightmass in Architectural Visualization (Kenichi Makaya...
Volumetric Lighting for Many Lights in Lords of the Fallen
Secrets of CryENGINE 3 Graphics Technology
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
The Rendering Pipeline - Challenges & Next Steps
Crysis Next-Gen Effects (GDC 2008)
The Unique Lighting of Mirror's Edge
Taking Killzone Shadow Fall Image Quality Into The Next Generation
「原神」におけるコンソールプラットフォーム開発
Deferred Rendering in Killzone 2
Photogrammetry and Star Wars Battlefront
Precomputed Voxelized-Shadows for Large-scale Scene and Many lights
The Next Generation of PhyreEngine
Dx11 performancereloaded
Optimizing the Graphics Pipeline with Compute, GDC 2016
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
Light prepass
Ad

Viewers also liked (6)

PDF
Unreal Engineを使用した商用タイトルで のノンフォトリアルレンダリング(NPR)事例
PPTX
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
PPTX
Unity5とUE4の比較
PPTX
ニューラル機械翻訳の動向@IBIS2017
PPTX
UE4の攻略方法を伝授! より効率よく楽しく学ぶ ための鉄則について
PPT
【Unity道場】使って覚えるTileMap
Unreal Engineを使用した商用タイトルで のノンフォトリアルレンダリング(NPR)事例
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
Unity5とUE4の比較
ニューラル機械翻訳の動向@IBIS2017
UE4の攻略方法を伝授! より効率よく楽しく学ぶ ための鉄則について
【Unity道場】使って覚えるTileMap
Ad

Similar to Killzone Shadow Fall: Creating Art Tools For A New Generation Of Games (20)

PDF
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
PPTX
Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser ...
PPTX
Making a game with Molehill: Zombie Tycoon
PPTX
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
PDF
【Unite 2017 Tokyo】Unity5.6での2D新機能解説
PPTX
Developing Next-Generation Games with Stage3D (Molehill)
PDF
Building Mosaics
PDF
Cocos2d game programming 2
PPTX
Replatforming Legacy Packaged Applications: Block-by-Block with Minecraft
PPT
XNAPresentation
PPT
Intro to auto_desk_maya2015
PDF
MongoDB开发应用实践
PPTX
Unity - Internals: memory and performance
PPTX
Benoit fouletier guillaume martin unity day- modern 2 d techniques-gce2014
PDF
Distributed high-quality image manipulation and review in a virtual collabora...
PDF
A Morning with MongoDB Barcelona: Use Cases and Roadmap
PPTX
UGC In Game : A Brief History and How We Bring It To Mobile | Zhuo Yue
PDF
Continuous Delivery the hard way with Kubernetes
PPT
Pixel-Lab / Games:EDU / Michel Kripalani / Games Industry Overview and Trends
PPTX
Photon Session / Unite12 Conference
Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15
Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser ...
Making a game with Molehill: Zombie Tycoon
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
【Unite 2017 Tokyo】Unity5.6での2D新機能解説
Developing Next-Generation Games with Stage3D (Molehill)
Building Mosaics
Cocos2d game programming 2
Replatforming Legacy Packaged Applications: Block-by-Block with Minecraft
XNAPresentation
Intro to auto_desk_maya2015
MongoDB开发应用实践
Unity - Internals: memory and performance
Benoit fouletier guillaume martin unity day- modern 2 d techniques-gce2014
Distributed high-quality image manipulation and review in a virtual collabora...
A Morning with MongoDB Barcelona: Use Cases and Roadmap
UGC In Game : A Brief History and How We Bring It To Mobile | Zhuo Yue
Continuous Delivery the hard way with Kubernetes
Pixel-Lab / Games:EDU / Michel Kripalani / Games Industry Overview and Trends
Photon Session / Unite12 Conference

More from Guerrilla (19)

PPTX
Horizon Zero Dawn: An Open World QA Case Study
PPTX
Horizon Zero Dawn: A Game Design Post-Mortem
PPTX
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
PDF
Building Non-Linear Narratives in Horizon Zero Dawn
PPTX
Player Traversal Mechanics in the Vast World of Horizon Zero Dawn
PDF
The Real-time Volumetric Cloudscapes of Horizon Zero Dawn
PDF
The Production and Visual FX of Killzone Shadow Fall
PPTX
Out of Sight, Out of Mind: Improving Visualization of AI Info
PDF
The Next-Gen Dynamic Sound System of Killzone Shadow Fall
PDF
A Hierarchically-Layered Multiplayer Bot System for a First-Person Shooter
PPTX
Practical Occlusion Culling on PS3
PPT
Release This! Tools for a Smooth Release Cycle
PPT
Killzone 2 Multiplayer Bots
PPTX
Automatic Annotations in Killzone 3 and Beyond
PDF
The Creation of Killzone 3
PDF
The PlayStation®3’s SPUs in the Real World: A KILLZONE 2 Case Study
PPTX
Killzone's AI: Dynamic Procedural Tactics
PDF
The Guerrilla Guide to Game Code
KEY
Practical Occlusion Culling in Killzone 3
Horizon Zero Dawn: An Open World QA Case Study
Horizon Zero Dawn: A Game Design Post-Mortem
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
Building Non-Linear Narratives in Horizon Zero Dawn
Player Traversal Mechanics in the Vast World of Horizon Zero Dawn
The Real-time Volumetric Cloudscapes of Horizon Zero Dawn
The Production and Visual FX of Killzone Shadow Fall
Out of Sight, Out of Mind: Improving Visualization of AI Info
The Next-Gen Dynamic Sound System of Killzone Shadow Fall
A Hierarchically-Layered Multiplayer Bot System for a First-Person Shooter
Practical Occlusion Culling on PS3
Release This! Tools for a Smooth Release Cycle
Killzone 2 Multiplayer Bots
Automatic Annotations in Killzone 3 and Beyond
The Creation of Killzone 3
The PlayStation®3’s SPUs in the Real World: A KILLZONE 2 Case Study
Killzone's AI: Dynamic Procedural Tactics
The Guerrilla Guide to Game Code
Practical Occlusion Culling in Killzone 3

Recently uploaded (20)

PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PPTX
history of c programming in notes for students .pptx
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
ai tools demonstartion for schools and inter college
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PPT
Introduction Database Management System for Course Database
PDF
AI in Product Development-omnex systems
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
System and Network Administration Chapter 2
PDF
Digital Strategies for Manufacturing Companies
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PTS Company Brochure 2025 (1).pdf.......
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
history of c programming in notes for students .pptx
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
2025 Textile ERP Trends: SAP, Odoo & Oracle
ai tools demonstartion for schools and inter college
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Upgrade and Innovation Strategies for SAP ERP Customers
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Odoo POS Development Services by CandidRoot Solutions
Design an Analysis of Algorithms I-SECS-1021-03
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Introduction Database Management System for Course Database
AI in Product Development-omnex systems
Wondershare Filmora 15 Crack With Activation Key [2025
System and Network Administration Chapter 2
Digital Strategies for Manufacturing Companies
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises

Killzone Shadow Fall: Creating Art Tools For A New Generation Of Games

  • 1. Killzone Shadow Fall Creating art tools for a new generation of games Sander van der Steen Senior Technical Artist Guerrilla Games
  • 2. Intro •Guerrilla Games is based in Amsterdam •First party Sony studio since 2005 •Killzone Shadow Fall •Launch title for the Playstation 4 •Pipeline build around Maya
  • 3. Takeaway •Maya in the Guerrilla Games pipeline •Integrating a game-engine in Maya •Maya scene file considerations for next-gen •New possibilities of viewport 2.0
  • 4. Maya in the Guerrilla Games pipeline
  • 5. Simple Killzone Shadow Fall pipeline overview Asset creation Maya, Mudbox, Motion builder etc.
  • 6. • All assets are imported into Maya and placed in environment • Individual assets are tweaked Simple Killzone Shadow Fall pipeline overview Asset creation Environment Art
  • 7. • The levels with geometry transfer to the lighting team • “Complete” levels will be exported to game Simple Killzone Shadow fall pipeline overview Asset creation Environment Art Lighting Game
  • 8. Simple Killzone Shadow Fall pipeline overview Asset creation Environment Art Lighting Game • Many iterations required to reach production quality
  • 9. •Artist friendly + familiar •A lot of editing for free •Mesh edits (polygon tools) •Material edits (hypershade) •Less need to import/export to/from applications Autodesk Maya advantages
  • 10. Autodesk Maya in-engine viewport demo:
  • 11. Autodesk maya in-engine viewport demo:
  • 12. Autodesk Maya in-engine viewport demo:
  • 15. Maya needs to know how: •To render •Game engine specific •To communicate attribute changes •Mesh edits, position updates etc. •To read game data •Maya scene usage A lot of tools coding!
  • 16. A game-engine in Maya: Deferred rendering
  • 17. Initial implementation: •Brute force updates each frame (CPU limited) •Knowing what to update can be difficult •Limited integration •View selected, draw overrides, etc. Deferred rendering: Killzone 3
  • 18. Playstation 3 vs. Playstation 4 VS RAM Processing Power PS3 PS4 ~10x 16x
  • 19. Workstation performance: “Killzone 3” vs “Killzone Shadow Fall” VS RAM Single threaded processing power 2009 2013 ~2x ~4x
  • 20. Deferred rendering: Killzone 3 Maya Updates Maya Render Deferred Render Single frame CPU time distribution
  • 21. • Maya mesh edits? • Tricky hierarchical updates (from a parent transform) • Visibility changes • Maya LOD groups • Shader changes? Challenges for pushing updates
  • 22. Maya’s DAG tree might not be represented 1 on 1 in-game. • Callbacks? (MMessage) • Often no notion of groups or hierarchy • Only world-space transforms in-game Challenges for pushing updates 2
  • 23. •A lightweight representation of the DAG tree in Maya •It mirrors the DAG tree in Maya •Implemented using C++ callbacks (API MMessage class) Solution: Guerrilla DAG EngineGuerrilla DAGMaya
  • 24. • Node added callback (MDGMessage): • Create GG DAGnode • Transforms, lights, maya meshes, building blocks and sets (shaders) • Add GG DAGnode to database • Node removed callback (MDGMessage): • Cleanup Implementing Guerrilla DAG
  • 25. will have read only access to it’s sibling via an MObjectHandle to the maya node Implementing Guerrilla DAG GG DAG node Maya node Engine Each Guerrilla DAG node:
  • 26. will have read only access to it’s “sibling” via an MObjectHandle to the maya node Implementing Guerrilla DAG GG DAG node Maya node Engine Each Guerrilla DAG node: will listen for AttributeChanged callback on it’s sibling (MNodeMessage)
  • 27. will have read only access to it’s “sibling” via an MObjectHandle to the maya node Implementing Guerrilla DAG GG DAG node Maya node Engine Each Guerrilla DAG node: will listen for AttributeChanged callback on it’s sibling (MNodeMessage) deals with AttributeChanged as appropriate for the nodetype
  • 28. Implementing Guerrilla DAG GG DAG node Maya node Engine Each Guerrilla DAG node: Knows how to update the game engine
  • 29. Transforms are special cases: • Monitor child added/removed (MDagMessage) • Keep an up-to-date list of children • Can push updates to children Implementing Guerrilla DAG GG DAG node Maya node Child GG DAG node A Child Maya node A Child Maya node B Child GG DAG node B
  • 30. Implementing Guerrilla DAG GG DAG node Maya node Child GG DAG node A Child Maya node A Child Maya node B Child GG DAG node B Child nodes can also access siblings!
  • 31. Practical example: Moving a group Group1 pCube1 pCubeShape1 pCube2 pCubeShape2 Produces an identical Guerrilla DAG hierarchy
  • 32. Practical example: Moving a group Group1 pCube1 pCubeShape1 pCube2 pCubeShape2 Attribute changed on group1 triggered
  • 33. Practical example: Moving a group Group1 pCube1 pCubeShape1 pCube2 pCubeShape2 Update cached matrix and propagate
  • 34. Practical example: Moving a group Group1 pCube1 pCubeShape1 pCube2 pCubeShape2 Finally update the game
  • 35. Results, single frame Maya Updates Maya Render Deferred Render Single frame CPU time distribution
  • 36. Results, single frame Maya Updates Maya Render Deferred Render Single frame CPU time distribution •Performance increase 40x •Most CPU time spend rendering •Much better integration with Maya  Hidden object groups  view selected  Maya LOD groups
  • 39. Killzone 3 (Playstation 3) •Released in February 2011 •Average team size ~120 •5TB of working data
  • 40. •Released in November 2013 •Average team size ~160 •12TB of working data •Larger Maya files •Longer load/export time Killzone Shadow Fall (Playstation 4)
  • 42. In general: Small files load faster Identify bottlenecks in file-load
  • 43. Killzone 3 / early Killzone Shadow Fall: 80% of Maya file • Mesh data • Attribute data Identify bottlenecks in file-load
  • 44. Custom attributes on native Maya nodes Export-time state: • Collapsing • Physics • Destructability • Etc. Attribute data
  • 45. Attribute-data overhead in scene size Each custom attribute on a Maya node requires:
  • 46. Attribute-data overhead in scene size Each custom attribute on a Maya node requires: • An addAttr statement in the Maya file per instance
  • 47. Attribute-data overhead in scene size Each custom attribute on a Maya node requires: • An addAttr statement in the Maya file per instance • A setAttr statement in the Maya file per instance(optional)
  • 48. Attribute-data overhead in scene size Each custom attribute on a Maya node requires: • An addAttr statement in the Maya file per instance • A setAttr statement in the Maya file per instance(optional) • A nodeAdded callback to install the attributes on a newly instanced maya node
  • 49. Attribute-data overhead in scene size In Killzone Shadow Fall: • ~20 custom attributes on a node • ~40.000 nodes in an average maya scene containing a level section • ~50.000 Maya files stored
  • 50. Solution: Extension attributes Introduced in Maya 2012 • Allows static definition of a custom attribute • Add to type of class once (e.g. transform) • Attribute definition not stored in scene • Defined in plugin Benefits: • No more addAttr calls required per instance • No callback required on nodeAdded
  • 51. Extension attributes results: •Static scene (20.000 cubes) Dynamic attributes Extension attributes Difference Scene size 85MB 15MB - 80% File load time 45 sec. 14 sec. - 66% Result: Switching to Extension attributes
  • 52. •Mesh data is large by nature •Reduce amount of maya meshes required •Look at the use of maya meshes Mesh-data overhead in scene size
  • 53. Mesh usage in Killzone 3 Building blocks • Developed during Killzone 2 • Referencing of game-data •Small section of re-usable static geometry • Custom shape (MpxSurfaceShape)
  • 54. Building blocks Custom shape generates a Maya mesh Custom shape Maya mesh shape 2 Shapes for a transform
  • 55. Building blocks Why Maya meshes of game-data? • Wireframe and smooth shaded views • Snapping • Software rendering for lightmaps • Performance in viewport 1.0
  • 56. •No snapping for artists (fixed in Maya 2013) Problems and solutions with custom shapes (MPxSurfaceShape)
  • 57. •No snapping for artists (fixed in Maya 2013) •Custom shapes need to feel as Maya meshes for artists. •Draw overrides, display layers, colors Problems and solutions with custom shapes (MPxSurfaceShape)
  • 58. •No snapping for artists (fixed in Maya 2013) •Custom shapes need to feel as Maya meshes for artists. •Draw overrides, display layers, colors •Create maya meshes on demand for lightmaps •Do not save these to file (delete after use) Problems and solutions with custom shapes (MPxSurfaceShape)
  • 59. •No snapping for artists (fixed in Maya 2013) •Custom shapes need to feel as Maya meshes for artists. •Draw overrides, display layers, colors •Create maya meshes on demand for lightmaps •Do not save these to file (delete after use) •Drawing slow due to OpenGL state switching •Use MpxModelView, or viewport 2.0 Problems and solutions with custom shapes (MPxSurfaceShape)
  • 61. What is viewport 2.0? A new viewport for Autodesk Maya • Designed for current generation hardware • Less state switching, much less CPU overhead • A new API for plugin drawing • No more MPxLocatorNode::draw, MPxSurfaceShapeUI, etc
  • 62. New possibilities of viewport 2.0 The new viewport 2.0 API offers: • More performance • Maya meshes at least x10 • More controlled integration with Maya • Depth buffer sharing • New features • Mix and match MRenderOperations
  • 63. Deferred renderer based on “Viewport 1” • (MViewportRenderer class) • Little control/integration with Maya Artists lacked: • Selection highlighting • Depth between Maya and game geometry incorrect (locators/lights) • No display of Maya meshes Viewport 2.0: Integration
  • 64. Comparing deferred and deferred_vp2
  • 67. Comparing deferred and deferred_vp2 Proper depth support, no more clutter!
  • 68. Comparing deferred and deferred_vp2 Proper depth support, no more clutter!
  • 69. Comparing deferred and deferred_vp2
  • 70. How does it work? MRenderOverride Custom Viewport 2.0 renderer • MRenderOperation A pass in MRenderOverride • MSceneRender Maya’s viewport 2 rendering pass • MUserRenderOperation Do your own! Viewport 2.0: High level API overview
  • 71. Render deferred beauty and depth (MUserRenderOperation) Deferred Viewport 2.0: Rendering operations
  • 72. Copy to Maya’s buffers (MQuadRender) Deferred Viewport 2.0: Rendering operations
  • 73. Render Maya’s view on top, preserving depth (MSceneRender) Deferred Viewport 2.0: Rendering operations
  • 74. Deferred Viewport 2.0: Rendering stages
  • 75. •Allows artists to work directly with in-game rendering •Selection highlighting, depth •Full support for Maya native geometry/manipulators etc. •Full control over what maya draws •Rendering API Agnostic (DirectX or OpenGL) Viewport 2.0: Integration advantages
  • 77. Debug modes as extra operations Export settings: • Visualize draw call count • Single color for each draw call Viewport 2.0: More then rendering
  • 80. The Future • Bringing Maya and game closer together • Background scene loading (streaming) • Storing scene elements in game-format only • Multithreading • Direct X rendering
  • 81. Conclusions • Integrating game-engine in Maya improves productivity • Carefully thinking on scene configuration saves loads! • Viewport 2.0 provides flexibility and new possibilities
  • 83. Thank you Visit us at guerrilla-games.com