SlideShare uma empresa Scribd logo
1 de 14
Arquitetura Ponto a Ponto
Prof. Fernando Vieira da Silva, MSc.
Arquitetura Ponto a Ponto
● Cada jogador está conectado com todos os demais
● Ou seja, para n jogadores, haverá O(n²) conexões no total
● Ou seja: A banda aumenta muito com mais jogadores, mas é
sempre a mesma para todos os jogadores.
Topologia Ponto a Ponto
Autoridade● Conceito de autoridade é mais nebuloso… Possíveis
abordagens:
1) Atribuir a alguns pontos a autoridade para certas partes do
sistema (pode ser mais complexo, na prática);
2) Compartilhar ações entre todos, e cada ponto faz a
“simulação” (Modelo mais comum, chamado de
compartilhamento de input)
Latência
● Latência tende a ser menor que em Cliente ↔ Servidor (pois
não há ninguém para intermediar a comunicação)
● Mas ainda há latência… Logo, outro desafio: manter todos os
pontos sincronizados...
Sincronização entre os pontos
● Possível solução: enfileirar comandos por um período de
tempo (exemplo: Age of Empires [200ms])
● Implementação do jogo precisa ser totalmente determinística
Simulação determinística em rede (latência de 100ms e 1% perda de pacotes)
fonte: http://gafferongames.com/networked-physics/deterministic-lockstep/
Conectando novos jogadores
● Em teoria, um novo jogador poderia se conectar a qualquer um
● Na prática, usa-se um ponto “mestre”, responsável por recepcionar novos
jogadores
● Quando a conexão é perdida, o jogo pode pausar por alguns segundos
antes de excluir o jogador desconectado
Robo Cat RTS (Real Time Strategy)
● Suporta até 4 jogadores
● Cada jogador controla 3 gatos
● Para controlar um gato, deve-se clicar com o botão esquerdo sobre ele e com o botão direito no
destino
● Se o destino for uma posição, move o gato para lá
● Se o destino for outro gato inimigo, o gato se aproxima e começa a atacá-lo (jogando bolas)
Robo Cat RTS – Novos Jogadores
● Usa o modelo de ponto master
● O novo jogador envia um pacote “Olá” para o master, que pode responder:
● Mensagem de Boas Vindas contendo: ID do jogador, número de
jogadores, e endereços IP dos demais jogadores
● Mensagem “Not Joinable”: O jogo já começou ou já está lotado
● Mensagem “Not Master”: Caso a mensagem é enviada para o ponto
errado
● Novo Jogador envia pacote de Introdução para os demais jogadores (ID e
nome)
Jogadores de redes diferentes
● Um novo ponto C, fora da rede local, entra no jogo
● O ponto mestre A informa o endereço IP do ponto B
● Mas o endereço local de B não é visível para C
● Como resolver esse problema?
Jogadores de redes diferentes
● Mas o endereço local de B não é visível para C
● Como resolver esse problema?
● Resposta: Usa-se um servidor de encontro (Rendezvous) na
primeira conexão entre os pontos, para que todos usem IPs globais
Jogadores de redes diferentes
● Mas o endereço local de B não é visível para C
● Como resolver esse problema?
● Resposta: Usa-se um servidor de encontro (Rendezvous) na
primeira conexão entre os pontos, para que todos usem IPs globais
● Outra opção: Usar um servidor central para todo o tráfego de rede
● Vantagem: Segurança, pois ninguém sabe o IP público dos demais
pontos. Não é possível derrubar outro cliente com ataque de denial
of service
● Desvantagem: Requer um servidor mais poderoso
Compartilhamento de Comandos e
Lockstep turns
● Arquitetura semelhante ao Age of Empires
● Cada turno leva 100 ms (10 turnos por segundo)
● Cada ponto simula o jogo inteiro
● Objetos não são replicados, mas sim os pacotes de turno (comandos)
● Um ponto empilha os comandos e envia para todos os outros pontos
ao fim do turno (de 100ms)
Exercício
● Defina uma arquitetura Ponto a Ponto para o Robo Cat RTS
usando Unity LLAPI (por simplicidade, considere apneas rede
local).
● Qual QoS você deve usar para o canal de comunicação?
● Qual é o formato da mensagem que será trocada durante os
turnos?
● Como você vai sincronizar a execução dos turnos entre os
pontos?
● Se você usar números aleatórios para alguma animação,
como você vai sincronizá-los?
Dica: tome o modelo do Age of Empires
Dica 2: Desenhe modelos se achar necessário (Máquina
de estados ou diagrama de sequências)
Fim!

Mais conteúdo relacionado

Semelhante a Arquitetura ponto a ponto para jogos online

Arquitetura Cliente-servidor em jogos Multi-jogadores
Arquitetura Cliente-servidor em jogos Multi-jogadoresArquitetura Cliente-servidor em jogos Multi-jogadores
Arquitetura Cliente-servidor em jogos Multi-jogadoresFernando Vieira da Silva
 
Horizon chase: Design para multiplayer local
Horizon chase: Design para multiplayer localHorizon chase: Design para multiplayer local
Horizon chase: Design para multiplayer localBruno Ferreira
 
Jornada de Iniciação Científica 2008 - SumoCheckers & Dystopia Framework
Jornada de Iniciação Científica 2008 - SumoCheckers & Dystopia FrameworkJornada de Iniciação Científica 2008 - SumoCheckers & Dystopia Framework
Jornada de Iniciação Científica 2008 - SumoCheckers & Dystopia Frameworkyankooliveira
 
Problemas de Rede em Jogos Multi-jogadores
Problemas de Rede em Jogos Multi-jogadoresProblemas de Rede em Jogos Multi-jogadores
Problemas de Rede em Jogos Multi-jogadoresFernando Vieira da Silva
 

Semelhante a Arquitetura ponto a ponto para jogos online (6)

Arquitetura Cliente-servidor em jogos Multi-jogadores
Arquitetura Cliente-servidor em jogos Multi-jogadoresArquitetura Cliente-servidor em jogos Multi-jogadores
Arquitetura Cliente-servidor em jogos Multi-jogadores
 
Horizon chase: Design para multiplayer local
Horizon chase: Design para multiplayer localHorizon chase: Design para multiplayer local
Horizon chase: Design para multiplayer local
 
Jornada de Iniciação Científica 2008 - SumoCheckers & Dystopia Framework
Jornada de Iniciação Científica 2008 - SumoCheckers & Dystopia FrameworkJornada de Iniciação Científica 2008 - SumoCheckers & Dystopia Framework
Jornada de Iniciação Científica 2008 - SumoCheckers & Dystopia Framework
 
Ac16 conjunto de instruções v2
Ac16   conjunto de instruções v2Ac16   conjunto de instruções v2
Ac16 conjunto de instruções v2
 
Problemas de Rede em Jogos Multi-jogadores
Problemas de Rede em Jogos Multi-jogadoresProblemas de Rede em Jogos Multi-jogadores
Problemas de Rede em Jogos Multi-jogadores
 
Camada rede
Camada redeCamada rede
Camada rede
 

Mais de Fernando Vieira da Silva

Arquitetura de jogos multi-jogadores: Estudo de caso "Starsiege Tribes"
Arquitetura de jogos multi-jogadores: Estudo de caso "Starsiege Tribes"Arquitetura de jogos multi-jogadores: Estudo de caso "Starsiege Tribes"
Arquitetura de jogos multi-jogadores: Estudo de caso "Starsiege Tribes"Fernando Vieira da Silva
 
Jogos Multi-jogadores: Revisão sobre Redes de computadores
Jogos Multi-jogadores: Revisão sobre Redes de computadoresJogos Multi-jogadores: Revisão sobre Redes de computadores
Jogos Multi-jogadores: Revisão sobre Redes de computadoresFernando Vieira da Silva
 
Introdução à Unity High Level API (HLAPI)
Introdução à Unity High Level API (HLAPI)Introdução à Unity High Level API (HLAPI)
Introdução à Unity High Level API (HLAPI)Fernando Vieira da Silva
 
Tratamento de latência em jogos Multi-jogadores
Tratamento de latência em jogos Multi-jogadoresTratamento de latência em jogos Multi-jogadores
Tratamento de latência em jogos Multi-jogadoresFernando Vieira da Silva
 
Instruções para Anotações de Emoções em Tweets
Instruções para Anotações de Emoções em TweetsInstruções para Anotações de Emoções em Tweets
Instruções para Anotações de Emoções em TweetsFernando Vieira da Silva
 
Identifying Emotions in Tweets related to the Brazilian Stock Market
Identifying Emotions in Tweets related to the Brazilian Stock MarketIdentifying Emotions in Tweets related to the Brazilian Stock Market
Identifying Emotions in Tweets related to the Brazilian Stock MarketFernando Vieira da Silva
 
Identifying Emotions in Tweets for Brazilian Stock Market Prediction (WTD Pre...
Identifying Emotions in Tweets for Brazilian Stock Market Prediction (WTD Pre...Identifying Emotions in Tweets for Brazilian Stock Market Prediction (WTD Pre...
Identifying Emotions in Tweets for Brazilian Stock Market Prediction (WTD Pre...Fernando Vieira da Silva
 
Palestra otimização em linguagem c - e-stude.com
Palestra otimização em linguagem c - e-stude.comPalestra otimização em linguagem c - e-stude.com
Palestra otimização em linguagem c - e-stude.comFernando Vieira da Silva
 

Mais de Fernando Vieira da Silva (11)

Introdução a jogos Multi-jogadores
Introdução a jogos Multi-jogadoresIntrodução a jogos Multi-jogadores
Introdução a jogos Multi-jogadores
 
Arquitetura de jogos multi-jogadores: Estudo de caso "Starsiege Tribes"
Arquitetura de jogos multi-jogadores: Estudo de caso "Starsiege Tribes"Arquitetura de jogos multi-jogadores: Estudo de caso "Starsiege Tribes"
Arquitetura de jogos multi-jogadores: Estudo de caso "Starsiege Tribes"
 
Jogos Multi-jogadores: Revisão sobre Redes de computadores
Jogos Multi-jogadores: Revisão sobre Redes de computadoresJogos Multi-jogadores: Revisão sobre Redes de computadores
Jogos Multi-jogadores: Revisão sobre Redes de computadores
 
Escalabilidade em Jogos Multi-jogadores
Escalabilidade em Jogos Multi-jogadoresEscalabilidade em Jogos Multi-jogadores
Escalabilidade em Jogos Multi-jogadores
 
Introdução à Unity High Level API (HLAPI)
Introdução à Unity High Level API (HLAPI)Introdução à Unity High Level API (HLAPI)
Introdução à Unity High Level API (HLAPI)
 
Tratamento de latência em jogos Multi-jogadores
Tratamento de latência em jogos Multi-jogadoresTratamento de latência em jogos Multi-jogadores
Tratamento de latência em jogos Multi-jogadores
 
Segurança em Jogos Multi-jogadores
Segurança em Jogos Multi-jogadoresSegurança em Jogos Multi-jogadores
Segurança em Jogos Multi-jogadores
 
Instruções para Anotações de Emoções em Tweets
Instruções para Anotações de Emoções em TweetsInstruções para Anotações de Emoções em Tweets
Instruções para Anotações de Emoções em Tweets
 
Identifying Emotions in Tweets related to the Brazilian Stock Market
Identifying Emotions in Tweets related to the Brazilian Stock MarketIdentifying Emotions in Tweets related to the Brazilian Stock Market
Identifying Emotions in Tweets related to the Brazilian Stock Market
 
Identifying Emotions in Tweets for Brazilian Stock Market Prediction (WTD Pre...
Identifying Emotions in Tweets for Brazilian Stock Market Prediction (WTD Pre...Identifying Emotions in Tweets for Brazilian Stock Market Prediction (WTD Pre...
Identifying Emotions in Tweets for Brazilian Stock Market Prediction (WTD Pre...
 
Palestra otimização em linguagem c - e-stude.com
Palestra otimização em linguagem c - e-stude.comPalestra otimização em linguagem c - e-stude.com
Palestra otimização em linguagem c - e-stude.com
 

Arquitetura ponto a ponto para jogos online

  • 1. Arquitetura Ponto a Ponto Prof. Fernando Vieira da Silva, MSc.
  • 2. Arquitetura Ponto a Ponto ● Cada jogador está conectado com todos os demais ● Ou seja, para n jogadores, haverá O(n²) conexões no total ● Ou seja: A banda aumenta muito com mais jogadores, mas é sempre a mesma para todos os jogadores. Topologia Ponto a Ponto
  • 3. Autoridade● Conceito de autoridade é mais nebuloso… Possíveis abordagens: 1) Atribuir a alguns pontos a autoridade para certas partes do sistema (pode ser mais complexo, na prática); 2) Compartilhar ações entre todos, e cada ponto faz a “simulação” (Modelo mais comum, chamado de compartilhamento de input)
  • 4. Latência ● Latência tende a ser menor que em Cliente ↔ Servidor (pois não há ninguém para intermediar a comunicação) ● Mas ainda há latência… Logo, outro desafio: manter todos os pontos sincronizados...
  • 5. Sincronização entre os pontos ● Possível solução: enfileirar comandos por um período de tempo (exemplo: Age of Empires [200ms]) ● Implementação do jogo precisa ser totalmente determinística Simulação determinística em rede (latência de 100ms e 1% perda de pacotes) fonte: http://gafferongames.com/networked-physics/deterministic-lockstep/
  • 6. Conectando novos jogadores ● Em teoria, um novo jogador poderia se conectar a qualquer um ● Na prática, usa-se um ponto “mestre”, responsável por recepcionar novos jogadores ● Quando a conexão é perdida, o jogo pode pausar por alguns segundos antes de excluir o jogador desconectado
  • 7. Robo Cat RTS (Real Time Strategy) ● Suporta até 4 jogadores ● Cada jogador controla 3 gatos ● Para controlar um gato, deve-se clicar com o botão esquerdo sobre ele e com o botão direito no destino ● Se o destino for uma posição, move o gato para lá ● Se o destino for outro gato inimigo, o gato se aproxima e começa a atacá-lo (jogando bolas)
  • 8. Robo Cat RTS – Novos Jogadores ● Usa o modelo de ponto master ● O novo jogador envia um pacote “Olá” para o master, que pode responder: ● Mensagem de Boas Vindas contendo: ID do jogador, número de jogadores, e endereços IP dos demais jogadores ● Mensagem “Not Joinable”: O jogo já começou ou já está lotado ● Mensagem “Not Master”: Caso a mensagem é enviada para o ponto errado ● Novo Jogador envia pacote de Introdução para os demais jogadores (ID e nome)
  • 9. Jogadores de redes diferentes ● Um novo ponto C, fora da rede local, entra no jogo ● O ponto mestre A informa o endereço IP do ponto B ● Mas o endereço local de B não é visível para C ● Como resolver esse problema?
  • 10. Jogadores de redes diferentes ● Mas o endereço local de B não é visível para C ● Como resolver esse problema? ● Resposta: Usa-se um servidor de encontro (Rendezvous) na primeira conexão entre os pontos, para que todos usem IPs globais
  • 11. Jogadores de redes diferentes ● Mas o endereço local de B não é visível para C ● Como resolver esse problema? ● Resposta: Usa-se um servidor de encontro (Rendezvous) na primeira conexão entre os pontos, para que todos usem IPs globais ● Outra opção: Usar um servidor central para todo o tráfego de rede ● Vantagem: Segurança, pois ninguém sabe o IP público dos demais pontos. Não é possível derrubar outro cliente com ataque de denial of service ● Desvantagem: Requer um servidor mais poderoso
  • 12. Compartilhamento de Comandos e Lockstep turns ● Arquitetura semelhante ao Age of Empires ● Cada turno leva 100 ms (10 turnos por segundo) ● Cada ponto simula o jogo inteiro ● Objetos não são replicados, mas sim os pacotes de turno (comandos) ● Um ponto empilha os comandos e envia para todos os outros pontos ao fim do turno (de 100ms)
  • 13. Exercício ● Defina uma arquitetura Ponto a Ponto para o Robo Cat RTS usando Unity LLAPI (por simplicidade, considere apneas rede local). ● Qual QoS você deve usar para o canal de comunicação? ● Qual é o formato da mensagem que será trocada durante os turnos? ● Como você vai sincronizar a execução dos turnos entre os pontos? ● Se você usar números aleatórios para alguma animação, como você vai sincronizá-los? Dica: tome o modelo do Age of Empires Dica 2: Desenhe modelos se achar necessário (Máquina de estados ou diagrama de sequências)
  • 14. Fim!