☁️ Hospedagem Cloud e VPS - Alta performance para seus projetos com desconto imperdível 💰

Kinghost | Blog

Nosso Desafio WordPress no RD Summit!

Publicado em 07/11/2016

Atualizado em 07/11/2016

Implementando um jogo multiplayer usando node.js e websockets na kinghost

Nos dias 03 e 04 de novembro aconteceu em Florianópolis RD summit, o mais completo evento de Marketing Digital e Vendas da América Latina. E claro, a KingHost esteve presente com um estande no evento \o/.
Caso você tenha passado por lá pode conhecer nossos produtos (incluindo o lançamento hospedagem WordPress), conversar com a gente e faturar brindes incríveis. Além de tudo isso, apresentamos uma dinâmica muito legal no evento: O desafio WordPress.

Neste artigo vamos apresentar a novidade, mostrando como utilizar sua interface e como foi realizada a sua implementação. O desafio é um quiz dinâmico e interativo, desenvolvido usando Node.js e websockets, onde dois jogadores disputam em tempo real para provar quem tem o maior conhecimento sobre curiosidade do nosso amado CMS. O quiz funciona assim:

O endereço do quiz é acessado de um computador, smart tv ou qualquer outro dispositivo que seja de fácil visualização para ambos os jogadores, nesta instância uma nova sala é criada o que gera um id único para aquela sessão.

game1

Então os dois jogadores devem acessar o mesmo endereço de seus smartphones. Logo que os dois conectarem o jogo se inicia.

 

game2

game3

O jogador que clicar na resposta correta ganhará 5 pontos, e então se inicia um novo turno com uma nova pergunta para os dois jogadores. Caso a resposta escolhida pelo jogador seja incorreta, ele perde 3 pontos e a pergunta segue a mesma até que um dos dois responda corretamente. Este ciclo se repete por 5 turnos/perguntas e então o sistema informa se houve um vencedor ou se houve empate.

Implementação:

Este sistema pode parecer muito complexo a princípio, mas ele se torna simples com o uso do node.js e da biblioteca socket.io que facilita em muito as mensagens de rede usando websockets.

Websockets é um protocolo que fornece canais comunicação full-duplex sobre uma única conexão TCP. O websocket foi padronizado pela IETF na RFC 6455 em 2011, e sua Web IDL.

Sendo assim, o websocket se torna uma excelente opção para sistemas de comunicação que não exigem comunicação em tempo real e que necessitam de escalabilidade. Com o apoio do socket.io, a implementação se torna muito facilitada, pois a biblioteca cuida do gerenciamento das mensagens e eventos. Essa facilidade nos libera tempo e energia para concentrar no que realmente importa, a implementação do sistema que desejamos desenvolver.

É importante ressaltar que para o desenvolvimento deste sistema me baseei no Anagrammatix desenvolvido por ericterpstra. Caso queira conferir a implementação original do sistema, o código está disponível no github.

Quanto ao arquivo que inicializa a aplicação se trata do index.js, nela chamamos todas as dependências da aplicação:

// Importa o Express module
var express = require('express');


// Importa o module 'path' (padrão do Node.js)
var path = require('path');


// Cria uma nova instância do Express
var app = express();


// Importa o arquivo responsável pela lógica do jogo em server side
var agx = require('./agxgame');

Sendo que o na sua criação da instância do mesmo o seguinte código é chamado:

exports.initGame = function(sio, socket){
    io = sio;
    gameSocket = socket;
    gameSocket.emit('connected', { message: "Você está conectado!" });


    // eventos do  Host
    gameSocket.on('hostCreateNewGame', hostCreateNewGame);
    gameSocket.on('hostRoomFull', hostPrepareGame);
    gameSocket.on('hostCountdownFinished', hostStartGame);
    gameSocket.on('hostNextRound', hostNextRound);


    // eventos do Player
    gameSocket.on('playerJoinGame', playerJoinGame);
    gameSocket.on('playerAnswer', playerAnswer);
    gameSocket.on('playerRestart', playerRestart);
}

Nele estão descritos todas as mensagens esperadas pelo host via websocket. Por tanto  quando o host recebe a string ‘hostCreateNewGame’ chamará a função hostCreateNewGame.

Sendo assim podemos facilmente implementar uma aplicação assíncrona entre o host e os jogadores.

Caso queira verificar o código fonte, que está completamente comentado,após o final do evento publicaremos o código fonte da aplicação no github e atualizaremos o artigo com o link.

O que você achou deste conteúdo?

O que você achou deste conteúdo?

William

William Dorneles

É assistente de desenvolvimento no setor de Marketing e estudante de Game Design na Uniritter em Porto Alegre.

William

William Dorneles

É assistente de desenvolvimento no setor de Marketing e estudante de Game Design na Uniritter em Porto Alegre.

Compartilhe esse conteúdo com alguém que possa gostar também

Receba todo mês conteúdos
incríveis como esses para
seguir evoluindo

Conteúdos relacionados

Sua empresa tem alguma vulnerabilidade digital? É preciso ter atenção a todos os detalhes quando se trata de segurança, pois ninguém está imune às ameaças online. Um exemplo disso ocorreu no último ano, quando a OAB sofreu um ataque hacker e, como medida de segurança, o órgão precisou retirar o site e sistemas do ar...

📅 Aulão GRATUITO 🚀 Como VENDER MAIS na internet 💰

Mensagens para você