Presentations
Templates
Features
Teams
Pricing
Log in
Sign up
Log in
Sign up
Menu
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:
Cliente envia timestamps juntamente com cada input
Servidor autoritativamente reconstrói o estado do jogo para a dada timestamp
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é
Made with Slides.com
Ultradius
1,172
Fabrício Matté
Web developer, open source projects contributor and Stack Overflow citizen.
stackoverflow.com/users/1331430/fabricio-matte
Ult_Combo
More from
Fabrício Matté