Post on 27-Jun-2015
description
Corso a prova di CRETINO niubbo di Window$ 2000dieciotto111!!!!!!!one~ein
MMORPG Architecture for dummies
// Live @NOW 3.0 2014 - San Donnino - 15 Marzo 2014 // @squidleon
Table of contents
- Presentazioni- Breve introduzione storica- Architettura Server- Architettura Client- Diamond library
$ /whoami
facebook.com/rintronato
github.com/tgiachi
@squidleon
$ cat /home/squid/intro.txt1991 - Neverwinter Nights
(AOL)Ebbe il 4000% delle vendite! WTF!
2004 - World of WarcraftIl MMORPG piu’ giocato della
storia
MMORPG.toString() ==> (Massive(ly) Multiplayer Online Role-Playing Game)
$ cat /etc/server/arch > /dev/console
Internet
Client
Client
Client
Client
Client
Client
Login server
Game server
Patch server
Server
Login
Database layer
Login Server:====================
Viene messo in un thread (o eseguibile) separato
Spedisce il/i game server dove connettersiMinimo impatto sulle performance
Login Server:====================
Viene messo in un thread (o eseguibile) separato
Spedisce il/i game server dove connettersiMinimo impatto sulle performance
Game Server
Entities
Game Server:====================
Entities = NPC, MOB, ecc…Characters = Personaggi
World Objects = Case, oggetti, porte, ecc..
Scripts = Interazione con il mondo, AI, Quests
Game Server:====================
Entities = NPC, MOB, ecc…Characters = Personaggi
World Objects = Case, oggetti, porte, ecc..
Scripts = Interazione con il mondo, AI, Quests
Characters World Objects Scripts
Patch server
Versioning persistence
Patch Server:====================Modifiche distribuite centralmente
Correzioni centralizzate
Patch Server:====================Modifiche distribuite centralmente
Correzioni centralizzate
# cat /home/squid/arch/client > /dev/console
World of Warcraft {
Asset internoLUA engine
scriptCache interna per
GameObject
Diamond library
Diamond libraryhttps://github.com/tgiachi/diamond-server.git
https://github.com/tgiachi/diamond-client.git
https://github.com/tgiachi/diamond-data.git
Cosa e’ Diamond ?
Liberia per spedire i messaggi Clients <-> Server
Open source
Completamente modulare (interfacce a go go..)
Facile da implementare (non ha librerie esterne)
“Mavenizzato” e pubblicato su maven central
Annotation driven (@DiamondServerPlugin, @DiamondServerClient)
Scripted driver (Interpreta JS al volo)
Struttura dei messaggi
Statistiche Diamond
Java 7 NIO~ 1200 msg/s
MongoDB> vs.
MySQL
Server Client
Protocollo universale:AES / DES 256 -> JSON ->
Object
Protocollo universale:AES / DES 256 -> JSON ->
Object
JMonkeyEngine / libgdx / Ardor3d
JMonkeyEngine / libgdx / Ardor3d
Funziona su Raspberry PI !Funziona su Raspberry PI !
N.O.W. 3.0
Denghiu’!!Denghiu’!!