21
Introducci´ o Metodologia Tecnologies utilitzades Desenvolupament Demostraci´o Conclusions M` aster en Enginyeria de Programari Lliure Treball de Final de M ` aster Implementaci´ o de la Botifarra utilitzant WebSocket, HTML5 i Javascript Autor: Sergi Almacellas Abellana Director: Juan Manuel Gimeno Illa 26 de juliol de 2012 Sergi Almacellas Abellana [email protected] Implementaci´o de la botifarra a trav´ es de Web

Butifarra Implementation on Node.js, WebSockets and HTML5

Embed Size (px)

DESCRIPTION

TFM presentation about ButiJS, a implementation of the Butifarra Game on top of Node.js, WebSockets and HTML

Citation preview

Page 1: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Master en Enginyeria de Programari LliureTreball de Final de Master

Implementacio de la Botifarrautilitzant WebSocket, HTML5 i

Javascript

Autor: Sergi Almacellas AbellanaDirector: Juan Manuel Gimeno Illa

26 de juliol de 2012

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 2: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

1 IntroduccioObjectiusRequeriments del sistema

2 Metodologia

3 Tecnologies utilitzadesNode.jsWebSocketsHTML5Per a que s’utilitzen?

4 DesenvolupamentLogica BotifarraComunicacio client-servidor

5 Demostracio

6 Conclusions

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 3: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

ObjectiusRequeriments del sistema

Introduccio

Que es la botifarra?

Joc de Cartes, que utilitza la baralla espanyola.

Tradicionalment jugat a Catalunya.

4 Jugadors, 2 equips de 2 jugadors.

Que s’ha implementat?

El joc de la botifarra a traves de navegador web.

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 4: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

ObjectiusRequeriments del sistema

Objectius

Objectius principals

Implementar un joc de la botifarra.

Presa de contacte amb noves tecnologies.

Objectius secundaris

Utilitzar forges per la comparticio de codi.

Utilitzar noves metodologies de treball ( TDD/BDD)

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 5: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

ObjectiusRequeriments del sistema

Requeriments del sistema

Logica Botifarra

Complir amb les regles de la botifarra.

Jugadors automatitzats.

Entorn Web

Programa servidor

Programa client

Multijugador

Permetre comunicacio entre els jugadors.

Temps real.

Capac d’allotjar gran quantitat de jugadors.

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 6: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Metodologia

Metodologies Utilitzades

1 Model Incremental

2 TDD/BDD

TDD/BDD

1 Definir la caracterıstica a implementar.

2 Escriure la seva especificacio.

3 Escriure la implementacio.

4 Comprovar la validesa de la implementacio.

5 Reestructurar/millorar la implementacio.

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 7: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Node.jsWebSocketsHTML5Per a que s’utilitzen?

Tecnologies utilitzades

Principals

1 Node.js

2 WebSockets

3 HTML5

Altres

1 JQuery, CSS i Jade

2 JSON

3 Mocha i JsCoverage

4 Git

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 8: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Node.jsWebSocketsHTML5Per a que s’utilitzen?

Node.js

Que es Node.js

Framework multiplataforma execucio codi Javascript per la bandadel servidor.

Caracterıstiques

Entrada/Sortida Asıncrona.

Multiples fils d’execucio de forma transparent per alprogramador.

Basat en esdeveniments.

Gran quantitat de llibreries disponibles i gestor de les mateixes.

Suport integrat pels protocols TCP,DNS,HTTP.

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 9: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Node.jsWebSocketsHTML5Per a que s’utilitzen?

Codi sıncron vs. codi asıncron

Codi sıncron:

Espera a obtenir els recursos externs (Fitxers,BD). Necessitat d’usdels threads per paralelitzar.

Codi asıncron:

NO s’espera, es programa l’execucio de codi quan el recurs estiguidisponible.

Com s’implementa en node?

Bucle d’esdeveniments.

Emisio d’events.

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 10: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Node.jsWebSocketsHTML5Per a que s’utilitzen?

Node.js

Beneficis de Node.js

No hi ha bloquejos.

Simplicitat del codi.

Velocitat.

Per a que s’utilitza?

Desenvolupament d’aplicacions o serveis web.

Sistemes d’intercanvi de missatges.

Servidors per a jocs multijugador basats en HTML5

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 11: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Node.jsWebSocketsHTML5Per a que s’utilitzen?

WebSockets

Problemes del protocol HTTP

Comunicacio unidireccional.

Gran quantitat d’informacio addicional (capcaleres).

Refresc de la informacio.

Que ens permeten els WebSockets?

Canal de comunicacio bidireccional.

Reduir la informacio addicional.

Informacio en temps real.

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 12: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Node.jsWebSocketsHTML5Per a que s’utilitzen?

HTML5

Que es HTML5?

Ultima versio del llenguatge de marcatge utilitzat per escriurepagines web.

Novetats

1 Millor estructuracio del documents.

2 Contingut multimedia: audio, vıdeo, animacions (canvas).

Beneficis

A l’estar estandarditzats son suportats de forma nativa per tots elsnavegadors web moderns.

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 13: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Node.jsWebSocketsHTML5Per a que s’utilitzen?

Per a que s’utilitzen?

Node.js

Encarregat d’allotjar tota la logica del servidor de partides.

Websockets

S’encarrega de realitzar el transport de la informacio entre el clienti el servidor.

HTML5

S’utilitza l’etiqueta canvas per tal de dibuixar la interfıcie del joc irealitzar les animacions corresponents

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 14: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Node.jsWebSocketsHTML5Per a que s’utilitzen?

Per a que s’utilitzen?

Altres

jQuery, CSS, Jade ⇒ Capa de presentacio del sistema.

JSON ⇒ Estructuracio de la informacio que s’envia a travesdels WebSockets.

Mocha i JSCoverage ⇒ Jocs de Proves

Git ⇒ Allotjament del codi font

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 15: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Logica BotifarraComunicacio client-servidor

Logica Botifarra

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 16: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Logica BotifarraComunicacio client-servidor

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 17: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Provem-ho

http://buti.koolpi.com

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 18: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Conclusions

TDD/BDD

Augmenten l’estabilitat del codi ⇒ millora de la productivitat.

Permet mesurar l’estat del desenvolupament.

HTML5

Augment de caracterıstiques ⇒ semblanca entorn d’escriptori.

WebSockets

Gran volum de dades ⇒ millora el real-time.

Node.js

Estabilitat + Conjunt de moduls ⇒ facilitat desenvolupament.

Disseny asıncron + Esdeveniments ⇒ + peticions - recursos.

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 19: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Conclusions

Desenvolupament d’aplicacions web.

Independencia Sistema Operatiu.

Independencia Tipus dispositiu.

Sense realitzar cap tipus d’instal·lacio.

Permet la comparticio d’informacio.

Que suposa?

Gran futur en el desenvolupament d’aplicacions.

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 20: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Treball futur

Adaptacio interfıcie telefons mobils.

Historial de partides.

Classificacio de jugadors.

Millora de la inteligencia aritifical.

Implementacio variants de la botifarra.

Implementacio de campionats.

Integracio amb xarxes socials.

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web

Page 21: Butifarra Implementation on Node.js, WebSockets and HTML5

IntroduccioMetodologia

Tecnologies utilitzadesDesenvolupament

DemostracioConclusions

Voleu col·laborar amb el projecte?

https://github.com/pokoli/ButiJS

Dubtes/Preguntes?

Correu electronic: [email protected]

Twitter: @pokoli srk

Sergi Almacellas Abellana [email protected] Implementacio de la botifarra a traves de Web