mmo design architecture by andrew

39
@agatestudio MMO Architecture Design Andrew Publishing Agate Studio

Upload: agate-studio

Post on 13-Apr-2017

1.779 views

Category:

Technology


7 download

TRANSCRIPT

Page 1: MMO Design Architecture by Andrew

@agatestudio

MMO Architecture

Design Andrew

Publishing

Agate Studio

Page 2: MMO Design Architecture by Andrew

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

Page 3: MMO Design Architecture by Andrew

Content

• Happy Me

• Architecture Overview

• Architecture Detail

– Object Management System

– Server-Client Data Synchronization

– Network Message Dispatching System

• Bonus: AWS Architecture

Page 4: MMO Design Architecture by Andrew

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

Page 5: MMO Design Architecture by Andrew
Page 6: MMO Design Architecture by Andrew

ARCHITECTURAL OVERVIEW

Page 7: MMO Design Architecture by Andrew

Physical Architecture

Page 8: MMO Design Architecture by Andrew

Game Data, Logic, and Presentation

Page 9: MMO Design Architecture by Andrew

DESIGN

Page 10: MMO Design Architecture by Andrew

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

Page 11: MMO Design Architecture by Andrew

OBJECT MANAGEMENT SYSTEM (MVC DESIGN)

Page 12: MMO Design Architecture by Andrew

Overview diagram

Model

View

Controller (gameplay logic)

Database

Network Messages

View

Controller (graphic logic)

Server Side Client Side Unity3D

3D Models

Database

Model

Page 13: MMO Design Architecture by Andrew

MVC objects mapping

Model

View

Controller

Game Objects

Object Views

Game Logic Modules

Rooms

Page 14: MMO Design Architecture by Andrew

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

Page 15: MMO Design Architecture by Andrew

General purpose base object

Object

Rooms

Object Views

Modules Game

Objects

Page 16: MMO Design Architecture by Andrew

The “Object” requirements

• A container of properties

• Serialize to and deserialize from JSON

• Hierarchy relationship (parent-child)

Page 17: MMO Design Architecture by Andrew

Object dynamic properties

Object

Guid

Property 1

Property 2

Property Meta Data • Tags

• Persistent • Client transfer

• Type

• Long

• Name • “property 2”

• Version

• 568

Page 18: MMO Design Architecture by Andrew

Define the properties

Page 19: MMO Design Architecture by Andrew

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

Page 20: MMO Design Architecture by Andrew

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

Page 21: MMO Design Architecture by Andrew

AUTO SYNCHRONIZATION FRAMEWORK (SERVER <-> CLIENT)

Page 22: MMO Design Architecture by Andrew

Synchronization concept

Server Room Player.Position = (10, 20)

Player.OnUpdatePosition(10, 20) { model.MoveTo(10, 20); }

Client

Page 23: MMO Design Architecture by Andrew

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…

Page 24: MMO Design Architecture by Andrew

Thread pool workers

Personal Room

Coffee Room Downtown

Room

Sync

Other

Sync

Thread Pool

Other

Sync

Other

Sync

Sync

Other

ROOMS

TASK

QUEUES

WORKERS

Page 25: MMO Design Architecture by Andrew

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

Page 26: MMO Design Architecture by Andrew

Object change-set

Object Position

Energy

Gold

Change Set

SYNCHRONIZATION SCHEDULER

SetProperty(Position, (1, 2))

Sync Task

Page 27: MMO Design Architecture by Andrew

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.

Page 28: MMO Design Architecture by Andrew

NETWORK MESSAGE DISPATCHING SYSTEM

Page 29: MMO Design Architecture by Andrew

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

Page 30: MMO Design Architecture by Andrew

Message factory

Server

Send

Client

Receive

Serialize

Deserialize

Login

- Username - Password

Login

- Username - Password

OnAuthen

OnMove

OnRun

Login

Authen

Move

Run

Message Handlers

OnLogin

Page 31: MMO Design Architecture by Andrew

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

Page 32: MMO Design Architecture by Andrew

• 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

Page 33: MMO Design Architecture by Andrew

SCALABLE GAMING WITH AWS

Page 34: MMO Design Architecture by Andrew

Pay as you Scale

Page 35: MMO Design Architecture by Andrew

Core Game Backend

Page 36: MMO Design Architecture by Andrew

Scale It Way Out

Page 37: MMO Design Architecture by Andrew

Amazon Elastic Beanstalk

Page 38: MMO Design Architecture by Andrew

Thank You

Page 39: MMO Design Architecture by Andrew

Thank You ^_^