partyrocking: jugando con javascript y websockets

30
Partyrocking By @pekewake and @dvdchavarri

Upload: ruchavarri

Post on 06-May-2015

740 views

Category:

Technology


5 download

DESCRIPTION

En el mundillo web siempre hemos visto la comunicación síncrona como asignatura pendiente, hasta ahora las alternativas eran muy complejas, hasta la aparición de los websockets. Seguramente todos hemos alucinado con la creación de nuestro primer chat y nos hemos emocionado con sus posibilidades. Nuestra propuesta es jugar con el chat hasta convertirlo en un juego matazombies, demostrando el potencial del mix Javascript, websockets con NodeJS, y terminar con un debate sobre las posibilidades de futuro. Contenido de la charla: - Tras una breve introducción de las tecnologías que vamos a utilizar. partiremos de una aplicación básica de chat, que iremos modificando hasta convertirla en un juego interactivo. - Buenas prácticas y lecciones aprendidas, desde el despliegue en dispositivos móviles, la gestión de participantes, hasta la sincronización y rendimiento del interfaz. - Visualización de algunas demos y ejemplos. - Analizaremos las nuevas oportunidades en el mercado del Gaming, donde el rendimiento ya no es un problema con aceleradores de JS como CocoonJS o Famo.us, o la escalabilidad de los servicios de Websockets. Para ver algunos experimientos, visitar: http://www.partyrocking.tv

TRANSCRIPT

Page 1: PartyRocking: Jugando con Javascript y Websockets

Partyrocking

By @pekewake and @dvdchavarri

Page 3: PartyRocking: Jugando con Javascript y Websockets

Introduction

What we are going to talk about

Practical Example – ZombieRocking

Personal Experience

Future Possibilities

Page 5: PartyRocking: Jugando con Javascript y Websockets

From Chat to Realtime Game

Technology

Page 6: PartyRocking: Jugando con Javascript y Websockets

From Chat to Realtime Game

1) Scene

2) Events

3) Chat

4) ZombieRocking

5) World of ZombieRocking

Page 7: PartyRocking: Jugando con Javascript y Websockets

From Chat to Realtime Game

1) Scene

Page 8: PartyRocking: Jugando con Javascript y Websockets

From Chat to Realtime Game

1) Scene .html

scene.js

ally.js

other Frameworks

Our trick: CAAT no intrusive

“Game Framework” that help

us to encapsulate in our

examples the “Canvas”

interaction throw object

concepts like Director,

Scene, Actors & gameloop).

Page 9: PartyRocking: Jugando con Javascript y Websockets

From Chat to Realtime Game

Behaviours

Breath

Walk - Wait

Shot

Input Controls

2) Events

Page 10: PartyRocking: Jugando con Javascript y Websockets

From Chat to Realtime Game

Behaviors Inputs

2) Events

Page 11: PartyRocking: Jugando con Javascript y Websockets

From Chat to Realtime Game

3) Chat

io.sockets.emit(“msg”)

socketio.emit(“msg”) socketio.emit(“msg”)

Page 12: PartyRocking: Jugando con Javascript y Websockets

From Chat to Realtime Game

Server

(node)

3) Chat

Client

(html)

source code

Page 13: PartyRocking: Jugando con Javascript y Websockets

From Chat to Realtime Game

4) ZombieRocking

Emit clientToServer

Emit websocket action Left

action Right

action Wait

action Shot

Page 14: PartyRocking: Jugando con Javascript y Websockets

From Chat to Realtime Game

4) ZombieRocking Update Controls Manage Events

Page 15: PartyRocking: Jugando con Javascript y Websockets

From Chat to Realtime Game

5) World of ZombieRocking

emit

clientToServer

Emit websocket

Page 16: PartyRocking: Jugando con Javascript y Websockets

From Chat to Realtime Game

5) World of ZombieRocking

server (node) client

Page 17: PartyRocking: Jugando con Javascript y Websockets

Now What?

Let deploy the App

in Smartphones !

Page 18: PartyRocking: Jugando con Javascript y Websockets

Now What? Deploy the App in Smartphones

Inconveniences

WebSocket Support

Performance

Native Interaction

Page 19: PartyRocking: Jugando con Javascript y Websockets

Inconveniences

WebSocket Support

http://caniuse.com/websockets

Page 20: PartyRocking: Jugando con Javascript y Websockets

Inconveniences

Performance - JS Acceleration

CocoonJS - Canvas Acceleration

http://sumonhtml5.ludei.com/

Famo.us - HTML Acceleration

http://famo.us/

Page 21: PartyRocking: Jugando con Javascript y Websockets

Inconveniences

Native Interaction with HTML5 Capabilities

Supported

GeolocationAPI

Offline support

WebStorage

2D animations

+ Hybrid Approach

Camera

Notifications

Sensors

Device Info

Market Store

Page 22: PartyRocking: Jugando con Javascript y Websockets

Deploying the App in Smartphones

Hybrid Mobile App Frameworks

Cordova / PhoneGap (Javascript)

(IBM Worklite, HP Anywhere, Intel XDK, SAP Platform –SUP)

Appcelerator Titanium (Javascript)

KonyOne (Lua & Javascript)

Xamarin (C#)

Rhodes (Ruby)

Page 23: PartyRocking: Jugando con Javascript y Websockets

Deploying the App in Smartphones

Appcelerator Titanium

http://www.appcelerator.com/

Proprietary Software

Compiles to native code

Proprietary JavaScript UI

that maps to native OS UI

Enterprise Support

Android, IOS

(Windows phone, BlackBerry

and Tizen, soon)

Page 24: PartyRocking: Jugando con Javascript y Websockets

Deploying the App in Smartphones

Cordova PhoneGap

http://phonegap.com/

Open Source

Wraps the webView

HTML5 & CSS3

Great OpenSource

Community

Most Mobile Platforms

Page 25: PartyRocking: Jugando con Javascript y Websockets

Now What? Deploy the App in Smartphones

A few Pointers

Data on the wire!

Please don't send your app HTML from the server,

Javascript does a perfect job rendering it

Use local storage

Whenever possible, show cached content to the user

Write plugins & custom native UI

Sometimes is worth the development of Native features

Page 26: PartyRocking: Jugando con Javascript y Websockets

What about WebSockets Scalability?

MVC Real-time

frameworks

http://vschart.com/compare/meteor-web-framework/vs/derbyjs/vs/sails-js

Cross-platform

OpenSource,Scaffolding

Multilingual

Yes

Yes

Yes

Design pattern Resource View

Presenter Model-View-Controller

Model-View-Controller

Active-Record

Database MongoDB

MongoDB

Redis

MySQL, MongoDB,Flat

File, Redis,

PostgreSQL

Community Driven Good Basic Good

Programming paradigm Reactive programming

Component-oriented

Pub/Sub

Component-oriented

Event-driven Reactive

programming

Event-driven

Preference 27% 38% 35%

Page 27: PartyRocking: Jugando con Javascript y Websockets

What about WebSockets Scalability?

Pusher http://pusher.com/

Tambur.io https://www.tambur.io/

WebSocket Server Providers:

Firebase https://www.firebase.com/

Page 28: PartyRocking: Jugando con Javascript y Websockets

Just one more demonstration

Demo Time !!!

World of ZombieRocking

Page 30: PartyRocking: Jugando con Javascript y Websockets

By @pekewake..

@dvdchavarri

“Be Partyrocking my friend…”

The twins