Logo

dev-resources.site

for different kinds of informations.

Recreando el Parqués/Parchis en ReactJS - Primera Parte

Published at
3/7/2020
Categories
react
pwa
serviceworkers
websockets
Author
jorger
Author
6 person written this
jorger
open
Recreando el Parqués/Parchis en ReactJS - Primera Parte

En este artículo me gustaría compartir la experiencia de desarrollo del Juego El parqués y su variación conocida como El Parchís en ReactJS.

Image_01

El Juego.

Jugar Parchís ReactJS: https://parchisreact.herokuapp.com

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.

Similitudes.

Image_02

  • Se utiliza un tablero en el cual pueden jugar de dos a cuatro jugadores (existen versiones en las cuales se puede jugar un número mayor)
  • 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 (las que son representadas con una estrella y las casillas de salida y llegada)
  • 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.

Diferencias.

Image_03_barrera

  • 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 el par, entonces el jugador se ve obligado a romper la barrera (si existe)
  • 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.

Motivación.

La motivación de crear este juego se basa en lo siguiente:

  • 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 que funcione offline, haciendo uso de ServiceWorker (PWA)
  • Hacer uso de autenticación a través de redes sociales haciendo uso de PassportJS y de las estrategias necesarias para cada una de las redes sociales que se han utilizado (Github, Twitter y Google)

Stack

A continuación listaré el Stack de tecnologías con las cuales se desarrolló el juego.

Front

Como lo había mencionado el juego está hecho 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.

Otros de los paquetes que se ha utilizado a nivel de front son:

Backend

El backend de la aplicación está en NodeJS, haciendo uso de ExpressJS, MySql para persistencia de datos, además de ello se hace uso de los siguientes paquetes:

  • connect-redis: Middleware que permite conectar con Redis (redis se utiliza para guardar la información relacionada a sesiones de usuario, así como para la creación de salas en la modalidad online del juego)
  • passport: Permite el manejo de autenticación, en este caso se hizo autenticación a través de medios sociales, haciendo uso de tres estrategias: passport-github2 passport-google-oauth2 y passport-twitter
  • mysql: Driver que permite la conexión con la base de datos.
  • socket.io: Para el manejo de sockets, en este caso en el lado del servidor
  • redis: Driver para conectar con Redis

En la segunda parte de este artículo hablaré acerca de las modalidades del juego, así como la arquitectura y algunos desafíos en el desarrollo del mismo.

serviceworkers Article's
30 articles in total
Favicon
Service Workers: Revolutionizing Modern Web Apps
Favicon
Building Progressive Web Apps in Angular (using pwafire)
Favicon
Leveraging Service Workers for Advanced Caching Strategies in PWA: A Deep Dive for Beginners
Favicon
Integrating the Cache API with Service Workers
Favicon
Service worker weirdness in Chrome
Favicon
When service workers met framesets
Favicon
JS Service Workers — An Introduction
Favicon
Service workers in create-react-app v4+
Favicon
Offline caching with serviceworkers
Favicon
Why is an external service via internet, e.g. web-push with GCM needed for service workers to push notifications?
Favicon
Stop Bundling Scripts for Better Web Performance
Favicon
Does dev.to ever just hang and not load for you?
Favicon
Service workers con Workbox 3, tu primera vez
Favicon
Recreando el Parqués/Parchis en ReactJS - Primera Parte
Favicon
Recreando el Parqués/Parchis en ReactJS - Segunda Parte
Favicon
Build a Better Web with Service Workers
Favicon
Turn your angular application into PWA through service worker
Favicon
How to Get Videos to Work in Safari With Gatsby and Service Workers
Favicon
Who's using Service Workers?
Favicon
My MVP that's PWA and SPA with just wordpress. I'm seeing 0.5s loads, would adding service workers improve performance?
Favicon
Let Users Know When You Have Updated Your Service Workers in Create React App
Favicon
Help: Should a new service worker force a refresh to update a PWA?
Favicon
Going offline with IndexedDB
Favicon
sw-tools, a library to rule the Service Workers
Favicon
How to optimize your JavaScript app by using service workers
Favicon
Progressive Web Apps: Caching Strategies
Favicon
Paying Attention while Loading Lazily
Favicon
Launching: Push Notifications For Everyone!
Favicon
What service workers are being used on dev.to and what do they do?
Favicon
Steam Roulette

Featured ones: