• Happy Me
• Architecture Overview
• Architecture Detail
Object Management System
Server-Client Data Synchronization
Network Message Dispatching System
• MMO casual game
• Room-based active server
• Web-based Unity3D client
• Run on social platform
• 3 system and framework developers
• 4 game developers
• 12 months of development
Database
Game Servers
Client
Internet
Server Side Client Side
Game Logic
Player
Data
Player
Data
Player
Data
Object
Management
System
Network Message
Dispatching
System
Auto
Synchronization
Framework
MAKE OUR LIFE EASIER
• 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 messages and invoke handlers
Model
View
Controller
(gameplay logic)
Database
Network
Messages
View
Controller
(graphic logic)
Server Side Client Side Unity3D
3D
Models
Database
Model
Model
View
Controller
Game
Objects
Object
Views
Game
Logic
Modules
Rooms
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
Object
Rooms
Object
Views
Modules
Game
Objects
• A container of properties
• Serialize to and deserialize from JSON
• Hierarchy relationship (parent-child)
Object
Guid
Property 1
Property 2
Property Meta Data
• Tags
• Persistent
• Client transfer
• Type
• Long
• Name
• “property 2”
• Version
• 568
Object
Unit
GameObject
DataObject
Player
DecoItem
Pet
UseItem
ClothItem
Item
Quest
Job
PlayerViewDecoView PetView
ObjectView
Module
MainGame
Authen
HomeDeco
SyncData Room
Lobby Public Personal
Object
Manager
Pros
• MVC design pattern practice
• Fully customizable property system
• Manage game world into one single
system
Cons
• Challenge to manage huge number of
objects
Server
RoomPlayer.Position = (10, 20)
Player.OnUpdatePosition(10, 20)
{
model.MoveTo(10, 20);
}
Client
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…
Personal
Room
Coffee
Room
Downtown
Room
Sync
Other
Sync
Thread Pool
Other
Sync
Other
Sync
Sync
Other
ROOMS
TASK
QUEUES
WORKERS
Thread
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
Position
Energy
Gold
Change Set
SYNCHRONIZATION
SCHEDULER
SetProperty(Position, (1, 2))
Sync
Task
Pros
• Automatic synchronization property changes
• Optimal data transfer
• Best use for active server game
Cons
• Overhead to determine what has changed
since last sync.
Login
- Username
- Password
Synchronize
- Type
- Properties
Buy Item
- ItemType
- Quantity
Chat
- Message
RequestFriend
- FriendGuid
Serializer
(Thrift, Protobuf, Json, XML)
Network package
Encryption
Server
Send
Client
Receive
Serialize
Deserialize
Login
- Username
- Password
Login
- Username
- Password
OnAuthen
OnMove
OnRun
Login
Authen
Move
Run
Message
Handlers
OnLogin
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
A practical architecture design for mmo casual game
A practical architecture design for mmo casual game

A practical architecture design for mmo casual game

Editor's Notes