📅 Conexão KingHost 🚀 Especial Mês das Mulheres - Aulas para apoiar o empreendedorismo feminino 💰

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

Conteúdos relacionados

As ameaças virtuais estão mudando constantemente e se tornando cada dia mais sofisticadas. Por isso, para quem tem um negócio online, a segurança é um ponto que merece grande atenção. De acordo com o Relatório do Sitelock que analisou 14 milhões de sites em 2022, sites recebem cerca de 5.5 vezes mais tráfego de bots...

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

Mensagens para você