Black Desert Online · 2. Compute goal positions of bones in each cluster - Simpler shape matching...
Transcript of Black Desert Online · 2. Compute goal positions of bones in each cluster - Simpler shape matching...
Black Desert OnlineTaking MMO Development to the Next Level
Dongwook Ha ([email protected])
Gwanghyeon Go ([email protected])
2018-03-23
Black Desert Online
Challenges
Massive data and contents
Many characters on screen
Player characteristics
Large and dynamically changing world
Massive data and contents
Web-based contents
● Independent development track○ Separated server and database
○ Distribute network traffic
● Update online○ No need to build game client
● Natural multi-platform contents
Web-based contents
● Independent development track○ Separated server and database
○ Distribute network traffic
● Update online○ No need to build game client
● Natural multi-platform contents
Web-based contents
● Independent development track○ Separated server and database
○ Distribute network traffic
● Update online○ No need to build game client
● Natural multi-platform contents
Efficiently authoring behavior trees
● Over 4,400 variations of Monsters and NPCs
● XML-based script approach○ Easy to handle many conditions, branches and events○ Easy to reuse and extend
● Provide easy ways to debug and navigate script code
● Used for action validation check from server-side○ To detect hack users
Efficiently authoring behavior trees
● Over 4,400 variations of Monsters and NPCs
● XML-based script approach○ Easy to handle many conditions, branches and events○ Easy to reuse and extend
● Provide easy ways to debug and navigate script code
● Used for action validation check from server-side○ To detect hack users
Efficiently authoring behavior trees
● Over 4,400 variations of Monsters and NPCs
● XML-based script approach○ Easy to handle many conditions, branches and events○ Easy to reuse and extend
● Provide easy ways to debug and navigate script code
● Used for action validation check from server-side○ To detect hack users
Efficiently authoring behavior trees
● Over 4,400 variations of Monsters and NPCs
● XML-based script approach○ Easy to handle many conditions, branches and events○ Easy to reuse and extend
● Provide easy ways to debug and navigate script code
● Used for action validation check from server-side○ To detect hack users
Easy resource creation
● Automatic key-framing cloth animation in the production stage
1. High resolution cloth simulation2. Compute skeletal animation approximating the simulation result
Easy resource creation
● Simple secondary motion by vertex painting
1. Virtual point mass is attached to each influencing bone of painted vertices
2. Point masses are physically simulated using mass spring model3. Compute two skinning matrices from animation bones and point
masses (GPU)4. Interpolate by weight from color channel to get final skinning matrix
(GPU)
Easy resource creation
● Simple secondary motion by vertex painting
1. Virtual point mass is attached to each influencing bone of painted vertices
2. Point masses are physically simulated using mass spring model3. Compute two skinning matrices from animation bones and point
masses (GPU)4. Interpolate by weight from color channel to get final skinning matrix
(GPU)
Easy resource creation
● Simple secondary motion by vertex painting
1. Virtual point mass is attached to each influencing bone of painted vertices
2. Point masses are physically simulated using mass spring model3. Compute two skinning matrices from animation bones and point
masses (GPU)4. Interpolate by weight from color channel to get final skinning matrix
(GPU)
Easy resource creation
● Simple secondary motion by vertex painting
1. Virtual point mass is attached to each influencing bone of painted vertices
2. Point masses are physically simulated using mass spring model3. Compute two skinning matrices from animation bones and point
masses (GPU)4. Interpolate by weight from color channel to get final skinning matrix
(GPU)
Easy resource creation
● Simple secondary motion by vertex painting
1. Virtual point mass is attached to each influencing bone of painted vertices
2. Point masses are physically simulated using mass spring model3. Compute two skinning matrices from animation bones and point
masses (GPU)4. Interpolate by weight from color channel to get final skinning matrix
(GPU)
Easy resource creation
● Simple secondary motion by vertex painting
➤ Pros:- Easy to use- Minimum simulation cost- Requires no additional bones- Skinned mesh dependent
● Let’s run in-game simulation for cloth animation○ Responsive cloth
● Bone-based simulation for cloth-like animation○ Fast and stable○ Inspired by “Meshless Deformations Based on Shape Matching”,
M. Müller, B. Heidelberger, M. Teschner, M. Gross. Proceedings of SIGGRAPH'05, 2005
○ Bone cluster based deformation for higher order bending motion
Easy resource creation
● Bone-based simulation for cloth-like animation1. Driving bones are divided into overlapping clusters
- Each cluster has 2~3 bones
2. Compute goal positions of bones in each cluster
- Simpler shape matching
- Use roughly guiding animation as shape matching target
3. Bones in the overlapping regions have multiple goal positions
- Averaged
4. Integration:
Easy resource creation
● Bone-based simulation for cloth-like animation1. Driving bones are divided into overlapping clusters
- Each cluster has 2~3 bones
2. Compute goal positions of bones in each cluster
- Simpler shape matching
- Use roughly guiding animation as shape matching target
3. Bones in the overlapping regions have multiple goal positions
- Averaged
4. Integration:
Easy resource creation
● Bone-based simulation for cloth-like animation1. Driving bones are divided into overlapping clusters
- Each cluster has 2~3 bones
2. Compute goal positions of bones in each cluster
- Simpler shape matching
- Use roughly guiding animation as shape matching target
3. Bones in the overlapping regions have multiple goal positions
- Averaged
4. Integration:
Easy resource creation
● Bone-based simulation for cloth-like animation1. Driving bones are divided into overlapping clusters
- Each cluster has 2~3 bones
2. Compute goal positions of bones in each cluster
- Simpler shape matching
- Use roughly guiding animation as shape matching target
3. Bones in the overlapping regions have multiple goal positions
- Averaged
4. Integration:
Easy resource creation
Easy resource creation
● Bone-based simulation for cloth-like animation○ Collision with body
■ Each bone can have collision planes
➤ Pros:- Stable and fast (not a mass-spring model)- If necessary, animators can guide overall movement- Easy to implement
Many characters on screen
Animation system overview
● Non-uniform scaling● Multi-layered● Parametric blending● Additive blending● Inverse kinematics● Skinned-mesh morphing ● Simulation integrated
● 16 playable classes (It’s growing!)○ has nearly 1,500 animation clips for each○ over 150MB for each
● Characters don’t share animation clips○ Accurate retargeting doesn’t come cheap
● Infeasible to load all animation clips for the visible characters
Dynamic animation loading
● 16 playable classes (It’s growing!)○ has nearly 1,500 animation clips for each○ over 150MB for each
● Characters don’t share animation clips○ Accurate retargeting doesn’t come cheap
● Infeasible to load all animation clips for the visible characters
Dynamic animation loading
● 16 playable classes (It’s growing!)○ has nearly 1,500 animation clips for each○ over 150MB for each
● Characters don’t share animation clips○ Accurate retargeting doesn’t come cheap
● Infeasible to load all animation clips for the visible characters
Dynamic animation loading
Dynamic animation loading
● Fully dynamic loading○ Loading when needed, unloading when it’s not○ Easy to see motion lag due to loading time
● Dynamic loading with preloaded animation packs○ Generated for each character in the production stage○ Contains first 1~2 key-frames of animation clips○ Play animation using the key-frames in the pack while loading the
entire clip in a thread
Dynamic animation loading
● Fully dynamic loading○ Loading when needed, unloading when it’s not○ Easy to see motion lag due to loading time
● Dynamic loading with preloaded animation packs○ Generated for each character in the production stage○ Contains first 1~2 key-frames of animation clips○ Play animation using the key-frames in the pack while loading the
entire clip in a thread
Mockup models for distant characters
● Problems ○ What if hundreds of players gather together
■ Many different costumes
○ If you are moving fast, many characters are transient■ Unnecessary data loading and unloading
● Let’s render mockup models first○ Simplified model or default costume of the class○ Defer loading character data○ Save I/O throughput and memory
Mockup models for distant characters
● Problems ○ What if hundreds of players gather together
■ Many different costumes
○ If you are moving fast, many characters are transient■ Unnecessary data loading and unloading
● Let’s render mockup models first○ Simplified model or default costume of the class○ Defer loading character data○ Save I/O throughput and memory
Limiting details by distance
● Limit features by distance○ Effect / Sound○ Morphing / Facial animation / IK / Physics simulation○ and so on
● Limit the number of feature instances
Black Desert Mobile
Player Characteristics
Player characteristics
Players want their characters to look different
Players want their characters to be of high quality, have details
Players want to interact with their characters and others
Player characteristics
Character rendering
• Fake subsurface scattering for performance reason• Fake eyeball specular that players can always see• Cornea occlusion• Classical Kajiya-Kay anisotropic hair rendering• Vertically unwrapped hair texture without using direction map• Hair depth fixup for post processing• Random texel micro adjustment for security reason• Great meshes and textures! (most important)
Player characteristics
Character rendering
• Fake subsurface scattering for performance reason• Fake eyeball specular that players can always see• Cornea occlusion• Classical Kajiya-Kay anisotropic hair rendering• Vertically unwrapped hair texture without using direction map• Hair depth fixup for post processing• Random texel micro adjustment for security reason• Great meshes and textures! (most important)
Player characteristics
Character rendering
• Fake subsurface scattering for performance reason• Fake eyeball specular that players can always see• Cornea occlusion• Classical Kajiya-Kay anisotropic hair rendering• Vertically unwrapped hair texture without using direction map• Hair depth fixup for post processing• Random texel micro adjustment for security reason• Great meshes and textures! (most important)
Player characteristics
Character rendering
• Fake subsurface scattering for performance reason• Fake eyeball specular that players can always see• Cornea occlusion• Classical Kajiya-Kay anisotropic hair rendering• Vertically unwrapped hair texture without using direction map• Hair depth fixup for post processing• Random texel micro adjustment for security reason• Great meshes and textures! (most important)
Player characteristics
Character rendering
• Fake subsurface scattering for performance reason• Fake eyeball specular that players can always see• Cornea occlusion• Classical Kajiya-Kay anisotropic hair rendering• Vertically unwrapped hair texture without using direction map• Hair depth fixup for post processing• Random texel micro adjustment for security reason• Great meshes and textures! (most important)
Player characteristics
Character customization
• Face and body deformation (adjust bone transform)• Vertex morphing for facial expression with index matching• Blending among several wrinkle maps will be applied• Areal mask for makeup (adjust color, intensity and reflection)• Multitexturing for tattoo• Skinned beard meshes• Curly hair (adjust uv only)• The more elements, the better it is
Player characteristics
Character customization
• Face and body deformation (adjust bone transform)• Vertex morphing for facial expression with index matching• Blending among several wrinkle maps will be applied• Areal mask for makeup (adjust color, intensity and reflection)• Multitexturing for tattoo• Skinned beard meshes• Curly hair (adjust uv only)• The more elements, the better it is
Player characteristics
Character customization
• Face and body deformation (adjust bone transform)• Vertex morphing for facial expression with index matching• Blending among several wrinkle maps will be applied• Areal mask for makeup (adjust color, intensity and reflection)• Multitexturing for tattoo• Skinned beard meshes• Curly hair (adjust uv only)• The more elements, the better it is
Player characteristics
Character customization
• Face and body deformation (adjust bone transform)• Vertex morphing for facial expression with index matching• Blending among several wrinkle maps will be applied• Areal mask for makeup (adjust color, intensity and reflection)• Multitexturing for tattoo• Skinned beard meshes• Curly hair (adjust uv only)• The more elements, the better it is
Player characteristics
Character customization
• Face and body deformation (adjust bone transform)• Vertex morphing for facial expression with index matching• Blending among several wrinkle maps will be applied• Areal mask for makeup (adjust color, intensity and reflection)• Multitexturing for tattoo• Skinned beard meshes• Curly hair (adjust uv only)• The more elements, the better it is
Player characteristics
Player characteristics
Character detail
• My character has much more detail• My character looks at me naturally (look IK)• Interact with other PCs and NPCs (collision reaction)• Sweats after doing hard work (sweat map)• Gets wet in the water
Player characteristics
Character detail
• My character has much more detail• My character looks at me naturally (look IK)• Interact with other PCs and NPCs (collision reaction)• Sweats after doing hard work (sweat map)• Gets wet in the water
Player characteristics
Player characteristics
Character detail
• My character has much more detail• My character looks at me naturally (look IK)• Interact with other PCs and NPCs (collision reaction)• Sweats after doing hard work (sweat map)• Gets wet in the water
Large and dynamically changing world
Large and dynamically changing world
We wanted a very long distance field
We wanted players to be able to move anywhere w/o loading
We wanted players to live in a continuously changing world
Large and dynamically changing world
Efficient and easy world building process for speed!
• Voxel based terrain to make cave-style spots easier and faster• Sketch Up is used for houses and castles including interiors• Massive alpha blended weathering decals built-in on meshes• Massive alpha blended screen space decals• Efficient prefab usage with easy construction tools• Fast resource and script change reflection
Large and dynamically changing world
Efficient and easy world building process for speed!
• Voxel based terrain to make cave-style spots easier and faster• Sketch Up is used for houses and castles including interiors• Massive alpha blended weathering decals built-in on meshes• Massive alpha blended screen space decals• Efficient prefab usage with easy construction tools• Fast resource and script change reflection
Large and dynamically changing world
Efficient and easy world building process for speed!
• Voxel based terrain to make cave-style spots easier and faster• Sketch Up is used for houses and castles including interiors• Massive alpha blended weathering decals built-in on meshes• Massive alpha blended screen space decals• Efficient prefab usage with easy construction tools• Fast resource and script change reflection
Large and dynamically changing world
Efficient and easy world building process for speed!
• Voxel based terrain to make cave-style spots easier and faster• Sketch Up is used for houses and castles including interiors• Massive alpha blended weathering decals built-in on meshes• Massive alpha blended screen space decals• Efficient prefab usage with easy construction tools• Fast resource and script change reflection
Large and dynamically changing world
Efficient and easy world building process for speed!
• Voxel based terrain to make cave-style spots easier and faster• Sketch Up is used for houses and castles including interiors• Massive alpha blended weathering decals built-in on meshes• Massive alpha blended screen space decals• Efficient prefab usage with easy construction tools• Fast resource and script change reflection
Large and dynamically changing world
Multithreaded world streaming was necessary
• World data is separated into many square sectors• Sectors are streamed by queueing always prior to characters• Fast moving solution 1 - Rough first then detailed• Fast moving solution 2 - Bound the player into certain range• Single material LOD for long distance scenery• Real time collision data construction (for size)• Texture streaming (low level mipmap and albedo tex first)• Balancing many threads (important for efficient CPU usage)
Large and dynamically changing world
Multithreaded world streaming was necessary
• World data is separated into many square sectors• Sectors are streamed by queueing always prior to characters• Fast moving solution 1 - Rough first then detailed• Fast moving solution 2 - Bound the player into certain range• Single material LOD for long distance scenery• Real time collision data construction (for size)• Texture streaming (low level mipmap and albedo tex first)• Balancing many threads (important for efficient CPU usage)
Large and dynamically changing world
Multithreaded world streaming was necessary
• World data is separated into many square sectors• Sectors are streamed by queueing always prior to characters• Fast moving solution 1 - Rough first then detailed• Fast moving solution 2 - Bound the player into certain range• Single material LOD for long distance scenery• Real time collision data construction (for size)• Texture streaming (low level mipmap and albedo tex first)• Balancing many threads (important for efficient CPU usage)
Large and dynamically changing world
Multithreaded world streaming was necessary
• World data is separated into many square sectors• Sectors are streamed by queueing always prior to characters• Fast moving solution 1 - Rough first then detailed• Fast moving solution 2 - Bound the player into certain range• Single material LOD for long distance scenery• Real time collision data construction (for size)• Texture streaming (low level mipmap and albedo tex first)• Balancing many threads (important for efficient CPU usage)
Large and dynamically changing world
Multithreaded world streaming was necessary
• World data is separated into many square sectors• Sectors are streamed by queueing always prior to characters• Fast moving solution 1 - Rough first then detailed• Fast moving solution 2 - Bound the player into certain range• Single material LOD for long distance scenery• Real time collision data construction (for size)• Texture streaming (low level mipmap and albedo tex first)• Balancing many threads (important for efficient CPU usage)
Large and dynamically changing world
Multithreaded world streaming was necessary
• World data is separated into many square sectors• Sectors are streamed by queueing always prior to characters• Fast moving solution 1 - Rough first then detailed• Fast moving solution 2 - Bound the player into certain range• Single material LOD for long distance scenery• Real time collision data construction (for size)• Texture streaming (low level mipmap and albedo tex first)• Balancing many threads (important for efficient CPU usage)
Large and dynamically changing world
Multithreaded character streaming
• Similar process with world streaming• Natural treatments until it is ready to be rendered• Single material LOD for not fully prepared characters• Texture streaming • Preload animation data (few frames)• Player characters first
Large and dynamically changing world
Multithreaded character streaming
• Similar process with world streaming• Natural treatments until it is ready to be rendered• Single material LOD for not fully prepared characters• Texture streaming • Preload animation data (few frames)• Player characters first
Large and dynamically changing world
Multithreaded character streaming
• Similar process with world streaming• Natural treatments until it is ready to be rendered• Single material LOD for not fully prepared characters• Texture streaming • Preload animation data (few frames)• Player characters first
Large and dynamically changing world
Dynamic weather
• Time of day with the simplified atmospheric scattering• Instanced particle clouds• Instanced particle rain and snow• Varying rain pools and snowdrift according to precipitation• Lightning and water flowing effect
Large and dynamically changing world
Dynamic weather
• Time of day with the simplified atmospheric scattering• Instanced particle clouds• Instanced particle rain and snow• Varying rain pools and snowdrift according to precipitation• Lightning and water flowing effect
Large and dynamically changing world
Dynamic weather
• Time of day with the simplified atmospheric scattering• Instanced particle clouds• Instanced particle rain and snow• Varying rain pools and snowdrift according to precipitation• Lightning and water flowing effect
Large and dynamically changing world
Dynamic weather
• Time of day with the simplified atmospheric scattering• Instanced particle clouds• Instanced particle rain and snow• Varying rain pools and snowdrift according to precipitation• Lightning and water flowing effect
Large and dynamically changing world
Dynamic scene reconstruction
• Duration based• Region based• Weather elements• Localized elements• Easily turn on/off with switches
Large and dynamically changing world
Path finding solution
• Our own voxel based navigation path finder• Raycast, areal occlusion test• Server side validation check for security reasons• This information was previously made public, check below
http://igc.inven.co.kr/detail.php?code=Y29kZTI3
Large and dynamically changing world
Path finding solution
• Our own voxel based navigation path finder• Raycast, areal occlusion test• Server side validation check for security reasons• This information was previously made public, check below
http://igc.inven.co.kr/detail.php?code=Y29kZTI3
Now we are remastering
• Improved high dynamic range rendering• Improved physically based rendering• Improved SSR, SSAO, post processing with YEBIS• Improved ocean rendering• Voxel cone tracing• Physically based atmospheric scattering with volume clouds• Lots of other quality and performance tuning…• Console platform (XB1)
Let’s talk about the above at GDC 2019
Thank you!
Special thanks
All Pearl Abyss members!