Aula 3
TECNOLOGIA EM JOGOS DIGITAIS
JOGOS MASSIVOS DISTRIBUÍDOS
TECNOLOGIA EM JOGOS DIGITAIS
JOGOS MASSIVOS DISTRIBUÍDOS
Marcelo Henrique dos Santos
Marcelo Henrique dos Santos
Email: marcelosantos@outlook.com
Site: www.marcelohsantos.com.br
TECNOLOGIA EM JOGOS DIGITAIS
JOGOS MASSIVOS DISTRIBUÍDOS
Marcelo Henrique dos Santos
Algoritmos distribuídos para
sincronização
Algoritmos distribuídos
para sincronização
• Um dos maiores problemas encontrados nos jogos multi-jogador é o atraso de transmissão da rede. Isto significa a demora entre a geração de um evento por parte de algum jogador e a disseminação do mesmo para os outros.
Algoritmos distribuídos
para sincronização
• É indispensável que cada cliente possua uma visão consistente do estado do jogo, ou seja, é necessário um mecanismo para garantir a ordem global dos eventos.
Algoritmos distribuídos
para sincronização
• Uma grande complicação para a consistência se deve à natureza contínua dos jogos. A ordem na qual os comandos são executados podem criar várias restrições (ex: um jogador que deu um tiro, não pode “resolver” voltar atrás). O sucesso do jogo é totalmente
dependente da
Algoritmos distribuídos
para sincronização
• Duas classificações de algoritmos são propostas para resolver o problema da sincronização.
Algoritmos Conservadores ou Pessimistas: Não
permite a ocorrência da inconsistência.
Algoritmos Otimistas: Permite a ocorrência da
inconsistência, porém toma medidas para sua correção.
Algoritmos distribuídos
para sincronização
• Duas classificações de algoritmos são propostas para resolver o problema da sincronização.
Algoritmos Conservadores ou Pessimistas: Não
permite a ocorrência da inconsistência.
Algoritmos Otimistas: Permite a ocorrência da
inconsistência, porém toma medidas para sua correção.
TECNOLOGIA EM JOGOS DIGITAIS
JOGOS MASSIVOS DISTRIBUÍDOS
Stop and Wait (Lockstep)
Considerado um algoritmo conservador, oStop-and-wait ou Lockstep é, de longe, a técnica mais simples para garantir a consistência. Funciona em esquemas de turnos nos quais nenhum jogador pode avançar para o turno seguinte enquanto todos estiverem no corrente. Este esquema provê uma ordem geral de acontecimentos, pois previne a geração de eventos fora de ordem (todos os eventos do turno K acontecem no turno K).
TECNOLOGIA EM JOGOS DIGITAIS
JOGOS MASSIVOS DISTRIBUÍDOS
Stop and Wait (Lockstep)
O método impossibilita a ocorrência deinconsistências, afinal todos os jogadores estão sempre computando exatamente a mesma informação.
No entanto, não existem garantias do avanço
constante do jogo. O jogador com conexão mais
lenta irá, fatalmente, atrasar os turnos e a interatividade será totalmente prejudicada. A maioria dos jogos FPS deve funcionar como uma simulação constante com baixa latência, sendo assim, este tipo de algoritmo acaba se tornando complicado para estes jogos.
Time Warp e Algoritmo
de Buckets
O Time Warp é considerado um algoritmo otimista. A abordagem é, ao invés de impedir que o erro ocorra (conservadorismo), detectar e corrigir quaisquer diferenças nos estados do jogo.
Os algoritmos otimistas executam eventos ANTES de saberem ao certo que nenhum evento anterior pode chegar e, se erram, reparam as inconsistências.
Este tipo de algoritmo se comporta bem melhor em situações interativas e contínuas.
Time Warp e Algoritmo
de Buckets
A sincronização Time Warp trabalha utilizando um snapshot de cada estado antes de cada execução (snapshot de contexto de execução) e executa um rollback para um estado anterior caso algum evento anterior ao último executado seja recebido.
TECNOLOGIA EM JOGOS DIGITAIS
JOGOS MASSIVOS DISTRIBUÍDOS
Time Warp e Algoritmo
de Buckets
Time Warp e Algoritmo
de Buckets
O rollback restaura o estado do snapshot anterior ao evento que deveria ter sido executado (não foi devido ao atraso), executa-o e, posteriormente, executa todos os outros eventos novamente.
O problema da sincronização Time Warp é que ela requer uma máquina rápida e muita memória.
Afinal, é necessário um snapshot para cada mensagem e as mensagens costumam chegar em uma frequência muito alta (uma a cada 30 milissegundos em média, dependendo do jogo).
Time Warp e Algoritmo
de Buckets
Manter um “histórico” do jogo pode sair caro.
Uma otimização para remover este gargalo é capturar o snapshot periodicamente, ao invés de fazê-lo a cada mensagem.
Porém os rollbacks acabam perdendo um pouco de precisão. Outra complicação para os rollbacks é que o Time Warp assume que eventos geram novos eventos diretamente.
Se um evento A gera o evento B, o cancelamento de A (eventos são cancelados no rollback através de anti-messages) provocará o cancelamento de B.
Time Warp e Algoritmo
de Buckets
Eventualmente, uma geração encadeada de anti-messages pode ocorrer, fazendo com que a rede e o jogo percam tempo “corrigindo” ao invés de “executando” o jogo.
Sem contar o aspecto pouco amigável do rollback para o jogador.
Para compensar um pouco este fato, o algoritmo acelera a aplicação até chegar no estado mais avançado (antes do rollback).
Time Warp e Algoritmo
de Buckets
Para completar, Time Warp executa o rollback imediatamente após detectar um comando atrasado. Por um lado isso é bom, pois faz com que os rollbacks sejam pequenos.
Por outro lado, acaba causando a execução de excessivos rollbacks caso ocorram muitos atrasos.
TECNOLOGIA EM JOGOS DIGITAIS
JOGOS MASSIVOS DISTRIBUÍDOS
Conclusão
Não existem técnicas boas ou ruins, existem técnicas adequadas ou não para os diferentes tipos de jogos. Implementar um algoritmo de Time Warp para um jogo de xadrez ou de truco online é como matar uma formiga com um canhão.
Há pouco tempo atrás, as conexões via modem tornavam muitos jogos, principalmente os FPSs, inviáveis.
A solução acabava sendo reunir as máquinas em algum lugar e montar uma LAN (Local Area Network).
Conclusão
A chegada da banda larga e a disseminação das LAN Houses proporcionaram uma melhora considerável no que diz respeito à qualidade.
Em virtude da “profissionalização” dos jogadores e da modernização dos jogos (evolução da tecnologia) este campo tende ao desenvolvimento. É um prato cheio para os apaixonados por jogos multi-player e por computação.
Bibliografia
Anibolete, Tulio Jorge A. N. S. Algoritmos Distribuídos em Jogos Multi-Usuário. Monografia apresentada na PUC - Rio de Janeiro no ano de 2006.
TECNOLOGIA EM JOGOS DIGITAIS
JOGOS MASSIVOS DISTRIBUÍDOS