O documento descreve a arquitetura de rede do jogo Starsiege: Tribes, lançado em 1998, que suportava até 128 jogadores. O jogo usava UDP para comunicação e tinha uma arquitetura cliente-servidor com camadas para gerenciar eventos, movimento, objetos e replicação de dados para outros clientes.
4. Limitações: Rede
● A maioria dos jogadores usava conexão
discada...
● Modems com velocidade de até 28.8 kbps
● Alta latência...
Imagem meramente ilustrativa
5. Escolha do protocolo de
comunicação
● Tribes usa um protocolo sem garantias (UDP)
Protocolo sem garantias (UDP)
6. Escolha do protocolo de
comunicação
● Desenvolvedores do Tribes separaram
requisitos em 4 categorias:
● Dados sem garantia;
● Dados garantidos (tanto chegada quando
ordem). Ex: sinalizar quando jogador disparou
um tiro;
7. Escolha do protocolo de
comunicação
● Desenvolvedores do Tribes separaram
requisitos em 4 categorias:
● Dados “Mais recentes”: Somente a
informação mais recente é importante. Ex: Hit
points de um jogador
● Dados garantidos e rápido: Dados que
devem chegar o mais rápido possível. Ex:
movimentação de um jogador
8. Topologia de rede
● Tribes usa um modelo cliente-servidor
● A implementação de rede foi dividida em
camadas:
Camada de Simulação de Jogo
Gerenciador
de Ghost
Gerenciador
de Movimento
Gerenciador
de Eventos
Outros...
Gerenciador de Stream
Gerenciador de Conexão
Módulo de Pacotes da Plataforma
9. Módulo de Pacotes de Plataforma
● Camada multi-plataforma
● Encapsula chamadas a API de sockets
Camada de Simulação de Jogo
Gerenciador
de Ghost
Gerenciador
de Movimento
Gerenciador
de Eventos
Outros...
Gerenciador de Stream
Gerenciador de Conexão
Módulo de Pacotes da Plataforma
10. Gerenciador de Conexão
● Abstrai a conexão entre dois computadores na
rede
● Garante que um pacote foi entregue
Camada de Simulação de Jogo
Gerenciador
de Ghost
Gerenciador
de Movimento
Gerenciador
de Eventos
Outros...
Gerenciador de Stream
Gerenciador de Conexão
Módulo de Pacotes da Plataforma
11. Gerenciador de Stream
● Gerencia a largura de banda e encaminha
pacotes para o gerenciador de conexão enviar
● Pode decidir usar o mesmo pacote para
transmitir dados vindos de camadas diferentes
acima
Camada de Simulação de Jogo
Gerenciador
de Ghost
Gerenciador
de Movimento
Gerenciador
de Eventos
Outros...
Gerenciador de Stream
Gerenciador de Conexão
Módulo de Pacotes da Plataforma
12. Gerenciador de Eventos
● Mantém uma fila de eventos (ex: jogador atirou)
● Prioriza os eventos e tenta colocar o máximo de eventos de alta
prioridade em um mesmo pacote
● Garante a entrega de pacotes de eventos (dependendo do tipo
de evento)
Camada de Simulação de Jogo
Gerenciador
de Ghost
Gerenciador
de Movimento
Gerenciador
de Eventos
Outros...
Gerenciador de Stream
Gerenciador de Conexão
Módulo de Pacotes da Plataforma
13. Gerenciador de Ghost
●
Replica objetos dinâmicos relevantes para os
clientes
● Prioriza objetos que precisam ser transmitidos
e que podem ser transmitidos.
Camada de Simulação de Jogo
Gerenciador
de Ghost
Gerenciador
de Movimento
Gerenciador
de Eventos
Outros...
Gerenciador de Stream
Gerenciador de Conexão
Módulo de Pacotes da Plataforma
14. Gerenciador de
Movimento●
Transmite o movimento do jogador o mais
rápido possível
● Cada cliente envia seus movimentos para o
servidor, que replica para os demais clientes
Camada de Simulação de Jogo
Gerenciador
de Ghost
Gerenciador
de
Movimento
Gerenciador
de Eventos
Outros...
Gerenciador de Stream
Gerenciador de Conexão
Módulo de Pacotes da Plataforma
15. Outros
●
Há diversos outros módulos no Tribes
● Ex: gerenciamento de objetos potencialmente
estáticos, como veículos.
Camada de Simulação de Jogo
Gerenciador
de Ghost
Gerenciador
de Movimento
Gerenciador
de Eventos
Outros...
Gerenciador de Stream
Gerenciador de Conexão
Módulo de Pacotes da Plataforma