Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15

Slides from the Game Industry Conference 2015.
* Second movie link is the same as first after conversion, here is the correct one https://youtu.be/SkEJ7ox2c8w

  • Be the first to comment

Shadow Warrior 2 and the evolution of the Roadhog Engine, GIC15

  1. 1. „Shadow Warrior 2 and the evolution of the Roadhog Engine” Jarosław Pleskot Senior Engine Programmer Flying Wild Hog 2015
  2. 2. Presentation overview 1. Introduction 2. The engine evolution a) Level construction pipeline b) Character destruction 3. Foliage system 2.0 a) Architecture b) Storage c) Rendering
  3. 3. Shadow Warrior vs Shadow Warrior * both games run on PS4 and XONE, SW was ported to Mac and Linux externally Shadow Warrior Shadow Warrior 2 Production time 18 months total > 2 years Team size 35 50 Engine programmers 2 7 PC Platform differences* PC DX9 32 bit, ported to DX11 32/64 bit PC DX11, 64 bit only Multiplayer - COOP Renderer Light Pre-Pass, nonlinear Deffered, linear, PBR
  4. 4. The engine evolution
  5. 5. Steps of the evolution Hard Reset (DX9, 32 bit) Shadow Warrior (DX9, 32 bit) Shadow Warrior (32/64 bit DX11/PS4/XONE) Shadow Warrior 2 (64 bit DX11, PS4, XONE) • First version of Roadhog Engine • Light pre-pass renderer • Main + render threads + a few worker threads (Havok, sound, etc) • Foliage system • Mirror • Cutscenes • Animation system extended • SSAO • Skinned decals • Job system introduced • Renderer ported • New platforms • Extensive use of job system • Physically based rendering • Multiplayer • Procedural character destruction • Big change in level pipeline 2011 2013 2014 2016
  6. 6. For all FWH games before Shadow Warrior 2 level geometry was constructed mainly outside game editor. • Hard reset: one big mesh + smaller meshes • Shadow Warrior: a few parts of a level (loaded or not) + smaller meshes + foliage • Game editor was simple, focused on gameplay design Level construction pipeline
  7. 7. Level construction pipeline • Shadow Warrior 2 has randomized maps • Four levels of randomization: • large scale randomization: level blocks connected together with special parts (connectors) + background blocks • small scale randomization : ability to change/hide/show parts of a block • random interiors • random weather
  8. 8. Level construction pipeline • Now level construction is done in the game editor • A lot of new features added including: • Terrain system(meshes creation+painting) • Geometry brush (simple meshes) • Wire modifier (static meshes deformation) • Scaling support
  9. 9. Character destruction Hard Reset: • ragdoll breaking • swapping chunks • spawning character parts as static meshes • swapping textures „Hard Reset – Case Study”, Tomasz Baran, 2012
  10. 10. Character destruction Hard Reset: + fast + low memory cost - limited to noncontinues meshes (robots) - predefined places of destruction
  11. 11. Character destruction Shadow Warrior: • ragdoll breaking with skinned mesh cloning • character is made of parts (standard, gore, skeleton) • spawning character parts as static meshes • skinned decals
  12. 12. Character destruction Shadow Warrior: + excellent quality of meshes + low CPU time cost - a lot of work for character artists - predefined places of cuts
  13. 13. Character destruction Shadow Warrior 2: • real-time procedural character splitting (mesh+ragdoll) • holes • spawning parts as static meshes • material modifiers • skinned decals YOUTUBE: Shadow Warrior 2 - 15 Glorious Minutes of Gameplay [E3 2015]
  14. 14. Character destruction Shadow Warrior 2: + unique cuts + less work for artists - more memory, splitting time - some constraints for artists Still under development look for future presentations for details
  15. 15. Foliage system 2.0
  16. 16. Foliage system before SW2 • Levels in Shadow Warrior created in 3dsmax • Spawn meshes technique invented * Spawn meshes – meshes with relative foliage density stored as vertex color * „The Techonology behind Shadow Warrior”, Jarosław Pleskot, 2014
  17. 17. Foliage system 2.0 – requirements • Denser foliage • Levels created in game editor • Random level generation (level blocks, predefined parts of a block changed) Must reinvent the foliage system! Use (spatially) bigger meshes and reduce an instance size to lower the gather time
  18. 18. Foliage system 2.0 – architecture • Main classes: • Foliage Area • Foliage Layer • Foliage Palette • Foliage Set • Foliage Element
  19. 19. Foliage system 2.0 – layers • Foliage layer - contains instance transformations in local space • One Foliage Layer per gameobject with foliage painted • Objects can be moved, rotated, scaled in editor, foliage will be updated properly Foliage Area Foliage Layer „A” Foliage Layer „B” Foliage Layer „N”…
  20. 20. Foliage system 2.0 – layers • On level start we build foliage grid using foliage layers of all created objects (random levels) Foliage Area Foliage Layer „A” Foliage Layer „B” Foliage Layer „N”… World Placeable „A” Placeable „B” Placeable „N”…
  21. 21. Foliage system 2.0 – layers • A foliage layer stores full FP32 positions and FP16 normals together with coloring values, set ids and seeds for a random number generator • Foliage can be blocked in some areas using foliage blockers (eg. don’t want foliage under a randomly placed fountain) • 100-200 layers per level block used • Artist can change brush parameters without repainting the layer
  22. 22. Foliage system 2.0 – palette • Painting using Foliage Set (Brush) • One set can contain many elements • Each element can specify many meshes and painting properties for all meshes in the element Foliage Palette Foliage Set „A” Foliage Element 1 Foliage Element N … Foliage Set „N” Foliage Element 1 Foliage Element N … …
  23. 23. Foliage system 2.0 – palette editor
  24. 24. Foliage system 2.0 – painting • Density counted for every set individually • Can erase instances of a single set or all of them at once • Painting on translucents as an option (e.g. over/under water) • Angle limit (eg. painting the stairs)
  25. 25. Foliage system 2.0 – coloring • Constant or background color mode • Can randomize color in HSL space • Can blend out coloring using object space Z coord and multiplier
  26. 26. Foliage system 2.0 – grids • Multi resolution grids (2 levels: 4x4 and 64x64 meters, one grid per batch) in Shadow Warrior DX11
  27. 27. Foliage system 2.0 – storage (grid) • Now more batches used and visibility test used for foliage (software Z buffer visibility) • One grid per batch changed to one grid for all batches to reduce grid total traverse time and to evade redundant visibility tests
  28. 28. Foliage system 2.0 – storage Instance size reduced from 32 to 16 bytes struct SObject { Half4 m_plane0; // 8 Half4 m_plane1; // 16 Half4 m_plane2; // 24 Vec3Packed64 m_position;// 32 }; struct SObject { Half4 m_euler; // 8 Int16 m_worldZ; // 10 UInt8 m_localX; // 11 UInt8 m_localY; // 12 UInt32 m_coloring; // 16 };
  29. 29. Foliage system 2.0 – storage • Rotation stored as FP16 euler angles • XY position relative to node corner • Z in worldspace • Position resolution ~1,6 cm, min/max Z = ±512 m • Size generated at runtime • Batch and LoD index in m_euler.W struct SObject { Half4 m_euler; // 8 Int16 m_worldZ; // 10 UInt8 m_localX; // 11 UInt8 m_localY; // 12 UInt32 m_coloring; // 16 };
  30. 30. Foliage system 2.0 – imposters Imposter system was created for static meshes • Diffuse + normal maps • Many angles Adopted for the foliage system: • Yaw only rotation • Sharpening • Background color
  31. 31. Foliage system 2.0 – imposters • Enabled by default • From 1 to 16 angles, default 4 • 3 texture sizes, default 128 (size == bigger dimension of single image, power of 2) • Range ratio, default 0.5 (?) • Generation background color • Sharpening option
  32. 32. Foliage system 2.0 – imposters meshes 100 % imposters, 100 % imposters, 20 %Level of detail: • 3 stages for high and ultra setting, • 2 stages for low setting (20% of instances) • Dissolve between stages
  33. 33. Foliage system 2.0 – imposters OFF
  34. 34. Foliage system 2.0 – imposters ON
  35. 35. Foliage system 2.0 – terrain • Foliage is usually placed on the terrain • Editing the terrain must update the foliage • When painting we get positions and normals from g-buffer • When updating terrain they are recaluclated from heightmap
  36. 36. Foliage system 2.0 – backend OFF• Traversing grid and gathering data for a renderer using one separate job, many arrays of vertices copied to a single dynamic VB / passed to imposter system • Rendering: - main G-Buffer pass - directional shadowmap pass - ids for picking, editor only
  37. 37. Foliage system 2.0 – to do list • Coloring on imposters • Dedicated instancing vertex format • Reaction to the passing characters ? Movies 1. https://youtu.be/hFz5OAVFSC8 2. https://youtu.be/SkEJ7ox2c8w
  38. 38. Acknowledgment Łukasz Zdunowski – Lead Artist Zbigniew Siatecki – Senior Environment Artist Marcin Sapiejewski – Senior Environment Artist Przemysław Witkowski – 3D/Engine Programmer Artur Maksara - Producer + our entire team and GIC staff.
  39. 39. Thank you for your attention Questions? Contact: Email: jarek.pleskot AT flyingwildhog.com Twitter: @JaroslawPleskot Facebook: Jarosław Pleskot

×