SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
Desarrollando el Juego del
Parqués/Parchís en
ReactJS/WebSockets
Jorge Rubiano
@ostjh
Aprendiendo a través del desarrollo de juegos
https://github.com/jorger
Aprendiendo ReactJS a través de Juegos
https://bit.ly/2XH11CGhttps://bit.ly/2VmrWChhttps://bit.ly/34KvpgS
● Profundizar en el conocimiento de ReactJS y las
nuevas funcionalidades que esta librería nos ofrece,
por ejemplo: hooks suspense lazy, entre otras
● Hacer uso de WebSockets para jugabilidad en
tiempo real.
● Mejorar los conocimientos relacionados a CSS/CSS3
● Crear una aplicación/juego que funcione offline,
haciendo uso de ServiceWorker (PWA)
● Hacer uso de autenticación a través de redes
sociales y/o servicios, haciendo uso de PassportJS y
de las estrategias necesarias para cada uno de los
servicios utilizados (Github, Twitter y Google)
Motivación.
El parqués es un juego de mesa de origen Colombiano,
derivado del parchís Español y este a su vez del antiguo
pachisi o chaupar de la India.
Tanto la versión Colombiana como la Española guardan varias
similitudes en cuanto a las reglas.
El parqués/Parchís
https://es.wikipedia.org/wiki/Parqu%C3%A9s
● Se utiliza un tablero en el cual pueden jugar
de dos a cuatro jugadores.
● Hace uso de dos dados.
● Cada jugador cuenta con cuatro fichas, las
cuales inician en la cárcel.
● Existen casillas que son marcadas como
seguros.
● Si una ficha de diferente color cae en una
casilla donde se encuentra otra ficha, la
enviará a la cárcel.
● Gana el jugador que lleve las 04 fichas a la
meta.
Reglas.
● Para sacar a una ficha de la cárcel el jugador
deberá obtener un cinco, bien por que uno de los
dados obtuvo un cinco o porque la sumatoria de los
dos dados es cinco, se sacará una ficha, si el
usuario obtiene pares de 5 sacará dos fichas de la
cárcel.
● Si dos fichas del mismo color caen en la misma
celda, forman una barrera. Ni la ficha del jugador ni
la ficha del oponente pueden cruzar el bloqueo. Si
un jugador no puede mover ninguna ficha debido a
un bloqueo, el turno se perderá.
● Si el jugador obtiene un par, entonces el jugador se
ve obligado a romper la barrera (si existe)
Reglas.
● Si existen dos fichas de diferentes colores formarán
un bloqueo en una celda segura y se aplicarán las
mismas reglas que las anteriores para eliminar las
barreras.
● Si un jugador envía una ficha a la cárcel, obtendrá
una recompensa de 20 movimientos que no se
pueden dividir entre las fichas.
● Si un jugador lleva una ficha a la meta, obtendrá una
recompensa de 10 movimientos que no se pueden
dividir entre las fichas.
● Si un jugador obtiene tres pares consecutivos, la
última ficha que haya movido será enviada a la cárcel.
Reglas.
https://parchisreact.herokuapp.com/
Jugar!
Modalidades de Juego
● Modo Offline: Permite que el juego sea
jugado en un mismo dispositivo (sin requerir
conexión a internet), a su vez se puede
tener las siguientes variaciones:
1. Jugar dos, tres o cuatro jugadores.
2. Jugar versus un Bot.
3. Jugar entre bots.
Ejemplo Juego bots: https://youtu.be/l8iZHvhWtoc
Modalidades de juego.
Modo Online: Permite dos o cuatro jugadores puedan jugar en “tiempo real” en
su propio dispositivo, este modo hace uso de websockets/Socket.io, permitiendo
que cada usuario envíe sus movimientos a los demás jugadores.
1. Random selection.
2. Play with friends.
3. Party mode.
Modalidades de juego.
1. Random selection.
Se selecciona de forma
aleatoria el contrincante.
Ejemplo Juego - cuatro jugadores: https://youtu.be/WKU4IRVuM9o
Modalidades de juego
2. Play with friends.
Permite crear una sala
privada, para iniciar una
partida con un amig@
Modalidades de juego
3. Party mode.
Modo especial en el cual se
fusionan los tipos offline y online,
en este caso los jugadores harán
uso de un sólo tablero y las
acciones de movimientos y
lanzamiento de dados se podrían
hacer desde un dispositivo móvil
Modalidades de juego
Party Mode
Chat/emojis
● Emojis: Permite que un jugador pueda
expresarse a través del uso de emojis y
mensajes predeterminados durante una
partida, igualmente existe la opción
para silenciar un usuario si fuese
necesario.
● Chat: Igualmente existe un chat desde
el cual los usuarios podrán conversar
durante una partida online, los
mensajes escritos no son almacenados.
Otras características
Stack
El juego está desarrollado haciendo uso de
la librería conocida como ReactJS, en este
caso se hizo uso del conocido paquete CRA
(Create React APP) el cual permite un
rápido inicio en el uso de ReactJS, debido a
que nos configura por defecto todo el
entorno, como por ejemplo configuraciones
relacionadas a WebPack, workbox para el
manejo de ServiceWorkers/PWA, entre otras
características.
Front
● Reach Router: Para manejar las rutas a nivel de front.
● howler: Para el manejo de sonidos
● react-countdown-circle-timer: Para manejar un cronometro en las partidas
online.
● react-dice-complete: Para el manejo de los dados, este paquete otorga
una gran flexibilidad para manejar la animación de los dados.
● socket.io-client: Este es el cliente para la popular librería conocida como
socket.io, la cual facilita el uso de websockets
● sweetalert: Para el manejo de los mensajes/modals en el juego.
● react-app-rewired: Permite reescribir algunas reglas de CRA, sin la
necesidad de hacer un eject.
Front
NodeJS:
● ExpressJS
● MySql
● redis
● socket.io
● PassportJS
BackEnd
BackEnd - FrontEnd
Hooks, Suspense, Lazy
https://bhanu.io/easy-code-splitting-using-react-lazy-and-suspense-ec5295b8082e
Arquitectura de
Sockets
Arquitectura - Tiempo real
Arquitectura - Party mode
Desafíos
Desafíos
● Creación del escenario/board a través de CSS y ubicación de cada unas de las
celdas en el escenario de forma dinámica.
● Establecer el movimiento de las fichas en el board, validar cuando se encuentra
más de una ficha en una celda y establecer posiciones que evite que una ficha
quede sobre otra.
● Manejo del estado de cada una de las fichas, las cuales tuvieran
"conocimiento" en qué posición/celda se encuentra, el tipo de celda (salida,
seguro, meta).
● Sincronización de los eventos realizados a través de los websockets.
● Hacer distinción entre el router manejado en el front, versus el router manejado
en el backend.
● Para el front se hizo uso de Reach Router para así definir diferentes tipos de páginas,
pero igualmente se hizo uso del router de ExpressJS, en algún momento existió un
conflicto entre las rutas, es decir, cuando se ponía una ruta que hacía referencia al
llamado en el backend, quien capturaba la ruta era el front, mostrando que dicha ruta
no existía, se hacía necesario crear algunas rutas con las cuales se podía hacer
referencia a llamadas del API en el backend, además de rutas necesarias para la
autenticación social.
Desafíos
Desafíos
Por defecto CRA, maneja workbox para el manejo y configuración de los
serviceworkers, esté está configurado como cache firts por lo que toda ruta y/o
assets será chacheado, esto es muy bueno ya que permite que la aplicación
pueda seguir funcionando incluso si el usuario no tiene conexión a internet, pero
al chachear todo también existía el problema que rutas relacionadas a llamados
al API y rutas relacionadas a la autenticación fueran chacheadas, para evitar esto
se podría realizar un eject de CRA exponiendo toda la configuración que éste
tiene, pero se perdería los beneficios que CRA entrega, para evitar ello existe el
paquete react-app-rewired el cual permite reescribir algunas de las reglas que
CRA tiene, sin la necesitad de realizar un eject, para ello se debe realizar el
cambio en el comando que crea el build npm run build
Desafíos
Desafíos
Desafíos
CRA, por defecto monta un servidor, usualmente en el puerto 3000, (aunque
puede ser cambiando PORT=3001 react-scripts start por ejemplo), en este caso
para permitir hacer la autenticación social y el manejo de sockets era necesario
tener otro servidor, CRA entrega una solución la cual es estableciendo un proxy
para hacer uso de este es necesario establecerlo en el package.json
Desafíos
Nueva versión de la APP
Lighthouse
https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https://parchisreact.herokuapp.com/
Conclusiones
● Este tipo de aplicaciones/juegos, es posible ser desarrollado en
cualquier librería, no es exclusivo a ReactJS.
● El manejo de componentes ayudó a un rápido desarrollo del juego.
● Existe una gran variedad de paquetes/librerías que ayudan a un
rápido desarrollo.
● Aprender nuevas tecnologías/lenguajes/librerías a través de
desarrollos de este tipo de actividades es divertido y desafiante.
Conclusiones
Resources
● https://dev.to/jorger/recreando-el-parques-parchis-en-reactjs-primera-parte-nkk
● https://dev.to/glukmann/let-users-know-when-you-have-updated-your-service-w
orker-in-create-react-app-3il9
● https://moduscreate.com/blog/drawing-triangles-in-css/
● https://github.com/Pomax/react-onclickoutside/issues/321
● https://codepen.io/JakubHonisek/pen/qjpeeO
● https://github.com/AdamTyler/react-dice-complete
● https://overreacted.io/making-setinterval-declarative-with-react-hooks/
● https://es.wikipedia.org/wiki/Parch%C3%ADs#Sobre_el_5
¿Preguntas?

Más contenido relacionado

Similar a Bogota js parchis

William fabricio manual de sistemas sas
William fabricio manual de sistemas sasWilliam fabricio manual de sistemas sas
William fabricio manual de sistemas sasRafael Toro
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Manual de usuario crud django
Manual de usuario crud djangoManual de usuario crud django
Manual de usuario crud djangoDaniel Arevalo
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y GoJM Robles
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grailsbetabeers
 
Presentacion parchis 2.0
Presentacion   parchis 2.0Presentacion   parchis 2.0
Presentacion parchis 2.0reyesbadi
 
Manual del programador (saber matemático)
Manual del programador  (saber matemático)Manual del programador  (saber matemático)
Manual del programador (saber matemático)Salazar Garcia Diana
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandboxTensor
 
Workshop Scratch PYP 15_16_set 2014
Workshop Scratch PYP 15_16_set 2014Workshop Scratch PYP 15_16_set 2014
Workshop Scratch PYP 15_16_set 2014Elena Jurado
 
JSR354: Moneda y Dinero - Taller
JSR354: Moneda y Dinero - TallerJSR354: Moneda y Dinero - Taller
JSR354: Moneda y Dinero - TallerAlexis Lopez
 
Instalación y configuración de sgbd presentacion
Instalación y configuración de sgbd presentacionInstalación y configuración de sgbd presentacion
Instalación y configuración de sgbd presentacionhugoAlvidrez
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desdejbersosa
 

Similar a Bogota js parchis (20)

Manual de uso_de_squid
Manual de uso_de_squidManual de uso_de_squid
Manual de uso_de_squid
 
William fabricio manual de sistemas sas
William fabricio manual de sistemas sasWilliam fabricio manual de sistemas sas
William fabricio manual de sistemas sas
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Manual de usuario crud django
Manual de usuario crud djangoManual de usuario crud django
Manual de usuario crud django
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y Go
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
 
Presentacion parchis 2.0
Presentacion   parchis 2.0Presentacion   parchis 2.0
Presentacion parchis 2.0
 
Manual del programador (saber matemático)
Manual del programador  (saber matemático)Manual del programador  (saber matemático)
Manual del programador (saber matemático)
 
Introducción a groovy & grails
Introducción a groovy & grailsIntroducción a groovy & grails
Introducción a groovy & grails
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Workshop Scratch PYP 15_16_set 2014
Workshop Scratch PYP 15_16_set 2014Workshop Scratch PYP 15_16_set 2014
Workshop Scratch PYP 15_16_set 2014
 
JSR354: Moneda y Dinero - Taller
JSR354: Moneda y Dinero - TallerJSR354: Moneda y Dinero - Taller
JSR354: Moneda y Dinero - Taller
 
Tp1 db avanz-v1.1
Tp1 db avanz-v1.1Tp1 db avanz-v1.1
Tp1 db avanz-v1.1
 
Juego de la Oca 3.0
Juego de la Oca 3.0Juego de la Oca 3.0
Juego de la Oca 3.0
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Instalación y configuración de sgbd presentacion
Instalación y configuración de sgbd presentacionInstalación y configuración de sgbd presentacion
Instalación y configuración de sgbd presentacion
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Splat - Programador PHP
Splat - Programador PHPSplat - Programador PHP
Splat - Programador PHP
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desde
 

Más de Jorge Rubiano

Sistema de Vídeo Clases
Sistema de Vídeo ClasesSistema de Vídeo Clases
Sistema de Vídeo ClasesJorge Rubiano
 
Tecnologías Web al servicio del desarrollo Móvil (WebSockets, WebRTC)
Tecnologías Web al servicio del desarrollo Móvil (WebSockets, WebRTC)Tecnologías Web al servicio del desarrollo Móvil (WebSockets, WebRTC)
Tecnologías Web al servicio del desarrollo Móvil (WebSockets, WebRTC)Jorge Rubiano
 
Aprendizaje y juegos - Transmedia UMB
Aprendizaje y juegos - Transmedia UMBAprendizaje y juegos - Transmedia UMB
Aprendizaje y juegos - Transmedia UMBJorge Rubiano
 
Platform from mobile learning
Platform from mobile learningPlatform from mobile learning
Platform from mobile learningJorge Rubiano
 
WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...
WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...
WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...Jorge Rubiano
 
Experiencia de uso de WebRTC en la educación
Experiencia de uso de WebRTC en la educaciónExperiencia de uso de WebRTC en la educación
Experiencia de uso de WebRTC en la educaciónJorge Rubiano
 

Más de Jorge Rubiano (6)

Sistema de Vídeo Clases
Sistema de Vídeo ClasesSistema de Vídeo Clases
Sistema de Vídeo Clases
 
Tecnologías Web al servicio del desarrollo Móvil (WebSockets, WebRTC)
Tecnologías Web al servicio del desarrollo Móvil (WebSockets, WebRTC)Tecnologías Web al servicio del desarrollo Móvil (WebSockets, WebRTC)
Tecnologías Web al servicio del desarrollo Móvil (WebSockets, WebRTC)
 
Aprendizaje y juegos - Transmedia UMB
Aprendizaje y juegos - Transmedia UMBAprendizaje y juegos - Transmedia UMB
Aprendizaje y juegos - Transmedia UMB
 
Platform from mobile learning
Platform from mobile learningPlatform from mobile learning
Platform from mobile learning
 
WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...
WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...
WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...
 
Experiencia de uso de WebRTC en la educación
Experiencia de uso de WebRTC en la educaciónExperiencia de uso de WebRTC en la educación
Experiencia de uso de WebRTC en la educación
 

Último

ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxnandoapperscabanilla
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVGiustinoAdesso1
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIIsauraImbrondone
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperiomiralbaipiales2016
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 

Último (20)

ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCV
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperio
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 

Bogota js parchis

  • 1. Desarrollando el Juego del Parqués/Parchís en ReactJS/WebSockets Jorge Rubiano @ostjh
  • 2. Aprendiendo a través del desarrollo de juegos https://github.com/jorger
  • 3. Aprendiendo ReactJS a través de Juegos https://bit.ly/2XH11CGhttps://bit.ly/2VmrWChhttps://bit.ly/34KvpgS
  • 4. ● Profundizar en el conocimiento de ReactJS y las nuevas funcionalidades que esta librería nos ofrece, por ejemplo: hooks suspense lazy, entre otras ● Hacer uso de WebSockets para jugabilidad en tiempo real. ● Mejorar los conocimientos relacionados a CSS/CSS3 ● Crear una aplicación/juego que funcione offline, haciendo uso de ServiceWorker (PWA) ● Hacer uso de autenticación a través de redes sociales y/o servicios, haciendo uso de PassportJS y de las estrategias necesarias para cada uno de los servicios utilizados (Github, Twitter y Google) Motivación.
  • 5. El parqués es un juego de mesa de origen Colombiano, derivado del parchís Español y este a su vez del antiguo pachisi o chaupar de la India. Tanto la versión Colombiana como la Española guardan varias similitudes en cuanto a las reglas. El parqués/Parchís https://es.wikipedia.org/wiki/Parqu%C3%A9s
  • 6. ● Se utiliza un tablero en el cual pueden jugar de dos a cuatro jugadores. ● Hace uso de dos dados. ● Cada jugador cuenta con cuatro fichas, las cuales inician en la cárcel. ● Existen casillas que son marcadas como seguros. ● Si una ficha de diferente color cae en una casilla donde se encuentra otra ficha, la enviará a la cárcel. ● Gana el jugador que lleve las 04 fichas a la meta. Reglas.
  • 7. ● Para sacar a una ficha de la cárcel el jugador deberá obtener un cinco, bien por que uno de los dados obtuvo un cinco o porque la sumatoria de los dos dados es cinco, se sacará una ficha, si el usuario obtiene pares de 5 sacará dos fichas de la cárcel. ● Si dos fichas del mismo color caen en la misma celda, forman una barrera. Ni la ficha del jugador ni la ficha del oponente pueden cruzar el bloqueo. Si un jugador no puede mover ninguna ficha debido a un bloqueo, el turno se perderá. ● Si el jugador obtiene un par, entonces el jugador se ve obligado a romper la barrera (si existe) Reglas.
  • 8. ● Si existen dos fichas de diferentes colores formarán un bloqueo en una celda segura y se aplicarán las mismas reglas que las anteriores para eliminar las barreras. ● Si un jugador envía una ficha a la cárcel, obtendrá una recompensa de 20 movimientos que no se pueden dividir entre las fichas. ● Si un jugador lleva una ficha a la meta, obtendrá una recompensa de 10 movimientos que no se pueden dividir entre las fichas. ● Si un jugador obtiene tres pares consecutivos, la última ficha que haya movido será enviada a la cárcel. Reglas.
  • 11. ● Modo Offline: Permite que el juego sea jugado en un mismo dispositivo (sin requerir conexión a internet), a su vez se puede tener las siguientes variaciones: 1. Jugar dos, tres o cuatro jugadores. 2. Jugar versus un Bot. 3. Jugar entre bots. Ejemplo Juego bots: https://youtu.be/l8iZHvhWtoc Modalidades de juego.
  • 12. Modo Online: Permite dos o cuatro jugadores puedan jugar en “tiempo real” en su propio dispositivo, este modo hace uso de websockets/Socket.io, permitiendo que cada usuario envíe sus movimientos a los demás jugadores. 1. Random selection. 2. Play with friends. 3. Party mode. Modalidades de juego.
  • 13. 1. Random selection. Se selecciona de forma aleatoria el contrincante. Ejemplo Juego - cuatro jugadores: https://youtu.be/WKU4IRVuM9o Modalidades de juego
  • 14. 2. Play with friends. Permite crear una sala privada, para iniciar una partida con un amig@ Modalidades de juego
  • 15. 3. Party mode. Modo especial en el cual se fusionan los tipos offline y online, en este caso los jugadores harán uso de un sólo tablero y las acciones de movimientos y lanzamiento de dados se podrían hacer desde un dispositivo móvil Modalidades de juego
  • 17. Chat/emojis ● Emojis: Permite que un jugador pueda expresarse a través del uso de emojis y mensajes predeterminados durante una partida, igualmente existe la opción para silenciar un usuario si fuese necesario. ● Chat: Igualmente existe un chat desde el cual los usuarios podrán conversar durante una partida online, los mensajes escritos no son almacenados. Otras características
  • 18. Stack
  • 19. El juego está desarrollado haciendo uso de la librería conocida como ReactJS, en este caso se hizo uso del conocido paquete CRA (Create React APP) el cual permite un rápido inicio en el uso de ReactJS, debido a que nos configura por defecto todo el entorno, como por ejemplo configuraciones relacionadas a WebPack, workbox para el manejo de ServiceWorkers/PWA, entre otras características. Front
  • 20. ● Reach Router: Para manejar las rutas a nivel de front. ● howler: Para el manejo de sonidos ● react-countdown-circle-timer: Para manejar un cronometro en las partidas online. ● react-dice-complete: Para el manejo de los dados, este paquete otorga una gran flexibilidad para manejar la animación de los dados. ● socket.io-client: Este es el cliente para la popular librería conocida como socket.io, la cual facilita el uso de websockets ● sweetalert: Para el manejo de los mensajes/modals en el juego. ● react-app-rewired: Permite reescribir algunas reglas de CRA, sin la necesidad de hacer un eject. Front
  • 21. NodeJS: ● ExpressJS ● MySql ● redis ● socket.io ● PassportJS BackEnd
  • 28. Desafíos ● Creación del escenario/board a través de CSS y ubicación de cada unas de las celdas en el escenario de forma dinámica. ● Establecer el movimiento de las fichas en el board, validar cuando se encuentra más de una ficha en una celda y establecer posiciones que evite que una ficha quede sobre otra. ● Manejo del estado de cada una de las fichas, las cuales tuvieran "conocimiento" en qué posición/celda se encuentra, el tipo de celda (salida, seguro, meta). ● Sincronización de los eventos realizados a través de los websockets. ● Hacer distinción entre el router manejado en el front, versus el router manejado en el backend.
  • 29. ● Para el front se hizo uso de Reach Router para así definir diferentes tipos de páginas, pero igualmente se hizo uso del router de ExpressJS, en algún momento existió un conflicto entre las rutas, es decir, cuando se ponía una ruta que hacía referencia al llamado en el backend, quien capturaba la ruta era el front, mostrando que dicha ruta no existía, se hacía necesario crear algunas rutas con las cuales se podía hacer referencia a llamadas del API en el backend, además de rutas necesarias para la autenticación social. Desafíos
  • 31. Por defecto CRA, maneja workbox para el manejo y configuración de los serviceworkers, esté está configurado como cache firts por lo que toda ruta y/o assets será chacheado, esto es muy bueno ya que permite que la aplicación pueda seguir funcionando incluso si el usuario no tiene conexión a internet, pero al chachear todo también existía el problema que rutas relacionadas a llamados al API y rutas relacionadas a la autenticación fueran chacheadas, para evitar esto se podría realizar un eject de CRA exponiendo toda la configuración que éste tiene, pero se perdería los beneficios que CRA entrega, para evitar ello existe el paquete react-app-rewired el cual permite reescribir algunas de las reglas que CRA tiene, sin la necesitad de realizar un eject, para ello se debe realizar el cambio en el comando que crea el build npm run build Desafíos
  • 34. CRA, por defecto monta un servidor, usualmente en el puerto 3000, (aunque puede ser cambiando PORT=3001 react-scripts start por ejemplo), en este caso para permitir hacer la autenticación social y el manejo de sockets era necesario tener otro servidor, CRA entrega una solución la cual es estableciendo un proxy para hacer uso de este es necesario establecerlo en el package.json Desafíos
  • 38. ● Este tipo de aplicaciones/juegos, es posible ser desarrollado en cualquier librería, no es exclusivo a ReactJS. ● El manejo de componentes ayudó a un rápido desarrollo del juego. ● Existe una gran variedad de paquetes/librerías que ayudan a un rápido desarrollo. ● Aprender nuevas tecnologías/lenguajes/librerías a través de desarrollos de este tipo de actividades es divertido y desafiante. Conclusiones
  • 39. Resources ● https://dev.to/jorger/recreando-el-parques-parchis-en-reactjs-primera-parte-nkk ● https://dev.to/glukmann/let-users-know-when-you-have-updated-your-service-w orker-in-create-react-app-3il9 ● https://moduscreate.com/blog/drawing-triangles-in-css/ ● https://github.com/Pomax/react-onclickoutside/issues/321 ● https://codepen.io/JakubHonisek/pen/qjpeeO ● https://github.com/AdamTyler/react-dice-complete ● https://overreacted.io/making-setinterval-declarative-with-react-hooks/ ● https://es.wikipedia.org/wiki/Parch%C3%ADs#Sobre_el_5