david salz
play

David Salz CTO / Co-Founder david@sandbox-interactive.com ABOUT - PowerPoint PPT Presentation

ALBION ONLINE: A CROSS-PLATFORM MMO David Salz CTO / Co-Founder david@sandbox-interactive.com ABOUT ALBION ONLINE What is Albion Online? Albion Online is a modern interpretation of EVE Online with the skill based combat from League of


  1. ALBION ONLINE: A CROSS-PLATFORM MMO David Salz CTO / Co-Founder david@sandbox-interactive.com

  2. ABOUT ALBION ONLINE What is Albion Online? Albion Online is a modern interpretation of EVE Online with the skill based combat from League of Legends

  3. 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

  4. MIDDLEWARE SELECTION • 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

  5. CASSANDRA • 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)

  6. CONSEQUENCES • 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

  7. SEPARATION Server Client Unity-Client obj-enter created ObjectFactory ObjectViewFactory Interest-Management obj-leave create create manage Object ObjectView Object +Position +Renderer +Position destroyed changed +… +… +AnimationCtrl …etc.. changed …etc.. +RequestAction() +HandleInput() +RequestAction()

  8. SERVER FARM Game DB Chat Server World Server (Cassandra) Login Server Marketplace Server Client Accounts DB GoldMarket Server (Postgres) Game Server Statistics Server Market DB Game Server (Postgres) Connect to different game Ranking Server server depending on Game Server location in game world BackOffice Server GoldMarket DB (Postgres)

  9. 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.

  10. GAME SERVER – THREADING MODEL IO Thread Logging IO Network IO Pathfinding Database IO IO Thread Thread Thread Thread Thread Cluster Thread makes Event Event request Cluster Thread Queue Scheduler Events / Results get put into Event Queue Event Event Cluster Thread Queue Scheduler Cluster polls Events from Queue and Scheduler

  11. GAME SERVER – INTEREST MANAGEMENT • Players should only „ see “ (network - wise) what‘s on their screen • important to reduce traffic … • … and prevent cheating! • Needs to be efficient! player • ~500 mobs / cluster • > 10.000 game objects (e.g. trees) • up to 300 players

  12. 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() player ● ObjectLeftCell() ● objects also fire events ● ObjectMoved() ● ObjectDestroyed() ● EventFired()

  13. GAME SERVER – INTEREST MANAGEMENT Interest area Moves with player Subscribe to objects when they enter inner area Unsubscribe when they leave player outer area Tell player when: ● an object enters / leaves interest area ● an object in the area fires an event

  14. LEVEL DESIGN Level consists of „ tiles “ ( Unity prefabs) Object (non-ground) tile Tile has 3d collider (for mouse picking + ground height definition) Ground tile 2d collision is painted per tile (blocks movement / blocks shots / blocks placement etc.)

  15. COLLISION Collision • TODO: pictures, demo Collision of all tiles is blended together

  16. CHARACTER RENDERING • 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)

  17. CHEATERS • .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 ?

  18. THE END Thank you! Questions / Comments? david@sandbox-interactive.com

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend