Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

MMO Design Architecture by Andrew

Related Books

Free with a 30 day trial from Scribd

See all

MMO Design Architecture by Andrew

  1. 1. @agatestudio MMO Architecture Design Andrew Publishing Agate Studio
  2. 2. MMO Architecture Design Case Study from an MMO: Happy Me • mmo-casual-game-mr-an-ngo-thai • gamearchitecturesfinal
  3. 3. Content •Happy Me •Architecture Overview •Architecture Detail –Object Management System –Server-Client Data Synchronization –Network Message Dispatching System •Bonus: AWS Architecture
  4. 4. Happy Me •What? –MMO Casual Game –Room-based active server –Web-based Unity3D client –Run on social platform •Who? –VNG from Vietnam –Technical team •3 System and framework developers •4 Game developers •12 Months development time
  6. 6. Physical Architecture
  7. 7. Game Data, Logic, and Presentation
  8. 8. DESIGN
  9. 9. Design •Object Management System –MVC design pattern –Dynamic data •Auto Synchronization Framework –Truly automatic (Set and forget style) –Synchronize the delta difference only •Network Message Dispatching System –Custom structure message –Easy to register message and invoke handlers
  11. 11. Overview diagram Model View Controller (gameplay logic) Database Network Messages View Controller (graphic logic) Server Side Client Side Unity3D 3D Models Database Model
  12. 12. MVC objects mapping Model View Controller Game Objects Object Views Game Logic Modules Rooms
  13. 13. Detail diagram Game Objects Object Views Game Logic No-SQL (Storage) Network Messages Object Views Graphic Logic Server Side Client Side SQL (Ranking, Log) Database Game Objects Modules Modules Rooms Rooms
  14. 14. General purpose base object Object Rooms Object Views Modules Game Objects
  15. 15. The “Object” requirements •A container of properties •Serialize to and deserialize from JSON •Hierarchy relationship (parent-child)
  16. 16. Object dynamic properties Object Guid Property 1 Property 2 Property Meta Data •Tags •Persistent •Client transfer •Type •Long •Name •“property 2” •Version •568
  17. 17. Define the properties
  18. 18. The object tree Object Unit GameObject DataObject Player DecoItem Pet UseItem ClothItem Item Quest Job PlayerView DecoView PetView ObjectView Module MainGame Authen HomeDeco SyncData Room Lobby Public Personal Object Manager
  19. 19. Result Pros •MVC design pattern practice •Fully customizable property system •Manage game world into one single system Cons •Challenge to manage huge number of objects
  21. 21. Synchronization concept Server Room Player.Position = (10, 20) Player.OnUpdatePosition(10, 20) { model.MoveTo(10, 20); } Client
  22. 22. Duties of a room Synchronization Scheduler Other Schedulers Message Processor ROOM •Process messages from clients •Send or broadcast messages to clients •Synchronize data changes between server and clients •Update status •Other duties…
  23. 23. Thread pool workers Personal Room Coffee Room Downtown Room Sync Other Sync Thread Pool Other Sync Other Sync Sync Other ROOMS TASK QUEUES WORKERS
  24. 24. Thread Schedulers 1 second SYNCHRONIZATION SCHEDULER OTHERS SCHEDULER 1/10 second Other Task Sync Task Sync Task Other Task Sync Task Other Task TASK QUEUE WORKER
  25. 25. Object change-set Object Position Energy Gold Change Set SYNCHRONIZATION SCHEDULER SetProperty(Position, (1, 2)) Sync Task
  26. 26. Result Pros •Automatic synchronization property changes •Optimal data transfer •Best use for active server game Cons •Overhead to determine what has changed since last sync.
  28. 28. Custom message structure Login -Username -Password Synchronize -Type -Properties Buy Item -ItemType -Quantity Chat -Message RequestFriend -FriendGuid Serializer (Thrift, Protobuf, Json, XML) Network package Encryption
  29. 29. Message factory Server Send Client Receive Serialize Deserialize Login -Username -Password Login -Username -Password OnAuthen OnMove OnRun Login Authen Move Run Message Handlers OnLogin
  30. 30. Result Pros •Meaningful message by define custom structure •Familiar usage as common GUI system (MFC, WinForm) •Share message definition between server and client •Easy to apply encryption Cons •Unknown
  31. 31. •Seamless MVC framework across server and client •Address the most common difficulty in design active server : the synchronization •Base framework environment for adapting any gameplay Conclusion
  33. 33. Pay as you Scale
  34. 34. Core Game Backend
  35. 35. Scale It Way Out
  36. 36. Amazon Elastic Beanstalk
  37. 37. Thank You 
  38. 38. Thank You ^_^