mmo design architecture by andrew
TRANSCRIPT
@agatestudio
MMO Architecture
Design Andrew
Publishing
Agate Studio
MMO Architecture Design
Case Study from an MMO: Happy Me
• http://www.slideshare.net/actionstartup/a-practical-architecture-design-for-mmo-casual-game-mr-an-ngo-thai
• http://www.slideshare.net/AmazonWebServices/gdc2014-aws-gamearchitecturesfinal
Content
• Happy Me
• Architecture Overview
• Architecture Detail
– Object Management System
– Server-Client Data Synchronization
– Network Message Dispatching System
• Bonus: AWS Architecture
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
ARCHITECTURAL OVERVIEW
Physical Architecture
Game Data, Logic, and Presentation
DESIGN
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
OBJECT MANAGEMENT SYSTEM (MVC DESIGN)
Overview diagram
Model
View
Controller (gameplay logic)
Database
Network Messages
View
Controller (graphic logic)
Server Side Client Side Unity3D
3D Models
Database
Model
MVC objects mapping
Model
View
Controller
Game Objects
Object Views
Game Logic Modules
Rooms
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
General purpose base object
Object
Rooms
Object Views
Modules Game
Objects
The “Object” requirements
• A container of properties
• Serialize to and deserialize from JSON
• Hierarchy relationship (parent-child)
Object dynamic properties
Object
Guid
Property 1
Property 2
Property Meta Data • Tags
• Persistent • Client transfer
• Type
• Long
• Name • “property 2”
• Version
• 568
Define the properties
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
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
AUTO SYNCHRONIZATION FRAMEWORK (SERVER <-> CLIENT)
Synchronization concept
Server Room Player.Position = (10, 20)
Player.OnUpdatePosition(10, 20) { model.MoveTo(10, 20); }
Client
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…
Thread pool workers
Personal Room
Coffee Room Downtown
Room
Sync
Other
Sync
Thread Pool
Other
Sync
Other
Sync
Sync
Other
ROOMS
TASK
QUEUES
WORKERS
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
Object change-set
Object Position
Energy
Gold
Change Set
SYNCHRONIZATION SCHEDULER
SetProperty(Position, (1, 2))
Sync Task
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.
NETWORK MESSAGE DISPATCHING SYSTEM
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
Message factory
Server
Send
Client
Receive
Serialize
Deserialize
Login
- Username - Password
Login
- Username - Password
OnAuthen
OnMove
OnRun
Login
Authen
Move
Run
Message Handlers
OnLogin
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
• 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
SCALABLE GAMING WITH AWS
Pay as you Scale
Core Game Backend
Scale It Way Out
Amazon Elastic Beanstalk
Thank You
Thank You ^_^