SlideShare a Scribd company logo
1 of 22
Download to read offline
ALBION ONLINE: A CROSS-PLATFORM MMO
David Salz
CTO / Co-Founder
david@sandbox-interactive.com
What is Albion Online?
Albion Online is a modern
interpretation of EVE Online with
the skill based combat from
League of Legends
ABOUT ALBION ONLINE
• Sandbox MMORPG
• Cross-Platform (Windows/OSX/Linux/Android/iOS)
• One World (no „Shards“ or „Servers“, not even for different platforms)
• 4 years in the making
• Currently in Closed Beta w/ 100.000+ „founding“ players
• „Release“ in Q4/2016
ABOUT ALBION ONLINE
• Engine Selection: Unity
• powerful, accessible
• Cross-Platform was a „target of opportunity“
• Database Selection: Cassandra, Postgres
• One world  need a very scalable database, NoSQL
• still use SQL for query-heavy problems
• Networking Middleware: Photon
• UDP (reliable/unreliable), TCP
• can use C# on server (like in Unity!)
• works with all Unity platforms
MIDDLEWARE SELECTION
• NoSQL Database
• Originally developed by Facebook
• Open Source (Apache-License)
• written in Java
• Concept: everything is a hash table
• in-memory (as much as possible)
• optimized for high throughput
• scales horizontally (just add servers)
• redundant (no single point of failure)
• CQL: SQL-like language (w/ massive restrictions – it‘s NoSQL)
CASSANDRA
• Server needs to work without Unity
• Ideally, client works without Unity, too!
• think: tools, stress-test-bots!
• Use Unity only as rendering front-end
• cannot rely on Unity features for basic functions!
• levels / game objects
• collision
• pathfinding
CONSEQUENCES
ObjectFactory ObjectViewFactory
Object
+Position
+…
+RequestAction()
ObjectView
+Renderer
+AnimationCtrl
+HandleInput()
destroyed
changed
…etc..
created
Object
+Position
+…
+RequestAction()
Server Client Unity-Client
Interest-Management
changed
…etc..
obj-enter
obj-leave
manage
create create
SEPARATION
Game Server
Game Server
Game Server
Login Server
World Server
Marketplace Server
GoldMarket Server
Statistics Server
Ranking Server
BackOffice Server
Chat Server
Client
Connect to different game
server depending on
location in game world
Game DB
(Cassandra)
Accounts DB
(Postgres)
Market DB
(Postgres)
GoldMarket DB
(Postgres)
SERVER FARM
• game world split into unique „clusters“ of ~ 1 km²
• current world: ~600, next world: x2
• distributed among game servers
• player changes servers when travelling
• handoff done through database (even on same server)
• World Server
• responsible for everything „global“
• guilds, parties, coordination of guild battles etc.
SERVER FARM
IO Thread
IO ThreadNetwork IO
Thread
Event
Queue
Logging IO
Thread
Event
Scheduler
Cluster Thread
Event
Queue
Event
Scheduler
Cluster Thread
Pathfinding
Thread
Database IO
Thread
Cluster Thread makes
request
Events / Results get
put into Event Queue
Cluster polls Events from
Queue and Scheduler
GAME SERVER – THREADING MODEL
• Players should only „see“ (network-
wise) what‘s on their screen
• important to reduce traffic…
• … and prevent cheating!
• Needs to be efficient!
• ~500 mobs / cluster
• > 10.000 game objects (e.g. trees)
• up to 300 players
player
GAME SERVER – INTEREST MANAGEMENT
grid based hash (10x10m cells)
● cells contain list of objects inside
● list is updated by object itself when moving
● cells fire events:
● ObjectEnteredCell()
● ObjectLeftCell()player
● objects also fire events
● ObjectMoved()
● ObjectDestroyed()
● EventFired()
GAME SERVER – INTEREST MANAGEMENT
player
Interest area
Moves with player
Subscribe to objects when they
enter inner area
Unsubscribe when they leave
outer area
Tell player when:
● an object enters / leaves interest area
● an object in the area fires an event
GAME SERVER – INTEREST MANAGEMENT
Level consists of
„tiles“ (Unity prefabs)
Tile has 3d collider
(for mouse picking +
ground height
definition)
2d collision is painted
per tile
(blocks movement /
blocks shots / blocks
placement etc.)
Ground tile
Object (non-ground) tile
LEVEL DESIGN
Collision
• TODO: pictures, demo
Collision of all tiles
is blended together
COLLISION
• Character + Equipment
gets baked into one
mesh (= 1 draw call!)
• parts of character mesh
hidden depending on
equipment
• Only one material for
character + all equipment
items
• Limit number of
characters drawn (esp.
on mobile)
CHARACTER RENDERING
• .NET code is very accessible for analysis
• camera hacks (minior problem because of interest management)
• found internal tools, cheats in code (not working on live)
• extracted data from client
• maps, player rankings… lead to cool community projects!
• Users built bots directly into client 
• Difficult to prevent
• Obfuscation – helps, but not much
• We are doing more integrity checks now!
• Future: Unity IL2CPP ?
CHEATERS
THE END
Thank you!
Questions / Comments?
david@sandbox-interactive.com

More Related Content

What's hot

Space Ape's Analytics Stack
Space Ape's Analytics StackSpace Ape's Analytics Stack
Space Ape's Analytics StackSimon Hade
 
A Practical Architecture Design for MMO Casual Game
A Practical Architecture Design for MMO Casual GameA Practical Architecture Design for MMO Casual Game
A Practical Architecture Design for MMO Casual Gameaction.vn
 
Introduction to Game Development
Introduction to Game DevelopmentIntroduction to Game Development
Introduction to Game DevelopmentShaan Alam
 
Unity Game Engine - Basics
Unity Game Engine - BasicsUnity Game Engine - Basics
Unity Game Engine - BasicsFirosK2
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지강 민우
 
Game Development Company, Flash Game Development,
Game Development Company, Flash Game Development,Game Development Company, Flash Game Development,
Game Development Company, Flash Game Development,Gateway Technolabs
 
Game Architecture and Programming
Game Architecture and ProgrammingGame Architecture and Programming
Game Architecture and ProgrammingSumit Jain
 
Game development
Game developmentGame development
Game developmentreittes
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)Seungmo Koo
 
LiveOps as a Service | Scott Humphries
LiveOps as a Service | Scott HumphriesLiveOps as a Service | Scott Humphries
LiveOps as a Service | Scott HumphriesJessica Tams
 
New tools and services to take your live ops to the next level
New tools and services to take your live ops to the next levelNew tools and services to take your live ops to the next level
New tools and services to take your live ops to the next levelCrystin Cox
 
Unity 3D
Unity 3DUnity 3D
Unity 3Dgema123
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCHo Gyu Lee
 
Effective LiveOps Strategies for F2P Games
Effective LiveOps Strategies for F2P GamesEffective LiveOps Strategies for F2P Games
Effective LiveOps Strategies for F2P GamesJames Gwertzman
 
Introduction to Game Development and the Game Industry
Introduction to Game Development and the Game IndustryIntroduction to Game Development and the Game Industry
Introduction to Game Development and the Game IndustryNataly Eliyahu
 
Project presentation FPS
Project presentation FPSProject presentation FPS
Project presentation FPSShubham Rajput
 
Game Design - Monetization
Game Design - MonetizationGame Design - Monetization
Game Design - MonetizationErez Yerushalmi
 

What's hot (20)

Space Ape's Analytics Stack
Space Ape's Analytics StackSpace Ape's Analytics Stack
Space Ape's Analytics Stack
 
A Practical Architecture Design for MMO Casual Game
A Practical Architecture Design for MMO Casual GameA Practical Architecture Design for MMO Casual Game
A Practical Architecture Design for MMO Casual Game
 
Introduction to Game Development
Introduction to Game DevelopmentIntroduction to Game Development
Introduction to Game Development
 
Unity Game Engine - Basics
Unity Game Engine - BasicsUnity Game Engine - Basics
Unity Game Engine - Basics
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
Game Development Company, Flash Game Development,
Game Development Company, Flash Game Development,Game Development Company, Flash Game Development,
Game Development Company, Flash Game Development,
 
Game Architecture and Programming
Game Architecture and ProgrammingGame Architecture and Programming
Game Architecture and Programming
 
Game development
Game developmentGame development
Game development
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 
LiveOps as a Service | Scott Humphries
LiveOps as a Service | Scott HumphriesLiveOps as a Service | Scott Humphries
LiveOps as a Service | Scott Humphries
 
Gaming Industry
Gaming IndustryGaming Industry
Gaming Industry
 
Game dev process
Game dev processGame dev process
Game dev process
 
New tools and services to take your live ops to the next level
New tools and services to take your live ops to the next levelNew tools and services to take your live ops to the next level
New tools and services to take your live ops to the next level
 
Unity 3D
Unity 3DUnity 3D
Unity 3D
 
The Game Life Cycle & Game Analytics: What metrics matter when?
The Game Life Cycle & Game Analytics: What metrics matter when? The Game Life Cycle & Game Analytics: What metrics matter when?
The Game Life Cycle & Game Analytics: What metrics matter when?
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
 
Effective LiveOps Strategies for F2P Games
Effective LiveOps Strategies for F2P GamesEffective LiveOps Strategies for F2P Games
Effective LiveOps Strategies for F2P Games
 
Introduction to Game Development and the Game Industry
Introduction to Game Development and the Game IndustryIntroduction to Game Development and the Game Industry
Introduction to Game Development and the Game Industry
 
Project presentation FPS
Project presentation FPSProject presentation FPS
Project presentation FPS
 
Game Design - Monetization
Game Design - MonetizationGame Design - Monetization
Game Design - Monetization
 

Similar to Albion Online - A Cross-Platform MMO (Unite Europe 2016, Amsterdam)

Write retrogames in the web and add something more with Azure
Write retrogames in the web and add something more with AzureWrite retrogames in the web and add something more with Azure
Write retrogames in the web and add something more with AzureMarco Parenzan
 
UGC In Game : A Brief History and How We Bring It To Mobile | Zhuo Yue
UGC In Game : A Brief History and How We Bring It To Mobile | Zhuo YueUGC In Game : A Brief History and How We Bring It To Mobile | Zhuo Yue
UGC In Game : A Brief History and How We Bring It To Mobile | Zhuo YueJessica Tams
 
Breaking through silos - From multi to true crossplatform using the cloud
Breaking through silos - From multi to true crossplatform using the cloudBreaking through silos - From multi to true crossplatform using the cloud
Breaking through silos - From multi to true crossplatform using the cloudChristof Wegmann
 
Game development -session on unity 3d
Game development -session on unity 3d Game development -session on unity 3d
Game development -session on unity 3d Muhammad Maaz Irfan
 
Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Karsten Wysk
 
Massively Social != Massively Multiplayer
Massively Social != Massively MultiplayerMassively Social != Massively Multiplayer
Massively Social != Massively MultiplayerPaul Furio
 
Deploy All The Games
Deploy All The GamesDeploy All The Games
Deploy All The GamesAdam Hill
 
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...SanaChoudary
 
Cross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharpCross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharpAlexey Strakh
 
iOS and Android Development with Unity3D
iOS and Android Development with Unity3DiOS and Android Development with Unity3D
iOS and Android Development with Unity3DRalph Barbagallo
 
Build a serverless distributed Pong game with Azure
Build a serverless distributed Pong game with AzureBuild a serverless distributed Pong game with Azure
Build a serverless distributed Pong game with AzureMarco Parenzan
 
Writing Games in .NET with XNA Game Studio
Writing Games in .NET with XNA Game StudioWriting Games in .NET with XNA Game Studio
Writing Games in .NET with XNA Game StudioTim Thomas
 
Building a Windows 10 Game with C#, XAML and Win2D
Building a Windows 10 Game with C#, XAML and Win2DBuilding a Windows 10 Game with C#, XAML and Win2D
Building a Windows 10 Game with C#, XAML and Win2DNick Landry
 
Photon Session / Unite12 Conference
Photon Session / Unite12 ConferencePhoton Session / Unite12 Conference
Photon Session / Unite12 ConferenceChristof Wegmann
 
Making HTML5 Games with Phaser
Making HTML5 Games with PhaserMaking HTML5 Games with Phaser
Making HTML5 Games with PhaserIndieOutpost
 
Game object models - Game Engine Architecture
Game object models - Game Engine ArchitectureGame object models - Game Engine Architecture
Game object models - Game Engine ArchitectureShawn Presser
 
Writing Games in .NET with XNA Game Studio
Writing Games in .NET with XNA Game StudioWriting Games in .NET with XNA Game Studio
Writing Games in .NET with XNA Game StudioTim Thomas
 
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...gamifi.cc
 

Similar to Albion Online - A Cross-Platform MMO (Unite Europe 2016, Amsterdam) (20)

Write retrogames in the web and add something more with Azure
Write retrogames in the web and add something more with AzureWrite retrogames in the web and add something more with Azure
Write retrogames in the web and add something more with Azure
 
UGC In Game : A Brief History and How We Bring It To Mobile | Zhuo Yue
UGC In Game : A Brief History and How We Bring It To Mobile | Zhuo YueUGC In Game : A Brief History and How We Bring It To Mobile | Zhuo Yue
UGC In Game : A Brief History and How We Bring It To Mobile | Zhuo Yue
 
Breaking through silos - From multi to true crossplatform using the cloud
Breaking through silos - From multi to true crossplatform using the cloudBreaking through silos - From multi to true crossplatform using the cloud
Breaking through silos - From multi to true crossplatform using the cloud
 
Game development -session on unity 3d
Game development -session on unity 3d Game development -session on unity 3d
Game development -session on unity 3d
 
Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011
 
Massively Social != Massively Multiplayer
Massively Social != Massively MultiplayerMassively Social != Massively Multiplayer
Massively Social != Massively Multiplayer
 
Deploy All The Games
Deploy All The GamesDeploy All The Games
Deploy All The Games
 
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...
Road to Success (July 1st) - Mobile Game Development Alternatives - Andrew Bu...
 
Cross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharpCross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharp
 
iOS and Android Development with Unity3D
iOS and Android Development with Unity3DiOS and Android Development with Unity3D
iOS and Android Development with Unity3D
 
Build a serverless distributed Pong game with Azure
Build a serverless distributed Pong game with AzureBuild a serverless distributed Pong game with Azure
Build a serverless distributed Pong game with Azure
 
Writing Games in .NET with XNA Game Studio
Writing Games in .NET with XNA Game StudioWriting Games in .NET with XNA Game Studio
Writing Games in .NET with XNA Game Studio
 
Building a Windows 10 Game with C#, XAML and Win2D
Building a Windows 10 Game with C#, XAML and Win2DBuilding a Windows 10 Game with C#, XAML and Win2D
Building a Windows 10 Game with C#, XAML and Win2D
 
Photon Session / Unite12 Conference
Photon Session / Unite12 ConferencePhoton Session / Unite12 Conference
Photon Session / Unite12 Conference
 
Making HTML5 Games with Phaser
Making HTML5 Games with PhaserMaking HTML5 Games with Phaser
Making HTML5 Games with Phaser
 
XNAPresentation
XNAPresentationXNAPresentation
XNAPresentation
 
Game object models - Game Engine Architecture
Game object models - Game Engine ArchitectureGame object models - Game Engine Architecture
Game object models - Game Engine Architecture
 
Writing Games in .NET with XNA Game Studio
Writing Games in .NET with XNA Game StudioWriting Games in .NET with XNA Game Studio
Writing Games in .NET with XNA Game Studio
 
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
 
ProjectsSummary
ProjectsSummaryProjectsSummary
ProjectsSummary
 

Recently uploaded

Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
Data modeling 101 - Basics - Software Domain
Data modeling 101 - Basics - Software DomainData modeling 101 - Basics - Software Domain
Data modeling 101 - Basics - Software DomainAbdul Ahad
 
Copilot para Microsoft 365 y Power Platform Copilot
Copilot para Microsoft 365 y Power Platform CopilotCopilot para Microsoft 365 y Power Platform Copilot
Copilot para Microsoft 365 y Power Platform CopilotEdgard Alejos
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfkalichargn70th171
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdfAndrey Devyatkin
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingShane Coughlan
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfmaor17
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 

Recently uploaded (20)

Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
Data modeling 101 - Basics - Software Domain
Data modeling 101 - Basics - Software DomainData modeling 101 - Basics - Software Domain
Data modeling 101 - Basics - Software Domain
 
Copilot para Microsoft 365 y Power Platform Copilot
Copilot para Microsoft 365 y Power Platform CopilotCopilot para Microsoft 365 y Power Platform Copilot
Copilot para Microsoft 365 y Power Platform Copilot
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdf
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 

Albion Online - A Cross-Platform MMO (Unite Europe 2016, Amsterdam)

  • 1. ALBION ONLINE: A CROSS-PLATFORM MMO David Salz CTO / Co-Founder david@sandbox-interactive.com
  • 2.
  • 3. What is Albion Online? Albion Online is a modern interpretation of EVE Online with the skill based combat from League of Legends ABOUT ALBION ONLINE
  • 4. • Sandbox MMORPG • Cross-Platform (Windows/OSX/Linux/Android/iOS) • One World (no „Shards“ or „Servers“, not even for different platforms) • 4 years in the making • Currently in Closed Beta w/ 100.000+ „founding“ players • „Release“ in Q4/2016 ABOUT ALBION ONLINE
  • 5. • Engine Selection: Unity • powerful, accessible • Cross-Platform was a „target of opportunity“ • Database Selection: Cassandra, Postgres • One world  need a very scalable database, NoSQL • still use SQL for query-heavy problems • Networking Middleware: Photon • UDP (reliable/unreliable), TCP • can use C# on server (like in Unity!) • works with all Unity platforms MIDDLEWARE SELECTION
  • 6. • NoSQL Database • Originally developed by Facebook • Open Source (Apache-License) • written in Java • Concept: everything is a hash table • in-memory (as much as possible) • optimized for high throughput • scales horizontally (just add servers) • redundant (no single point of failure) • CQL: SQL-like language (w/ massive restrictions – it‘s NoSQL) CASSANDRA
  • 7. • Server needs to work without Unity • Ideally, client works without Unity, too! • think: tools, stress-test-bots! • Use Unity only as rendering front-end • cannot rely on Unity features for basic functions! • levels / game objects • collision • pathfinding CONSEQUENCES
  • 9. Game Server Game Server Game Server Login Server World Server Marketplace Server GoldMarket Server Statistics Server Ranking Server BackOffice Server Chat Server Client Connect to different game server depending on location in game world Game DB (Cassandra) Accounts DB (Postgres) Market DB (Postgres) GoldMarket DB (Postgres) SERVER FARM
  • 10. • game world split into unique „clusters“ of ~ 1 km² • current world: ~600, next world: x2 • distributed among game servers • player changes servers when travelling • handoff done through database (even on same server) • World Server • responsible for everything „global“ • guilds, parties, coordination of guild battles etc. SERVER FARM
  • 11.
  • 12. IO Thread IO ThreadNetwork IO Thread Event Queue Logging IO Thread Event Scheduler Cluster Thread Event Queue Event Scheduler Cluster Thread Pathfinding Thread Database IO Thread Cluster Thread makes request Events / Results get put into Event Queue Cluster polls Events from Queue and Scheduler GAME SERVER – THREADING MODEL
  • 13. • Players should only „see“ (network- wise) what‘s on their screen • important to reduce traffic… • … and prevent cheating! • Needs to be efficient! • ~500 mobs / cluster • > 10.000 game objects (e.g. trees) • up to 300 players player GAME SERVER – INTEREST MANAGEMENT
  • 14. grid based hash (10x10m cells) ● cells contain list of objects inside ● list is updated by object itself when moving ● cells fire events: ● ObjectEnteredCell() ● ObjectLeftCell()player ● objects also fire events ● ObjectMoved() ● ObjectDestroyed() ● EventFired() GAME SERVER – INTEREST MANAGEMENT
  • 15. player Interest area Moves with player Subscribe to objects when they enter inner area Unsubscribe when they leave outer area Tell player when: ● an object enters / leaves interest area ● an object in the area fires an event GAME SERVER – INTEREST MANAGEMENT
  • 16. Level consists of „tiles“ (Unity prefabs) Tile has 3d collider (for mouse picking + ground height definition) 2d collision is painted per tile (blocks movement / blocks shots / blocks placement etc.) Ground tile Object (non-ground) tile LEVEL DESIGN
  • 17. Collision • TODO: pictures, demo Collision of all tiles is blended together COLLISION
  • 18. • Character + Equipment gets baked into one mesh (= 1 draw call!) • parts of character mesh hidden depending on equipment • Only one material for character + all equipment items • Limit number of characters drawn (esp. on mobile) CHARACTER RENDERING
  • 19.
  • 20. • .NET code is very accessible for analysis • camera hacks (minior problem because of interest management) • found internal tools, cheats in code (not working on live) • extracted data from client • maps, player rankings… lead to cool community projects! • Users built bots directly into client  • Difficult to prevent • Obfuscation – helps, but not much • We are doing more integrity checks now! • Future: Unity IL2CPP ? CHEATERS
  • 21.
  • 22. THE END Thank you! Questions / Comments? david@sandbox-interactive.com