Josep Prat / HTML5 Architect and Java Lead Developer / @jlprat
Índex
Què és Multiplataforma?
Construint el Backend
Construint el Client
Live Demo!
Preguntes
1. Què és Multiplataforma?
Jugar el mateix joc en diverses plataformes
Contruint un joc multiplataforma
Ets el nou arquitecte de GameDuell i l'equip de direcció té una nova tasca per tu:
Què és Multiplataforma?
Què és Multiplataforma?
Proporcionar la millor experiència a tots els jugadors
Repte acceptat!
Anem a conèixer l'equip de GameDuell
GameDuell
Bringing people together to have good times with games - Wherever, whenever!
Dades clau
Fundada el 2003
Més de 210 treballadors
Més de 125 milions de jugadors
Més de 70 jocs en 7 idiomes diferents
500 milions de visites per mes
Tech Talks amb experts mundials
Estructura dels equips
Scrum
Centrats en Producte
Especialistes en diversos llenguatges
2. Construint jocs multiplataforma
Arquitectura del backend
Visió general de l'arquitectura
Comencem a contruir un joc multiplataforma!
Primer la seguretat
Dissenya la teva aplicació tenint en compte la seguretat
Primer la seguretat
No exposis les parts internes del backend
No basis la teva segurat en l'obfuscació
Primer la serguretat
Konami Code
Primer la seguretat
NO
CONFIÏS
EN
ELS
CLIENTS
Servidor pesat
Protocols
Protocol del joc != Protocol de transport
Missatges autoexplicatius
Llegibles
Missatges de rescat
Hacks - Spoofing
Hacks - Dades falses
Tot això està molt bé, però... Com ho desenvolupes?
JBoss Drools
Desenvolupat per JBoss
Entorn de programació basat en regles
Integració directa amb Java
Comportament llegible
Permet la programació declarativa
Modela una màquina d'estat
Segueix la màquina d'estat!
Hello World!
rule "Hello World Rule"
when
Player()
Game()
then
System.out.println("Hello World!");
end
Exemple més realista
rule "Apply 10% discount to orders over US$ 100,00"
when
$order : Order()
$total : Number( doubleValue > 100 )
from accumulate( OrderItem( order == $order,
$value : value ), sum( $value ) )
then
/* apply discount to $order */
end
Aquí aniria un conjunt de paraules que tenen sentit en un tot, per exemple un post en un blog, l'ajuda d'un joc... Això va en benefici de la web semàntica
Aquesta és la nostra mascota Fluffy
Nou Marcat
Aquí aniria un conjunt de paraules que tenen sentit en un tot, per exemple un post en un blog, l'ajuda d'un joc... Això va en benefici de la web semàntica
var websocket = new Websocket("ws://myserver.com/path/to/connect");
websocket.onopen = function (event) {
//Websocket is fully functional now
};
websocket.onmessage = function (event) {
//Called every time the server sends a message
};
websocket.onerror = function (event) {
//Called when there is an error communicating with the server
}
websocket.onclose = function (event) {
//Called when the connection to the server is closed
}
//to send messages
websocket.send("foo");
//end communication
websocket.close();