mmo design architecture by andrew

Post on 13-Apr-2017

1.780 Views

Category:

Technology

7 Downloads

Preview:

Click to see full reader

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 ^_^

top related