SlideShare a Scribd company logo
1 of 21
Data Management and
Streaming Strategies
in Drakensang Online
Andre “Floh” Weissflog
Head of Development Berlin
Bigpoint GmbH
Browser Games Forum 2011
2
• Hack & Slay F2P MMO.
• Embedded in browser.
• No client download or installation.
• Impressive 3D graphics.
• 8 months from concept to Closed Beta.
3
4
Team & Technology Background
5
Drakensang Online is developed by the same team that also worked on the previous
single-player Drakensang “boxed titles”.
Very skilled and experienced team, very solid and proven production pipeline
and processes (and very little online experience).
The technology behind our client and server is the Nebula3 engine (~250k lines of C/C++, 12
years of continuous development).
Epic stories will be written about how we went from building offline boxed-titles to
creating an MMO running in a browser in 8 months.
…but not Today…
Today we’ll talk about data management
and streaming in Drakensang Online…
Data Management Core Demands
6
• Browser Game Experience Click & play, no installation.
• Fast Startup Time Start in seconds, not minutes
• On-Demand Streaming: Only download what’s needed
• Client-Side Caching: CDN traffic cost, user experience
• Robustness: The web is slow and unreliable.
• Minimize Data Size: But keep graphics quality high!
Drakensang Online: The Assets
7
• 50 interconnected maps
• 240 monsters
• 120 NPCs
• 1400 items
• 300 animated effects
317 MB uncompressed
139 MB compressed
27035 filesAsset Types
Textures
Audio
Meshes
Navigation
Locale
Maps
Anims
Other
Two Main Achievements
8
Aggressive Data Size Reduction
We’re working with 3%of the data size we’ve been used to.
This is mainly an organizational achievement.
All departments have to agree on data size budgets…
…even if it’s hard (e.g. for the graphics guys)
Seamless Data Streaming During Gameplay
That’s mainly a programming achievement.
Client engine must support asynchronous I/O from the
ground up.
Maps as “static web pages”
9
This was really the initial idea behind our data
management.
Our maps reference many small asset files “somewhere
on the web”, just like a static web page.
All asset files are loaded asynchronously. Render loop
can deal with assets which are not yet loaded.
Really clever local file caching prevents unnecessary
HTTP requests (down to no HTTP traffic at all if the
cache is completely up-to-date).
Asset Size Reduction: Extreme Granularity
10
Our maps are built from really small and simple 3D objects:
Extremely granular set of
reusable objects. Each with
only a few dozen to a few
hundred triangles.
One map may have 100k of those
micro 3D objects, but only a few
dozen DIFFERENT objects.
That’s very good for data
size. But…
OMG TEH
DRAW CALLS !!
Nebula3 uses hardware
instancing and runtime-
baking to reduce draw
calls from about 5000
down to 250 per frame.
Asset Size Reduction: Textures
11
Typical texture
dimensions:
256 x 256
128 x 128
64 x 64
All textures are DXT compressed (and then – like all other files – ZIP compressed)
Bump textures use DXT5NM compression, aka the Carmack-Trick
(that’s why they’re grey, not purple).
Texture types:
color
bump
emissive
specular
Typical download sizes for textures are somewhere between 5 kByte
and 40 kByte.
Textures are aggressively shared and reused.
Asset Size: Lights, Shadows& Decals
12
All lighting and shadowing is completely dynamic. No light-maps needed.
We use deferred Pre-Pass-Lighting to enable “infinite point-lights” with
moderate fill-rate requirements.
Volumetric Decals are used to hide the tile-nature of the ground.
Post-Effects add bloom, fog, color saturation and color balancing.
Two Streaming Strategies:
13
1) ON DEMAND:
Client requests data right when it’s needed.
IO requests are handled asynchronously.
May take several seconds until data is ready.
Until then:
Render a placeholder or…
Render nothing.
2) BACKGROUND STREAMING:
Low-priority background thread just for cache warm-up.
One streaming list per map created during build process.
Download and update items in local file cache.
Very speculative, can’t really predict what’s needed next.
The web as a (really unreliable) hard-disc
14
Nebula3 always had a powerful I/O system:
• async I/O is standard, not the exception
• “massively multi-threaded”, currently 10 I/O-threads
• pluggable filesystems
• all file paths are URLs
We built an “HTTP filesystem” on top of this:
• only uses HTTP GET requests
• transparently replaces local-disc file I/O
• MD5 checksums for all files
• ZIP compression for all files
• hierarchical caching system
• directory walking and file-exists checks
• CDN support
• reasonably fail-safe (high latencies, dropped
connections, corrupt
downloads, tampering…)
“Massively Multi-Threaded IO”
15
IO Dispatcher
Thread
Main Thread
Render Thread
Audio Thread
… Thread
Incoming IO Requests
IO Threads
Cache
(Local HD)
Cache
Hit?Yes
Web
Server
No
Update Cache
Served IO Requests
• up to 10 HTTP-GET requests concurrently in flight (tweakable)
• low-prio IO requests don’t block high-prio requests
• no difference in high-level code between file I/O and http I/O
Hierarchical File Cache
16
ROOT MD5 KEY
e4680c8372bc6c527043a97631b404d7
Directory “Table Of Content” File
Leaf TOCs Leaf TOCs Leaf TOCs
1. Daily-Build-Process: compress files and create per-file MD5 hashes.
2. Each directory has a “Table Of Content” file with all MD5 hashes.
3. TOCs are also compressed and MD5’d.
4. ...with one single “Directory TOC” at the top.
5. …and a single Root MD5 Key for the Directory TOC.
• Client receives Root MD5 Key at startup.
• Downloads TOC files if not in cache…
• TOC files provide MD5 keys for files.
• Zero HTTP GETs if cache is up-to-date!
The Cache Chain
17
We basically have a 3-level cache for assets:
RAM DISC
CDN
PROXY
CDN
ORIGIN
Level 1 Level 2 Level 3
RAM Cache Hit?
Resource objects are shared in RAM using their ResourceIDs.
DISC Cache Hit?
MD5-named file must exist in local file cache.
MD5 of actual file-content must match build-time MD5 hash.
CDN Proxy Cache Hit?
MD5-hash appended to HTTP GET URL, forces a cache miss if proxy only has
out-of-date file of the same name.
CDN Origin Server has the definite data.
404’s Considered Harmful
18
Remember this from the previous page:
RAM DISC
CDN
PROXY
CDN
ORIGIN
1st 2nd 3rd 4th
“Sh*t happens”.
Trying to load non-existing assets will happen with such a complex data set.
HTTP requests for non-existing files will cut through all the way to the origin server.
CDN’s usually cache 404’s for a few seconds, but it’s better to not bother the web servers with
404’s at all.
Our Table-Of-Content-Files let us detect non-existing files on the client without a server
roundtrip.
Conclusion
19
• Data management is the job of the whole team.
• Careful, early asset size planning.
• Team must commit on size budgets.
• “Programming Magic” alone doesn’t solve problems.
• Programming, Level Design and Art Department must work hand in hand.
• Oh, and: Check your CDN cost plan (if you pay per HTTP request, our solution is sub-optimal)
Thank You 
Questions?
20
Find us on
Bigpoint GmbH
Alexanderstraße 5
10178 Berlin
Germany
Bigpoint Inc.
500 Howard Street
Suite 300
San Francisco, CA 94105
Bigpoint Distribuição de
Entretenimento Online Ltda.
Av. Brig. Faria Lima
3729 cj. 528
04538-905 São Paulo
Brazil
Bigpoint GmbH
Andre Weissflog
Head of Development Berlin
Drehbahn 47-48
20354 Hamburg
Germany
Tel +49 40.88 14 13 - 0
Fax +49 40.88 14 13 - 11
info@bigpoint.net
www.bigpoint.net
Contact us
Bigpoint International Services
Limited
1 Villa Zimmermann
Ta’Xbiex Terrace
XBX 1035 Ta’Xbiex
Malta
21

More Related Content

What's hot

High performance computing
High performance computingHigh performance computing
High performance computingGuy Tel-Zur
 
Designing Data-Intensive Applications_ The Big Ideas Behind Reliable, Scalabl...
Designing Data-Intensive Applications_ The Big Ideas Behind Reliable, Scalabl...Designing Data-Intensive Applications_ The Big Ideas Behind Reliable, Scalabl...
Designing Data-Intensive Applications_ The Big Ideas Behind Reliable, Scalabl...SindhuVasireddy1
 
A Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and HudiA Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and HudiDatabricks
 
Geohashing with Uber’s H3 Geospatial Index
Geohashing with Uber’s H3 Geospatial Index Geohashing with Uber’s H3 Geospatial Index
Geohashing with Uber’s H3 Geospatial Index HPCC Systems
 
Scaling into Billions of Nodes and Relationships with Neo4j Graph Data Science
Scaling into Billions of Nodes and Relationships with Neo4j Graph Data ScienceScaling into Billions of Nodes and Relationships with Neo4j Graph Data Science
Scaling into Billions of Nodes and Relationships with Neo4j Graph Data ScienceNeo4j
 
Making Structured Streaming Ready for Production
Making Structured Streaming Ready for ProductionMaking Structured Streaming Ready for Production
Making Structured Streaming Ready for ProductionDatabricks
 
Strata NY 2018: The deconstructed database
Strata NY 2018: The deconstructed databaseStrata NY 2018: The deconstructed database
Strata NY 2018: The deconstructed databaseJulien Le Dem
 
Pinot: Enabling Real-time Analytics Applications @ LinkedIn's Scale
Pinot: Enabling Real-time Analytics Applications @ LinkedIn's ScalePinot: Enabling Real-time Analytics Applications @ LinkedIn's Scale
Pinot: Enabling Real-time Analytics Applications @ LinkedIn's ScaleSeunghyun Lee
 
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Flink Forward
 
Financial Event Sourcing at Enterprise Scale
Financial Event Sourcing at Enterprise ScaleFinancial Event Sourcing at Enterprise Scale
Financial Event Sourcing at Enterprise Scaleconfluent
 
Synchronous Commands over Apache Kafka (Neil Buesing, Object Partners, Inc) K...
Synchronous Commands over Apache Kafka (Neil Buesing, Object Partners, Inc) K...Synchronous Commands over Apache Kafka (Neil Buesing, Object Partners, Inc) K...
Synchronous Commands over Apache Kafka (Neil Buesing, Object Partners, Inc) K...confluent
 
Building Robust ETL Pipelines with Apache Spark
Building Robust ETL Pipelines with Apache SparkBuilding Robust ETL Pipelines with Apache Spark
Building Robust ETL Pipelines with Apache SparkDatabricks
 
My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)
My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)
My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)NTT DATA Technology & Innovation
 
Building a Virtual Data Lake with Apache Arrow
Building a Virtual Data Lake with Apache ArrowBuilding a Virtual Data Lake with Apache Arrow
Building a Virtual Data Lake with Apache ArrowDremio Corporation
 
Modeling Cybersecurity with Neo4j, Based on Real-Life Data Insights
Modeling Cybersecurity with Neo4j, Based on Real-Life Data InsightsModeling Cybersecurity with Neo4j, Based on Real-Life Data Insights
Modeling Cybersecurity with Neo4j, Based on Real-Life Data InsightsNeo4j
 
Workshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data ScienceWorkshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data ScienceNeo4j
 
Oracle Failover Database Cluster with Grid Infrastructure 12c
Oracle Failover Database Cluster with Grid Infrastructure 12cOracle Failover Database Cluster with Grid Infrastructure 12c
Oracle Failover Database Cluster with Grid Infrastructure 12cTrivadis
 
PySpark Best Practices
PySpark Best PracticesPySpark Best Practices
PySpark Best PracticesCloudera, Inc.
 
Spark 2.x Troubleshooting Guide
Spark 2.x Troubleshooting GuideSpark 2.x Troubleshooting Guide
Spark 2.x Troubleshooting GuideIBM
 

What's hot (20)

High performance computing
High performance computingHigh performance computing
High performance computing
 
Designing Data-Intensive Applications_ The Big Ideas Behind Reliable, Scalabl...
Designing Data-Intensive Applications_ The Big Ideas Behind Reliable, Scalabl...Designing Data-Intensive Applications_ The Big Ideas Behind Reliable, Scalabl...
Designing Data-Intensive Applications_ The Big Ideas Behind Reliable, Scalabl...
 
A Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and HudiA Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and Hudi
 
Geohashing with Uber’s H3 Geospatial Index
Geohashing with Uber’s H3 Geospatial Index Geohashing with Uber’s H3 Geospatial Index
Geohashing with Uber’s H3 Geospatial Index
 
Scaling into Billions of Nodes and Relationships with Neo4j Graph Data Science
Scaling into Billions of Nodes and Relationships with Neo4j Graph Data ScienceScaling into Billions of Nodes and Relationships with Neo4j Graph Data Science
Scaling into Billions of Nodes and Relationships with Neo4j Graph Data Science
 
Making Structured Streaming Ready for Production
Making Structured Streaming Ready for ProductionMaking Structured Streaming Ready for Production
Making Structured Streaming Ready for Production
 
Strata NY 2018: The deconstructed database
Strata NY 2018: The deconstructed databaseStrata NY 2018: The deconstructed database
Strata NY 2018: The deconstructed database
 
Pinot: Enabling Real-time Analytics Applications @ LinkedIn's Scale
Pinot: Enabling Real-time Analytics Applications @ LinkedIn's ScalePinot: Enabling Real-time Analytics Applications @ LinkedIn's Scale
Pinot: Enabling Real-time Analytics Applications @ LinkedIn's Scale
 
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
 
Financial Event Sourcing at Enterprise Scale
Financial Event Sourcing at Enterprise ScaleFinancial Event Sourcing at Enterprise Scale
Financial Event Sourcing at Enterprise Scale
 
Synchronous Commands over Apache Kafka (Neil Buesing, Object Partners, Inc) K...
Synchronous Commands over Apache Kafka (Neil Buesing, Object Partners, Inc) K...Synchronous Commands over Apache Kafka (Neil Buesing, Object Partners, Inc) K...
Synchronous Commands over Apache Kafka (Neil Buesing, Object Partners, Inc) K...
 
Building Robust ETL Pipelines with Apache Spark
Building Robust ETL Pipelines with Apache SparkBuilding Robust ETL Pipelines with Apache Spark
Building Robust ETL Pipelines with Apache Spark
 
My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)
My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)
My Experiences as a Beginner of OpenJDK Contributor (jLove Conference)
 
Building a Virtual Data Lake with Apache Arrow
Building a Virtual Data Lake with Apache ArrowBuilding a Virtual Data Lake with Apache Arrow
Building a Virtual Data Lake with Apache Arrow
 
Modeling Cybersecurity with Neo4j, Based on Real-Life Data Insights
Modeling Cybersecurity with Neo4j, Based on Real-Life Data InsightsModeling Cybersecurity with Neo4j, Based on Real-Life Data Insights
Modeling Cybersecurity with Neo4j, Based on Real-Life Data Insights
 
Workshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data ScienceWorkshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data Science
 
Intro to Pinot (2016-01-04)
Intro to Pinot (2016-01-04)Intro to Pinot (2016-01-04)
Intro to Pinot (2016-01-04)
 
Oracle Failover Database Cluster with Grid Infrastructure 12c
Oracle Failover Database Cluster with Grid Infrastructure 12cOracle Failover Database Cluster with Grid Infrastructure 12c
Oracle Failover Database Cluster with Grid Infrastructure 12c
 
PySpark Best Practices
PySpark Best PracticesPySpark Best Practices
PySpark Best Practices
 
Spark 2.x Troubleshooting Guide
Spark 2.x Troubleshooting GuideSpark 2.x Troubleshooting Guide
Spark 2.x Troubleshooting Guide
 

Viewers also liked

Credit Rating Assessment & Impact
Credit Rating Assessment & ImpactCredit Rating Assessment & Impact
Credit Rating Assessment & ImpactResurgent India
 
Huertas y figueras audiencia juvenil
Huertas y figueras   audiencia juvenilHuertas y figueras   audiencia juvenil
Huertas y figueras audiencia juvenilJesús Bustos García
 
Prospektus usaha bazzocha
Prospektus usaha bazzochaProspektus usaha bazzocha
Prospektus usaha bazzochaBasri Adhi
 
Going Global Innovation (GGI) - Innovation Information Forum
Going Global Innovation (GGI) - Innovation Information ForumGoing Global Innovation (GGI) - Innovation Information Forum
Going Global Innovation (GGI) - Innovation Information ForumMaRS Discovery District
 
Programmatic display ad clickers ARE your clients
Programmatic display ad clickers ARE your clientsProgrammatic display ad clickers ARE your clients
Programmatic display ad clickers ARE your clientsGilles Giudicelli
 
Centro educativo petén
Centro educativo peténCentro educativo petén
Centro educativo peténSoypattyGm
 
SIA311 Better Together: Microsoft Exchange Server 2010 and Microsoft Forefron...
SIA311 Better Together: Microsoft Exchange Server 2010 and Microsoft Forefron...SIA311 Better Together: Microsoft Exchange Server 2010 and Microsoft Forefron...
SIA311 Better Together: Microsoft Exchange Server 2010 and Microsoft Forefron...Louis Göhl
 
Devi ahilya vishwavidyalaya prospectus 2016 17 educationiconnect.com 786200...
Devi ahilya vishwavidyalaya prospectus 2016   17 educationiconnect.com 786200...Devi ahilya vishwavidyalaya prospectus 2016   17 educationiconnect.com 786200...
Devi ahilya vishwavidyalaya prospectus 2016 17 educationiconnect.com 786200...00007123
 
Presentacion club saldo movistar movilnet-digitel-henry
Presentacion club saldo movistar movilnet-digitel-henryPresentacion club saldo movistar movilnet-digitel-henry
Presentacion club saldo movistar movilnet-digitel-henryHenry Brito Delgado
 

Viewers also liked (20)

Usos del internet
Usos del internetUsos del internet
Usos del internet
 
Credit Rating Assessment & Impact
Credit Rating Assessment & ImpactCredit Rating Assessment & Impact
Credit Rating Assessment & Impact
 
Huertas y figueras audiencia juvenil
Huertas y figueras   audiencia juvenilHuertas y figueras   audiencia juvenil
Huertas y figueras audiencia juvenil
 
Silabo central
Silabo centralSilabo central
Silabo central
 
Alimentacionninos
AlimentacionninosAlimentacionninos
Alimentacionninos
 
Prospektus usaha bazzocha
Prospektus usaha bazzochaProspektus usaha bazzocha
Prospektus usaha bazzocha
 
Artículo rocas 2
Artículo rocas 2Artículo rocas 2
Artículo rocas 2
 
IurisTalent
IurisTalentIurisTalent
IurisTalent
 
Aprender vivir con toc
Aprender vivir con tocAprender vivir con toc
Aprender vivir con toc
 
Going Global Innovation (GGI) - Innovation Information Forum
Going Global Innovation (GGI) - Innovation Information ForumGoing Global Innovation (GGI) - Innovation Information Forum
Going Global Innovation (GGI) - Innovation Information Forum
 
Programmatic display ad clickers ARE your clients
Programmatic display ad clickers ARE your clientsProgrammatic display ad clickers ARE your clients
Programmatic display ad clickers ARE your clients
 
Las flakis
Las flakisLas flakis
Las flakis
 
Basta no-soy-indio
Basta no-soy-indioBasta no-soy-indio
Basta no-soy-indio
 
Fix 3M 2016
Fix 3M 2016Fix 3M 2016
Fix 3M 2016
 
Centro educativo petén
Centro educativo peténCentro educativo petén
Centro educativo petén
 
SIA311 Better Together: Microsoft Exchange Server 2010 and Microsoft Forefron...
SIA311 Better Together: Microsoft Exchange Server 2010 and Microsoft Forefron...SIA311 Better Together: Microsoft Exchange Server 2010 and Microsoft Forefron...
SIA311 Better Together: Microsoft Exchange Server 2010 and Microsoft Forefron...
 
Geografia
GeografiaGeografia
Geografia
 
Tabaquismo. belen
Tabaquismo. belenTabaquismo. belen
Tabaquismo. belen
 
Devi ahilya vishwavidyalaya prospectus 2016 17 educationiconnect.com 786200...
Devi ahilya vishwavidyalaya prospectus 2016   17 educationiconnect.com 786200...Devi ahilya vishwavidyalaya prospectus 2016   17 educationiconnect.com 786200...
Devi ahilya vishwavidyalaya prospectus 2016 17 educationiconnect.com 786200...
 
Presentacion club saldo movistar movilnet-digitel-henry
Presentacion club saldo movistar movilnet-digitel-henryPresentacion club saldo movistar movilnet-digitel-henry
Presentacion club saldo movistar movilnet-digitel-henry
 

Similar to Data Management and Streaming Strategies in Drakensang Online

Caching Methodology & Strategies
Caching Methodology & StrategiesCaching Methodology & Strategies
Caching Methodology & StrategiesTiệp Vũ
 
Caching methodology and strategies
Caching methodology and strategiesCaching methodology and strategies
Caching methodology and strategiesTiep Vu
 
Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2aspyker
 
Frontera: open source, large scale web crawling framework
Frontera: open source, large scale web crawling frameworkFrontera: open source, large scale web crawling framework
Frontera: open source, large scale web crawling frameworkScrapinghub
 
The Pendulum Swings Back: Converged and Hyperconverged Environments
The Pendulum Swings Back: Converged and Hyperconverged EnvironmentsThe Pendulum Swings Back: Converged and Hyperconverged Environments
The Pendulum Swings Back: Converged and Hyperconverged EnvironmentsTony Pearson
 
Cloud computing UNIT 2.1 presentation in
Cloud computing UNIT 2.1 presentation inCloud computing UNIT 2.1 presentation in
Cloud computing UNIT 2.1 presentation inRahulBhole12
 
VMworld 2013: VMware Mirage Storage and Network Deduplication, DEMYSTIFIED
VMworld 2013: VMware Mirage Storage and Network Deduplication, DEMYSTIFIED VMworld 2013: VMware Mirage Storage and Network Deduplication, DEMYSTIFIED
VMworld 2013: VMware Mirage Storage and Network Deduplication, DEMYSTIFIED VMworld
 
Gears of Perforce: AAA Game Development Challenges
Gears of Perforce: AAA Game Development ChallengesGears of Perforce: AAA Game Development Challenges
Gears of Perforce: AAA Game Development ChallengesPerforce
 
Leveraging Structured Data To Reduce Disk, IO & Network Bandwidth
Leveraging Structured Data To Reduce Disk, IO & Network BandwidthLeveraging Structured Data To Reduce Disk, IO & Network Bandwidth
Leveraging Structured Data To Reduce Disk, IO & Network BandwidthPerforce
 
Alexander Sibiryakov- Frontera
Alexander Sibiryakov- FronteraAlexander Sibiryakov- Frontera
Alexander Sibiryakov- FronteraPyData
 
Experience In Building Scalable Web Sites Through Infrastructure's View
Experience In Building Scalable Web Sites Through Infrastructure's ViewExperience In Building Scalable Web Sites Through Infrastructure's View
Experience In Building Scalable Web Sites Through Infrastructure's ViewPhuwadon D
 
Design and Implementation of a High- Performance Distributed Web Crawler
Design and Implementation of a High- Performance Distributed Web CrawlerDesign and Implementation of a High- Performance Distributed Web Crawler
Design and Implementation of a High- Performance Distributed Web CrawlerGeorge Ang
 
PAC 2019 virtual Mark Tomlinson
PAC 2019 virtual Mark TomlinsonPAC 2019 virtual Mark Tomlinson
PAC 2019 virtual Mark TomlinsonNeotys
 
Data Policies for the Kafka-API with WebAssembly | Alexander Gallego, Vectorized
Data Policies for the Kafka-API with WebAssembly | Alexander Gallego, VectorizedData Policies for the Kafka-API with WebAssembly | Alexander Gallego, Vectorized
Data Policies for the Kafka-API with WebAssembly | Alexander Gallego, VectorizedHostedbyConfluent
 
Data Lake and the rise of the microservices
Data Lake and the rise of the microservicesData Lake and the rise of the microservices
Data Lake and the rise of the microservicesBigstep
 
Data Grids with Oracle Coherence
Data Grids with Oracle CoherenceData Grids with Oracle Coherence
Data Grids with Oracle CoherenceBen Stopford
 
OSDC 2017 | Something Openshift Kubernetes Containers by Kristian Köhntopp
OSDC 2017 | Something Openshift Kubernetes Containers by Kristian KöhntoppOSDC 2017 | Something Openshift Kubernetes Containers by Kristian Köhntopp
OSDC 2017 | Something Openshift Kubernetes Containers by Kristian KöhntoppNETWAYS
 

Similar to Data Management and Streaming Strategies in Drakensang Online (20)

A faster web
A faster webA faster web
A faster web
 
Caching Methodology & Strategies
Caching Methodology & StrategiesCaching Methodology & Strategies
Caching Methodology & Strategies
 
Caching methodology and strategies
Caching methodology and strategiesCaching methodology and strategies
Caching methodology and strategies
 
Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2
 
Frontera: open source, large scale web crawling framework
Frontera: open source, large scale web crawling frameworkFrontera: open source, large scale web crawling framework
Frontera: open source, large scale web crawling framework
 
The Pendulum Swings Back: Converged and Hyperconverged Environments
The Pendulum Swings Back: Converged and Hyperconverged EnvironmentsThe Pendulum Swings Back: Converged and Hyperconverged Environments
The Pendulum Swings Back: Converged and Hyperconverged Environments
 
Cloud computing UNIT 2.1 presentation in
Cloud computing UNIT 2.1 presentation inCloud computing UNIT 2.1 presentation in
Cloud computing UNIT 2.1 presentation in
 
VMworld 2013: VMware Mirage Storage and Network Deduplication, DEMYSTIFIED
VMworld 2013: VMware Mirage Storage and Network Deduplication, DEMYSTIFIED VMworld 2013: VMware Mirage Storage and Network Deduplication, DEMYSTIFIED
VMworld 2013: VMware Mirage Storage and Network Deduplication, DEMYSTIFIED
 
Gears of Perforce: AAA Game Development Challenges
Gears of Perforce: AAA Game Development ChallengesGears of Perforce: AAA Game Development Challenges
Gears of Perforce: AAA Game Development Challenges
 
Leveraging Structured Data To Reduce Disk, IO & Network Bandwidth
Leveraging Structured Data To Reduce Disk, IO & Network BandwidthLeveraging Structured Data To Reduce Disk, IO & Network Bandwidth
Leveraging Structured Data To Reduce Disk, IO & Network Bandwidth
 
Alexander Sibiryakov- Frontera
Alexander Sibiryakov- FronteraAlexander Sibiryakov- Frontera
Alexander Sibiryakov- Frontera
 
Experience In Building Scalable Web Sites Through Infrastructure's View
Experience In Building Scalable Web Sites Through Infrastructure's ViewExperience In Building Scalable Web Sites Through Infrastructure's View
Experience In Building Scalable Web Sites Through Infrastructure's View
 
CERNBox: Site Report
CERNBox: Site ReportCERNBox: Site Report
CERNBox: Site Report
 
Design and Implementation of a High- Performance Distributed Web Crawler
Design and Implementation of a High- Performance Distributed Web CrawlerDesign and Implementation of a High- Performance Distributed Web Crawler
Design and Implementation of a High- Performance Distributed Web Crawler
 
PAC 2019 virtual Mark Tomlinson
PAC 2019 virtual Mark TomlinsonPAC 2019 virtual Mark Tomlinson
PAC 2019 virtual Mark Tomlinson
 
Data Policies for the Kafka-API with WebAssembly | Alexander Gallego, Vectorized
Data Policies for the Kafka-API with WebAssembly | Alexander Gallego, VectorizedData Policies for the Kafka-API with WebAssembly | Alexander Gallego, Vectorized
Data Policies for the Kafka-API with WebAssembly | Alexander Gallego, Vectorized
 
globus.pptx
globus.pptxglobus.pptx
globus.pptx
 
Data Lake and the rise of the microservices
Data Lake and the rise of the microservicesData Lake and the rise of the microservices
Data Lake and the rise of the microservices
 
Data Grids with Oracle Coherence
Data Grids with Oracle CoherenceData Grids with Oracle Coherence
Data Grids with Oracle Coherence
 
OSDC 2017 | Something Openshift Kubernetes Containers by Kristian Köhntopp
OSDC 2017 | Something Openshift Kubernetes Containers by Kristian KöhntoppOSDC 2017 | Something Openshift Kubernetes Containers by Kristian Köhntopp
OSDC 2017 | Something Openshift Kubernetes Containers by Kristian Köhntopp
 

Recently uploaded

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Recently uploaded (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

Data Management and Streaming Strategies in Drakensang Online

  • 1. Data Management and Streaming Strategies in Drakensang Online Andre “Floh” Weissflog Head of Development Berlin Bigpoint GmbH Browser Games Forum 2011
  • 2. 2 • Hack & Slay F2P MMO. • Embedded in browser. • No client download or installation. • Impressive 3D graphics. • 8 months from concept to Closed Beta.
  • 3. 3
  • 4. 4
  • 5. Team & Technology Background 5 Drakensang Online is developed by the same team that also worked on the previous single-player Drakensang “boxed titles”. Very skilled and experienced team, very solid and proven production pipeline and processes (and very little online experience). The technology behind our client and server is the Nebula3 engine (~250k lines of C/C++, 12 years of continuous development). Epic stories will be written about how we went from building offline boxed-titles to creating an MMO running in a browser in 8 months. …but not Today… Today we’ll talk about data management and streaming in Drakensang Online…
  • 6. Data Management Core Demands 6 • Browser Game Experience Click & play, no installation. • Fast Startup Time Start in seconds, not minutes • On-Demand Streaming: Only download what’s needed • Client-Side Caching: CDN traffic cost, user experience • Robustness: The web is slow and unreliable. • Minimize Data Size: But keep graphics quality high!
  • 7. Drakensang Online: The Assets 7 • 50 interconnected maps • 240 monsters • 120 NPCs • 1400 items • 300 animated effects 317 MB uncompressed 139 MB compressed 27035 filesAsset Types Textures Audio Meshes Navigation Locale Maps Anims Other
  • 8. Two Main Achievements 8 Aggressive Data Size Reduction We’re working with 3%of the data size we’ve been used to. This is mainly an organizational achievement. All departments have to agree on data size budgets… …even if it’s hard (e.g. for the graphics guys) Seamless Data Streaming During Gameplay That’s mainly a programming achievement. Client engine must support asynchronous I/O from the ground up.
  • 9. Maps as “static web pages” 9 This was really the initial idea behind our data management. Our maps reference many small asset files “somewhere on the web”, just like a static web page. All asset files are loaded asynchronously. Render loop can deal with assets which are not yet loaded. Really clever local file caching prevents unnecessary HTTP requests (down to no HTTP traffic at all if the cache is completely up-to-date).
  • 10. Asset Size Reduction: Extreme Granularity 10 Our maps are built from really small and simple 3D objects: Extremely granular set of reusable objects. Each with only a few dozen to a few hundred triangles. One map may have 100k of those micro 3D objects, but only a few dozen DIFFERENT objects. That’s very good for data size. But… OMG TEH DRAW CALLS !! Nebula3 uses hardware instancing and runtime- baking to reduce draw calls from about 5000 down to 250 per frame.
  • 11. Asset Size Reduction: Textures 11 Typical texture dimensions: 256 x 256 128 x 128 64 x 64 All textures are DXT compressed (and then – like all other files – ZIP compressed) Bump textures use DXT5NM compression, aka the Carmack-Trick (that’s why they’re grey, not purple). Texture types: color bump emissive specular Typical download sizes for textures are somewhere between 5 kByte and 40 kByte. Textures are aggressively shared and reused.
  • 12. Asset Size: Lights, Shadows& Decals 12 All lighting and shadowing is completely dynamic. No light-maps needed. We use deferred Pre-Pass-Lighting to enable “infinite point-lights” with moderate fill-rate requirements. Volumetric Decals are used to hide the tile-nature of the ground. Post-Effects add bloom, fog, color saturation and color balancing.
  • 13. Two Streaming Strategies: 13 1) ON DEMAND: Client requests data right when it’s needed. IO requests are handled asynchronously. May take several seconds until data is ready. Until then: Render a placeholder or… Render nothing. 2) BACKGROUND STREAMING: Low-priority background thread just for cache warm-up. One streaming list per map created during build process. Download and update items in local file cache. Very speculative, can’t really predict what’s needed next.
  • 14. The web as a (really unreliable) hard-disc 14 Nebula3 always had a powerful I/O system: • async I/O is standard, not the exception • “massively multi-threaded”, currently 10 I/O-threads • pluggable filesystems • all file paths are URLs We built an “HTTP filesystem” on top of this: • only uses HTTP GET requests • transparently replaces local-disc file I/O • MD5 checksums for all files • ZIP compression for all files • hierarchical caching system • directory walking and file-exists checks • CDN support • reasonably fail-safe (high latencies, dropped connections, corrupt downloads, tampering…)
  • 15. “Massively Multi-Threaded IO” 15 IO Dispatcher Thread Main Thread Render Thread Audio Thread … Thread Incoming IO Requests IO Threads Cache (Local HD) Cache Hit?Yes Web Server No Update Cache Served IO Requests • up to 10 HTTP-GET requests concurrently in flight (tweakable) • low-prio IO requests don’t block high-prio requests • no difference in high-level code between file I/O and http I/O
  • 16. Hierarchical File Cache 16 ROOT MD5 KEY e4680c8372bc6c527043a97631b404d7 Directory “Table Of Content” File Leaf TOCs Leaf TOCs Leaf TOCs 1. Daily-Build-Process: compress files and create per-file MD5 hashes. 2. Each directory has a “Table Of Content” file with all MD5 hashes. 3. TOCs are also compressed and MD5’d. 4. ...with one single “Directory TOC” at the top. 5. …and a single Root MD5 Key for the Directory TOC. • Client receives Root MD5 Key at startup. • Downloads TOC files if not in cache… • TOC files provide MD5 keys for files. • Zero HTTP GETs if cache is up-to-date!
  • 17. The Cache Chain 17 We basically have a 3-level cache for assets: RAM DISC CDN PROXY CDN ORIGIN Level 1 Level 2 Level 3 RAM Cache Hit? Resource objects are shared in RAM using their ResourceIDs. DISC Cache Hit? MD5-named file must exist in local file cache. MD5 of actual file-content must match build-time MD5 hash. CDN Proxy Cache Hit? MD5-hash appended to HTTP GET URL, forces a cache miss if proxy only has out-of-date file of the same name. CDN Origin Server has the definite data.
  • 18. 404’s Considered Harmful 18 Remember this from the previous page: RAM DISC CDN PROXY CDN ORIGIN 1st 2nd 3rd 4th “Sh*t happens”. Trying to load non-existing assets will happen with such a complex data set. HTTP requests for non-existing files will cut through all the way to the origin server. CDN’s usually cache 404’s for a few seconds, but it’s better to not bother the web servers with 404’s at all. Our Table-Of-Content-Files let us detect non-existing files on the client without a server roundtrip.
  • 19. Conclusion 19 • Data management is the job of the whole team. • Careful, early asset size planning. • Team must commit on size budgets. • “Programming Magic” alone doesn’t solve problems. • Programming, Level Design and Art Department must work hand in hand. • Oh, and: Check your CDN cost plan (if you pay per HTTP request, our solution is sub-optimal)
  • 21. Find us on Bigpoint GmbH Alexanderstraße 5 10178 Berlin Germany Bigpoint Inc. 500 Howard Street Suite 300 San Francisco, CA 94105 Bigpoint Distribuição de Entretenimento Online Ltda. Av. Brig. Faria Lima 3729 cj. 528 04538-905 São Paulo Brazil Bigpoint GmbH Andre Weissflog Head of Development Berlin Drehbahn 47-48 20354 Hamburg Germany Tel +49 40.88 14 13 - 0 Fax +49 40.88 14 13 - 11 info@bigpoint.net www.bigpoint.net Contact us Bigpoint International Services Limited 1 Villa Zimmermann Ta’Xbiex Terrace XBX 1035 Ta’Xbiex Malta 21