Techniques for Improving Large World and Terrain Streaming
- Slides: 46
Techniques for Improving Large World and Terrain Streaming Danie Conradie Trinigy Inc.
Overview Online and MMO games have very specific requirements > Large shared environments for players to interact in instead of distinct game “levels” > Introduces many new technical and design challenges >
Challenges > Naïve approach of loading all the game resources does not scale to large worlds: Too long loading times > Too large memory footprint > Co-operative editing required >
Goal Don’t load all the data > Dynamically load and unload data as needed > Maintain the minimum required data set during runtime >
Basic Streaming
Basic Streaming > Keep all the object instances in memory > > Instances don’t need a lot of memory (Position, rotation, scale, state, …) Stream required resources in/out > Resource data (meshes, textures, etc. ) requires significantly more
Basic Streaming Load resources in the region around the character > Unload resources that are not visible anymore >
Basic Streaming > Problems: Need to keep all objects in memory > Little control over streaming behavior > Irregular and unpredictable streaming > Difficult to schedule without resource dependencies >
Requirements for Streaming How can we improve on this? > What do we need from the art tools? > What do we need from the engine run-time? > How should we prepare (bake) the data? >
Pipeline Art Tools Setup data for streaming Bake Engine Stream optimized data
Tool requirements for Streaming
Tool requirements for Streaming Cooperative editing > Stream-able world data > Resource dependencies > Grouping >
Tool requirements for Streaming > Cooperative editing Multiple people should be able to edit the world together > Need to solve/prevent editing conflicts > Store a scene as multiple layer files > Layers can be locked and edited independently by different people > Synchronization with revision control >
Tool requirements for Streaming > Stream-able world data No monolithic world files > Break large files up into separate files for editing and streaming > Art tools must promote and enable the reuse of mesh instances >
Tool requirements for Streaming > Resource dependencies > Calculate and store all the resource dependencies in the world Scene Texture Mesh Shader Texture
Tool requirements for Streaming Grouping > Gives us more control over how data is: > Edited > Baked > Streamed >
Tool requirements for Streaming > Terrain Sectors Automatic grouping as a 2 D grid > Sectors give us manageable data chunks to edit, bake and stream >
Tool requirements for Streaming > Terrain Sectors Terrain data can be 100 s of MB > Only keep relevant sectors in memory > Stream in, swap out as required > Lower detail approximations for distant sectors >
Tool requirements for Streaming > Terrain Sectors Real-time editing and painting > Supports cooperative editing > Locking is per sector > Editor automatically locks and takes care of continuities >
Tool requirements for Streaming > Zones Object instances can be grouped spatially into zones by level designers > Each zone generates a separate file that can be streamed in dynamically as the player approaches > Allows us to spawn/destroy groups of objects >
Tool requirements for Streaming
Tool requirements for Streaming > Data processing Procedural/raw data while editing > Baked data for the runtime > Art Tools Engine Editor data Optimized data
Tool requirements for Streaming Data processing: Terrain Sector > One file per sector containing: > Height map > Texture mixing maps > > Bake > n most significant textures Vegetation probability maps > Pre-compute object instances
Tool requirements for Streaming > Data processing: Terrain Sector > Level of Detail > Pre-compute error metrics > World-space normal maps > Custom index lists
Tool requirements for Streaming > Data processing: Zones Build a list of resources used by each zone at export time > The editor knows which resources (and dependencies) were used >
Tool requirements for Streaming > Data processing: Zones At runtime the resource list will be processed and loaded in order > Sort according to dependencies so loading doesn’t need to stall (e. g. a shader library is a prerequisite for loading a mesh) >
Tool requirements for Streaming
Tool requirements for Streaming Stone 01. dds Stone 02. dds Interior 01. dds Castle. mesh Wall 01. dds Window 01. dds House 01. mesh Window 02. dds Door 01. dds House 02. mesh Brick 01. dds Wood 01. dds
Tool requirements for Streaming Stone 01. dds Stone 02. dds Interior 01. dds Castle. mesh Wall 01. dds Window 01. dds House 01. mesh Window 02. dds Door 01. dds House 02. mesh Brick 01. dds Wood 01. dds
Tool requirements for Streaming Stone 01. dds Stone 02. dds Interior 01. dds Castle. mesh Wall 01. dds Window 01. dds House 01. mesh Window 02. dds Door 01. dds House 02. mesh Brick 01. dds Wood 01. dds
Tool requirements for Streaming Stone 01. dds Stone 02. dds Interior 01. dds Castle. mesh Wall 01. dds Window 01. dds House 01. mesh Window 02. dds Door 01. dds House 02. mesh Brick 01. dds Wood 01. dds
Tool requirements for Streaming Ref. Count Stone 01. dds Stone 02. dds Interior 01. dds 1 Wall 01. dds Window 01. dds 1 Window 02. dds Door 01. dds 2 Brick 01. dds Wood 01. dds 2 1 2 Castle. mesh 3 House 01. mesh 1 House 02. mesh 1
Tool requirements for Streaming Sort List Stone 01. dds Stone 02. dds Interior 01. dds 1 Wall 01. dds Window 01. dds 1 Window 02. dds Door 01. dds 2 Brick 01. dds Wood 01. dds 2 1 2 Castle. mesh 3 House 01. mesh 1 House 02. mesh 1
Tool requirements for Streaming Sort List Castle. mesh Window 01. dds Stone 02. dds Interior 01. dds Wall 01. dds 3 Window 02. dds Door 01. dds 2 Brick 01. dds Wood 01. dds 2 1 1 2 1 House 01. mesh 1 House 02. mesh 1
Run-time requirements for Streaming
Run-time requirements for Streaming Resource Management System > Streaming Zones > Streaming Terrain Sectors >
Run-time requirements for Streaming > Resource Management System Dynamically loading/unloading > Reference counting > Memory usage information > Resource dependency information >
Run-time requirements for Streaming Time stamp to evaluate the last time a resource was used > Resources that have not been used for x seconds can be unloaded > Hard and soft memory limits > Distinct resource pools for textures, meshes etc. >
Run-time requirements for Streaming > <resource viewer screenshot>
Run-time requirements for Streaming: Zones Streaming Zones > Pre-caching for all resources: > > Separate thread: > Load resource data from file > Optional data conversion/generation > Main thread: Create resource
Run-time requirements for Streaming: Zones > Create all object instances in the zone once the resources have been loaded This is fast since the resources have already been loaded > Optionally spread over time (i. e. start with largest/most important objects) >
Run-time requirements for Streaming: Zones > What if the player teleports directly into a zone with pending resources? > Option A: Show replacement resources (e. g. very low res textures) > Option B: Objects pop up as soon as relevant resources are available > Option C: Pause the game and load remaining resources from the main thread
Run-time requirements for Streaming: Terrain > Terrain sectors Distant sectors load and render using lower detail geometry and textures > Stream in high detail versions > Use world-space normal maps to avoid lighting artifacts/popping >
Video
Questions?
- Ball setting and streaming
- Twitter sentiment analysis spark streaming
- Service quality and productivity
- Difficulties of improving quality business
- Improving own learning and performance examples
- Improving vocabulary with word parts and context clues
- Improving vocabulary with word parts and context clues
- Improving decision making and managing knowledge
- Mesa and scarp terrain
- A section of the nile river with rapids and rocky terrain
- The prime of miss jean brodie streaming
- Dash dynamic adaptive streaming over http
- Paul merolla
- Hadoop streaming python
- United discovery streaming
- Network streaming telemetry
- _mm_add_ss
- Streaming current detectors
- Severance streaming
- Realtime streaming protocol
- Multimedia streaming protocols
- Theoplayer cmaf
- Data stream adalah
- Record streaming video android
- Wegstein method
- Sec 2 streaming subject combination 2021
- Osama streaming
- Mac mishmarot
- Video streaming viva
- Atrides et labdacides
- Lola system
- Streaming media delivery
- Wyse streaming manager
- Streaming xml parser
- Cytoplasmic streaming
- Clocksync
- Streaming
- Secondary 2 streaming
- Ip voice
- Hadoop assignment help
- Streaming architecture patterns
- Cytoplasmic streaming
- Joyce carol oates against nature
- Dgim algorithm
- Qnqqq
- Unt kanopy
- Digimuse - music streaming platform