AROBET

ULTRADIUS

Shoot 'em up ("shmup")


Multiplayer Online (MO)


Multiplataforma



Internacionalização


Tecnologias e Ferramentas


  • Node.js - Servidor orientado a eventos com entrada e saída de dados não-blocantes
  • Express - O mais famoso e utilizado framework de aplicações Web para Node.js
  • WebSocket - Protocolo para conexão TCP provendo canais de comunicação em tempo real full-duplex
  • Socket.io - Biblioteca de abstração WebSocket cross-browser
  • MongoDB - O mais popular e importante banco de dados NoSQL
  • WebRTC - Protocolo para conexão em tempo real entre browsers
  • Git - Sistema de controle de versão

Tecnologias e Ferramentas


  • UltStyle.js - Guia de princípios de desenvolvimento e estilo de código largamente baseada no conceituado Idiomatic.js
  • AngularJS - Framework JavaScript MVW super-heroico
  • UI Bootstrap - Componentes do reconhecido framework Bootstrap escritos em puro AngularJS.
  • jQuery - Biblioteca JavaScript 9001 utilidades
  • Sass - O mais maduro, estável e poderoso pré-processador CSS
  • ECMAScript 6 - A próxima versão da especificação da linguagem JavaScript
  • Traceur - Compilador de ES.next para JS atual
  • Gulp/Grunt - automatizador de tarefas (task runner)
  • Fluxo de dados

    Multiplayer Online


    • Delay de conexão (lag)
    • Sincronização
    • Frame rate
    • Cheats

    Servidor autoritativo e clientes burros


    Efeito dos delays de rede (lag)

    Previsão client-side


    A representação responde imediatamente à interação do usuário.

    O jogador do cliente está sempre no presente, outros jogadores estão no passado.

    A previsão client-side deve nunca alterar o estado do jogo.

    Problemas de sincronização



    Desencontro do estado previsto e estado autoritativo

    Reconciliação com o servidor


    Problema de desencontro de estados resolvido

    Compensação de lag


    Eventos sensitivos à latência precisam de compensação de lag:

    1. Cliente envia timestamps juntamente com cada input
    2. Servidor autoritativamente reconstrói o estado do jogo para a dada timestamp
    3. Servidor processa a input e envia atualização para os clientes

    Frame rate


    Usando deltatime para manter clientes em sincronia mesmo com frame rates diferentes.

    Cheats


    O servidor sendo a única entidade autoritativa, é possível validar entrada de dados mitigando problemas de cheats.

    No entanto, é impossível prevenir completamente toda e qualquer forma de cheat, logo este não é um foco do projeto ao longo de seu desenvolvimento.

    WebRTC



    Game Engines


    Conclusão


    Fazer um jogo online é fácil.
    Fazer um jogo online bem feito é difícil.

    Ultradius

    By Fabrício Matté

    Ultradius

    • 1,181