Black Desert Online. Taking MMO Development to the Next Level. Dongwook Ha Gwanghyeon Go

Similar documents
CS 231. Deformation simulation (and faces)

GUERRILLA DEVELOP CONFERENCE JULY 07 BRIGHTON

Human body animation. Computer Animation. Human Body Animation. Skeletal Animation

CS GAME PROGRAMMING Question bank

Building scalable 3D applications. Ville Miettinen Hybrid Graphics

CS 231. Deformation simulation (and faces)

Real-Time Universal Capture Facial Animation with GPU Skin Rendering

The Vegetation of Horizon Zero Dawn. Gilbert Sanders Principal Artist, Guerrilla Games

Advanced Graphics and Animation

Soft shadows. Steve Marschner Cornell University CS 569 Spring 2008, 21 February

Render-To-Texture Caching. D. Sim Dietrich Jr.

Optimizing and Profiling Unity Games for Mobile Platforms. Angelo Theodorou Senior Software Engineer, MPG Gamelab 2014, 25 th -27 th June

2.11 Particle Systems

The Illusion of Motion Making magic with textures in the vertex shader. Mario Palmero Lead Programmer at Tequila Works

Applications of Explicit Early-Z Z Culling. Jason Mitchell ATI Research

Vertex Shaders for Geometry Compression

CMSC 425: Lecture 10 Skeletal Animation and Skinning

CS248. Game Mechanics

Achieving High-Quality, Low-Cost Skin: An Environment Approach

Chapter 9 Animation System

Computer Graphics I Lecture 11

MAXIS-mizing Darkspore*: A Case Study of Graphic Analysis and Optimizations in Maxis Deferred Renderer

Object Space Lighting. Dan Baker Founder, Oxide Games

Dominic Filion, Senior Engineer Blizzard Entertainment. Rob McNaughton, Lead Technical Artist Blizzard Entertainment

Topics in Computer Animation

CS770/870 Spring 2017 Animation Basics

CS770/870 Spring 2017 Animation Basics

Synthesizing Realistic Facial Expressions from Photographs

Character Animation 1

3/1/2010. Acceleration Techniques V1.2. Goals. Overview. Based on slides from Celine Loscos (v1.0)

MODELING AND HIERARCHY


3D Production Pipeline

Chapter 19- Object Physics

Flowmap Generator River Tutorial

Shadow Techniques. Sim Dietrich NVIDIA Corporation

Texturing Theory. Overview. All it takes is for the rendered image to look right. -Jim Blinn 11/10/2018

Character Animation. Presented by: Pam Chow

Engineering Real- Time Applications with Wild Magic

Many rendering scenarios, such as battle scenes or urban environments, require rendering of large numbers of autonomous characters.

AGDC Per-Pixel Shading. Sim Dietrich

Chapter 5- Materials & Textures

#Short presentation of the guys

Images from 3D Creative Magazine. 3D Modelling Systems

GLOBAL SNOW Reference Guide

Designing for Performance. Arseny Kapoulkine

System Requirements:-

Streaming Massive Environments From Zero to 200MPH

character design pipeline) callum.html

Animation Essentially a question of flipping between many still images, fast enough

Point based global illumination is now a standard tool for film quality renderers. Since it started out as a real time technique it is only natural

Adaptive Point Cloud Rendering

Table of Contents. Questions or problems?

Attention to Detail! Creating Next Generation Content For Radeon X1800 and beyond

Three-Dimensional Computer Animation

Craig Peeper Software Architect Windows Graphics & Gaming Technologies Microsoft Corporation

Working with Metal Overview

3D Character Creation for the Unreal Game Engine Using Adobe Fuse

Ptex: Per-face Texture Mapping for Production Rendering

Consider a partially transparent object that is illuminated with two lights, one visible from each side of the object. Start with a ray from the eye

Index FEATURES LIST 2

Mount Points Mount Points is a super simple tool for connecting objects together and managing those relationships.

Graphics Performance Optimisation. John Spitzer Director of European Developer Technology

VISIT FOR THE LATEST UPDATES, FORUMS & MORE ASSETS.

Sculpting 3D Models. Glossary

#Short presentation of the guys

CSE452 Computer Graphics

The exam begins at 5:10pm and ends at 8:00pm. You must turn your exam in when time is announced or risk not having it accepted.

Textures. Texture coordinates. Introduce one more component to geometry

Resistance: Fall of Man. Insomniac Games

05 Mesh Animation. Steve Marschner CS5625 Spring 2016

Introduction. About me. About the book. About the book. Why a book? Introducing Character Animation with Blender. About me About the book

Index FEATURES LIST 2

Computer Graphics (CS 563) Lecture 4: Advanced Computer Graphics Image Based Effects: Part 1. Prof Emmanuel Agu

Cloth Simulations. 9.2 Physics - Cloth Simulations

SFX - Tricks of the Trade Fredrik Limsäter Partner / CTO Fido Stockholm

Real-Time Volumetric Smoke using D3D10. Sarah Tariq and Ignacio Llamas NVIDIA Developer Technology

A Trip Down The (2011) Rasterization Pipeline

1 INTRoduCTIon to BLENDER 1. 3 PREPARATIon 19

Beyond Programmable Shading Course ACM SIGGRAPH 2010 Bending the Graphics Pipeline

LECTURE 2: VR SYSTEMS AND VIRTUAL WORLDS

Final Exam CS 184: Foundations of Computer Graphics page 1 of 14 Fall 2016 Prof. James O Brien

New BFME2 World Builder Features Addendum to the BFME1 World Builder Manual

Game Technology. Lecture Physically Based Rendering. Dipl-Inform. Robert Konrad Polona Caserman, M.Sc.

DX10, Batching, and Performance Considerations. Bryan Dudash NVIDIA Developer Technology

Computer Animation. Conventional Animation

Breathing life into your applications: Animation with Qt 3D. Dr Sean Harmer Managing Director, KDAB (UK)

Integrating Physics into a Modern Game Engine. Object Collision. Various types of collision for an object:

Overview. Animation is a big topic We will concentrate on character animation as is used in many games today. humans, animals, monsters, robots, etc.

Research Method: I plan to research existing literature on the subject and conducting tests in the lab.

Game Development for

Com S 336 Final Project Ideas

The 3D rendering pipeline (our version for this class)

Creating Flood Effects in Uncharted 3. Eben Cook VFX Naughty Dog

After the release of Maxwell in September last year, a number of press articles appeared that describe VXGI simply as a technology to improve

Mattan Erez. The University of Texas at Austin

Example-Based Skeleton Extraction. Scott Schaefer Can Yuksel

Cloth Simulation on the GPU. Cyril Zeller NVIDIA Corporation

CS451Real-time Rendering Pipeline

NVIDIA. Interacting with Particle Simulation in Maya using CUDA & Maximus. Wil Braithwaite NVIDIA Applied Engineering Digital Film

Transcription:

Black Desert Online Taking MMO Development to the Next Level Dongwook Ha (dongwook@pearlabyss.com) Gwanghyeon Go (xdotdt@pearlabyss.com) 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 simulation 2. 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 model 3. 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 model 3. 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 model 3. 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 model 3. 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 model 3. 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

Easy resource creation 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 animation 1. 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 animation 1. 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 animation 1. 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 animation 1. 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 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

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 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 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!