Escolar Documentos
Profissional Documentos
Cultura Documentos
Monografia – 2006/01
1) INTRODUÇÃO ...................................................................................................... 3
2) TIPOS DE JOGOS.................................................................................................. 5
5) CONCLUSÃO ...................................................................................................... 16
6) REFERÊNCIAS.................................................................................................... 17
1) INTRODUÇÃO
Os jogos são, sem dúvida, uma das grandes opções de entretenimento proporcionado
pelos computadores. Acostumados a apaixonar muitos durante a juventude, os jogos
costumam ser responsáveis pelo interesse de alguns em pesquisas e desenvolvimento na
área da informática.
Com a evolução das redes de computadores, principalmente a internet, foi possível criar
ambientes virtuais nos quais os jogadores podem interagir entre si e com objetos de um
“mundo virtual”, compartilhando tempo e espaço. Surge então o conceito de jogos
distribuídos ou jogos multi-jogadores.
Para suportar esta evolução, vários tipos de arquiteturas foram propostas e estão em
constante estudo. [3]
Juntamente com a evolução dos jogos, vieram vários desafios, alguns serão abordados
neste trabalho, no que diz respeito à sincronização.
A maioria dos jogos distribuídos é considerada uma aplicação de tempo real. Ou seja,
são sistemas que possuem restrições de tempo para a execução de suas tarefas. [4]
3
Figura – Exemplos de jogos distribuídos.
Estima-se que até o ano de 2009, a indústria de jogos multiplayer na internet irá crescer
até 9.2 bilhões de dólares. A previsão para este ano, 2006, é de 5.2 bilhões. [6]
4
2) TIPOS DE JOGOS
5
3) ARQUITETURAS DE REDES PARA JOGOS
Por esses motivos, essa arquitetura é indicada para redes pequenas, pois as mesmas
costumam ser velozes e estáveis.
6
No modelo cliente/servidor, todos os participantes (clientes) estão conectados no
computador central (servidor). O servidor é responsável por receber os dados de cada
jogador e repassar para os outros. Os clientes, a priori, não possuem conhecimento
sobre os outros computadores. Esse tipo de arquitetura possui as seguintes
características: [3]
7
Segue a tabela com uma comparação entre as arquiteturas.
Cliente/Servidor P2P
8
4) 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. [2]
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 sincronização.
Com base nos tipos de algoritmos já citados, seguem algumas implementações dessas
técnicas:
9
▪ Time Warp e Algoritmo de Buckets [1]
Figura – Algoritmo Time Warp (GVT – Global Virtual Time ou Tempo do Jogo).
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). Manter um “histórico” do jogo
pode sair caro.
10
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).
11
▪ Trailing State Synchronization (TSS) [1]
O TSS mantém e atualiza um número fixo de copias dos estados do jogo, porém
com diferentes tempos de simulação. Cada cópia tera um atraso embutido.
O estado principal, possuidor do menor delay, é o que será renderizado para a
tela dos clientes enquanto os outros trailing states são utilizados para detectar e
corrigir as inconsistências.
12
Se um comando chega atrasado e perde seu tempo de execução, ele é inserido
como próximo evento e é executado imediatamente.
Para detectar inconsistências, cada trailing state compara seu estado com o do
precedente. Quando um comando é executado no último dos trailing states, este
comando é deletado de TODOS os estados, pois ele se torna inútil. O último
traling state não possui um estado de "backup", logo, inconsistências nele não
são detectadas.
13
Segue um exemplo de rollback durante a execução do protocolo:
A primeira figura ilustra uma execução normal, o pacote não chegou atrasado.
14
Terceira Figura – Verificação da inconsistência.
15
5) 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). A chegada da banda larga e a disseminação das LAN
Houses proporcionaram uma melhora considerável no que diz respeito à qualidade.
Com relação aos algoritmos descritos (Lockstep, Buckets e Time Warp, e, por fim, o
TSS) podemos dizer que o TSS é bastante adequado aos jogos FPS, pois os mesmos são
extremamente sensíveis à latência. Já os outros tipos de jogos (RTS, MMORPG e
principalmente o NRT) possuem uma sincronização menos crítica. Devido à já citada
considerável melhora das conexões (banda larga), propostas deste tipo de algoritmos são
importantes para manter uma boa qualidade dos jogos.
16
6) REFERÊNCIAS
1. Cronin E., Kurc A., Filstrup B. e Jamin S.: 2003, `An Efficient Synchronization
Mechanism for Mirrored Game Architectures`.
Kluwer Academic Publishers.
http://warriors.eecs.umich.edu/games/papers/mtap-tss.pdf
2. Lamport, L.: 1978, `Time, Clocks, and the Ordering of Events in a Distributed
System'.
Communications of the ACM 21(7), 558-565.
5. Cronin, E., B. Filstrup, and A. Kurc: 2001, `A Distributed Multiplayer Game Server
System'.
UM EECS589 Course Project Report,
http://www.eecg.toronto.edu/~ashvin/courses/ece1746/2003/reading/cronin-umtr01.pdf
7. S. McCreary and K. Claffy, Trends in Wide Area IP Traffic Patterns: A View from
AmesInternet Exchange.
http://www.caida.org/publications/papers/2000/AIX0005/
17