SlideShare uma empresa Scribd logo
1 de 14
Arquitetura Cliente - Servidor
Prof. Fernando Vieira da Silva, MSc.
Arquitetura Cliente - Servidor
● Uma das instâncias do jogo funciona como um servidor
● Cada cliente só se comunica com o servidor
● Para n clientes, haverá n conexões com o servidor
Topologia Cliente - Servidor
Largura de Banda
Supondo que:
● cada cliente envia b bytes por segundo
● servidor envia c bytes por segundo
● Banda de Entrada do Servidor: b*n bytes por segundo
● Banda de Saída do Servidor: c*n bytes por segundo
● Banda de Entrada de cada Cliente: c bytes por segundo
● Banda de Saída de cada Cliente: b bytes por segundo
Largura de Banda
Ou seja:
● Mais Clientes → Aumentar a largura de banda do servidor
● Mais Clientes → Não afeta largura de banda dos clientes, em
teoria…
MAS, na prática, podem haver mais objetos para replicar
(mais tráfego de rede)
Modelo de Servidor Autoritário
● Usado pela maioria dos jogos Cliente – Servidor
● Se o estado do jogo em um cliente discorda com o do
servidor, o que vale é o do servidor
● Pode apresentar “lag”. Exemplo: em um FPS, uma
“requisição” de tiro precisa ser enviada para o servidor, que
processa e então envia o resultado para todos os clientes
Modelo de Servidor Dedicado
● Somente executa o estado do jogo e repassa aos clientes
● Headless, ou seja: não possui interface gráfica
Modelo de “Listen Server”
● Um dos jogadores também é o servidor
● É diferente da abordagem ponto-a-ponto…
● Vantagem: Pode reduzir custos de infraestrutura
● Desvantagem: Pode dar a oportunidade de “cheats” para o jogador “host” (se for
autoritário)
● Alguns jogos usam Migração de Host caso o jogador servidor caia.
Estudo de caso: Robo Cat Action
● Controles:
● Girar o gato (rotacionar) nos sentidos horário e anti-horário
● Mover o gato para frente e para trás
● Atirar uma bola e reduzir a saúde de outro gato (cada gato tem 9 vidas no total)
● Coletar ratos ao passar sobre eles
Estudo de caso: Robo Cat Action
● Servidor precisa saber a saúde do gato, para fazer respawn quando atingir 0
● Cliente precisa saber a saúde para exibir na tela
● Cliente e servidor possuem códigos separados
Arquitetura Robo Cat Action
● Drop In/ Drop Out: Deve aceitar a entrada de um novo
jogador ou a saída de um jogador a qualquer momento
1) Cliente envia mensagem solicitando entrada no jogo
2) Servidor recebe o pacote, atribui um ID de jogador, e
responde o cliente
3) Quando o cliente recebe seu ID, ele salva e começa a
enviar e receber informação de replicação para o servidor
4) Servidor envia informações de respawning de objetos para
os clientes
Arquitetura Robo Cat Action
● Servidor Autoritário
● Há 2 tipos de pacotes que o cliente pode receber: boas
vindas ou estado (aka. Dados de replicação)
● O servidor ignora pacotes vindos de clientes desconhecidos
(se não for de boas vindas)
● O servidor cria um proxy para cada novo jogador (aka.
Objetos que representam o estado de cada cliente)
Replicação de objetos
● Replicação pode ser: criação, alteração ou destruição de
objetos do jogo
● Quando há alguma alteração relevante (ex: gato atirando uma
bola), o cliente envia um pacote input para o servidor
Exercício
Defina uma arquitetura Cliente-Servidor para o Robo Cat
Action usando Unity LLAPI.
● Quantos canais de comunicação você deve usar?
● Qual QoS você deve usar para cada canal?
● Qual tipo de informação você vai enviar em cada canal?
Dica: tome o modelo do Starsiege: Tribes como
exemplo.
Fim!

Mais conteúdo relacionado

Mais procurados

レトロブライトを試してみた
レトロブライトを試してみたレトロブライトを試してみた
レトロブライトを試してみたeagle0wl
 
CO_OP WORK REPORT SUMMER 12
CO_OP WORK REPORT SUMMER 12CO_OP WORK REPORT SUMMER 12
CO_OP WORK REPORT SUMMER 12Jared Smith
 
Password Policies in Oracle Access Manager. How to improve user authenticatio...
Password Policies in Oracle Access Manager. How to improve user authenticatio...Password Policies in Oracle Access Manager. How to improve user authenticatio...
Password Policies in Oracle Access Manager. How to improve user authenticatio...Andrejs Prokopjevs
 
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)Fabio Moura Pereira
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoFátima Bernardes
 

Mais procurados (9)

IMS Signaling Details
IMS Signaling DetailsIMS Signaling Details
IMS Signaling Details
 
レトロブライトを試してみた
レトロブライトを試してみたレトロブライトを試してみた
レトロブライトを試してみた
 
CO_OP WORK REPORT SUMMER 12
CO_OP WORK REPORT SUMMER 12CO_OP WORK REPORT SUMMER 12
CO_OP WORK REPORT SUMMER 12
 
Password Policies in Oracle Access Manager. How to improve user authenticatio...
Password Policies in Oracle Access Manager. How to improve user authenticatio...Password Policies in Oracle Access Manager. How to improve user authenticatio...
Password Policies in Oracle Access Manager. How to improve user authenticatio...
 
Hulu Content Deal Memorandum
Hulu Content Deal MemorandumHulu Content Deal Memorandum
Hulu Content Deal Memorandum
 
Flip Flops Parte 4
Flip Flops Parte 4Flip Flops Parte 4
Flip Flops Parte 4
 
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básico
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 

Semelhante a Arquitetura Cliente-Servidor para jogos

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
 
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
 
Arquitetura ponto-a-ponto para jogos Multi-jogadores
Arquitetura ponto-a-ponto para jogos Multi-jogadoresArquitetura ponto-a-ponto para jogos Multi-jogadores
Arquitetura ponto-a-ponto para jogos Multi-jogadoresFernando Vieira da Silva
 
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
 
Entendendo o Modelo de Atores
Entendendo o Modelo de AtoresEntendendo o Modelo de Atores
Entendendo o Modelo de AtoresPaulo Siqueira
 
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
 
Testes de escalabilidade usando cloud
Testes de escalabilidade usando cloudTestes de escalabilidade usando cloud
Testes de escalabilidade usando cloudPET Computação
 
Configuracao rapida acesso_externo_e_streaming_de_video_rtsp
Configuracao rapida acesso_externo_e_streaming_de_video_rtspConfiguracao rapida acesso_externo_e_streaming_de_video_rtsp
Configuracao rapida acesso_externo_e_streaming_de_video_rtspChiquinho Santos
 
Alta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores LinuxAlta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores Linuxelliando dias
 
Proposta de solução ferramentas-processos
Proposta de solução ferramentas-processosProposta de solução ferramentas-processos
Proposta de solução ferramentas-processosMauricio Bonetti
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosSuzana Viana Mota
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?tdc-globalcode
 
VDI e Projeto OSDVT
VDI e Projeto OSDVTVDI e Projeto OSDVT
VDI e Projeto OSDVTapsegundo
 

Semelhante a Arquitetura Cliente-Servidor para jogos (20)

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
 
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
 
Arquitetura ponto-a-ponto para jogos Multi-jogadores
Arquitetura ponto-a-ponto para jogos Multi-jogadoresArquitetura ponto-a-ponto para jogos Multi-jogadores
Arquitetura ponto-a-ponto para 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
 
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
 
Secomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao ElixirSecomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao Elixir
 
Camada rede
Camada redeCamada rede
Camada rede
 
Presentation ii
Presentation iiPresentation ii
Presentation ii
 
Entendendo o Modelo de Atores
Entendendo o Modelo de AtoresEntendendo o Modelo de Atores
Entendendo o Modelo de Atores
 
[Grupo 2] Apresentação II
[Grupo 2] Apresentação II[Grupo 2] Apresentação II
[Grupo 2] Apresentação II
 
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"
 
Testes de escalabilidade usando cloud
Testes de escalabilidade usando cloudTestes de escalabilidade usando cloud
Testes de escalabilidade usando cloud
 
Lab 06 ping_com_udp
Lab 06 ping_com_udpLab 06 ping_com_udp
Lab 06 ping_com_udp
 
Configuracao rapida acesso_externo_e_streaming_de_video_rtsp
Configuracao rapida acesso_externo_e_streaming_de_video_rtspConfiguracao rapida acesso_externo_e_streaming_de_video_rtsp
Configuracao rapida acesso_externo_e_streaming_de_video_rtsp
 
Alta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores LinuxAlta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores Linux
 
Proposta de solução ferramentas-processos
Proposta de solução ferramentas-processosProposta de solução ferramentas-processos
Proposta de solução ferramentas-processos
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas Embarcados
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?
 
VDI e Projeto OSDVT
VDI e Projeto OSDVTVDI e Projeto OSDVT
VDI e Projeto OSDVT
 

Mais de 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
 
Arquitetura de Jogos Multi-jogadores: Estudo de caso "Age of Empires"
Arquitetura de Jogos Multi-jogadores: Estudo de caso "Age of Empires"Arquitetura de Jogos Multi-jogadores: Estudo de caso "Age of Empires"
Arquitetura de Jogos Multi-jogadores: Estudo de caso "Age of Empires"Fernando 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 (8)

Introdução a jogos Multi-jogadores
Introdução a jogos Multi-jogadoresIntrodução a jogos Multi-jogadores
Introdução a jogos Multi-jogadores
 
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
 
Arquitetura de Jogos Multi-jogadores: Estudo de caso "Age of Empires"
Arquitetura de Jogos Multi-jogadores: Estudo de caso "Age of Empires"Arquitetura de Jogos Multi-jogadores: Estudo de caso "Age of Empires"
Arquitetura de Jogos Multi-jogadores: Estudo de caso "Age of Empires"
 
Escalabilidade em Jogos Multi-jogadores
Escalabilidade em Jogos Multi-jogadoresEscalabilidade em Jogos Multi-jogadores
Escalabilidade 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 Cliente-Servidor para jogos

  • 1. Arquitetura Cliente - Servidor Prof. Fernando Vieira da Silva, MSc.
  • 2. Arquitetura Cliente - Servidor ● Uma das instâncias do jogo funciona como um servidor ● Cada cliente só se comunica com o servidor ● Para n clientes, haverá n conexões com o servidor Topologia Cliente - Servidor
  • 3. Largura de Banda Supondo que: ● cada cliente envia b bytes por segundo ● servidor envia c bytes por segundo ● Banda de Entrada do Servidor: b*n bytes por segundo ● Banda de Saída do Servidor: c*n bytes por segundo ● Banda de Entrada de cada Cliente: c bytes por segundo ● Banda de Saída de cada Cliente: b bytes por segundo
  • 4. Largura de Banda Ou seja: ● Mais Clientes → Aumentar a largura de banda do servidor ● Mais Clientes → Não afeta largura de banda dos clientes, em teoria… MAS, na prática, podem haver mais objetos para replicar (mais tráfego de rede)
  • 5. Modelo de Servidor Autoritário ● Usado pela maioria dos jogos Cliente – Servidor ● Se o estado do jogo em um cliente discorda com o do servidor, o que vale é o do servidor ● Pode apresentar “lag”. Exemplo: em um FPS, uma “requisição” de tiro precisa ser enviada para o servidor, que processa e então envia o resultado para todos os clientes
  • 6. Modelo de Servidor Dedicado ● Somente executa o estado do jogo e repassa aos clientes ● Headless, ou seja: não possui interface gráfica
  • 7. Modelo de “Listen Server” ● Um dos jogadores também é o servidor ● É diferente da abordagem ponto-a-ponto… ● Vantagem: Pode reduzir custos de infraestrutura ● Desvantagem: Pode dar a oportunidade de “cheats” para o jogador “host” (se for autoritário) ● Alguns jogos usam Migração de Host caso o jogador servidor caia.
  • 8. Estudo de caso: Robo Cat Action ● Controles: ● Girar o gato (rotacionar) nos sentidos horário e anti-horário ● Mover o gato para frente e para trás ● Atirar uma bola e reduzir a saúde de outro gato (cada gato tem 9 vidas no total) ● Coletar ratos ao passar sobre eles
  • 9. Estudo de caso: Robo Cat Action ● Servidor precisa saber a saúde do gato, para fazer respawn quando atingir 0 ● Cliente precisa saber a saúde para exibir na tela ● Cliente e servidor possuem códigos separados
  • 10. Arquitetura Robo Cat Action ● Drop In/ Drop Out: Deve aceitar a entrada de um novo jogador ou a saída de um jogador a qualquer momento 1) Cliente envia mensagem solicitando entrada no jogo 2) Servidor recebe o pacote, atribui um ID de jogador, e responde o cliente 3) Quando o cliente recebe seu ID, ele salva e começa a enviar e receber informação de replicação para o servidor 4) Servidor envia informações de respawning de objetos para os clientes
  • 11. Arquitetura Robo Cat Action ● Servidor Autoritário ● Há 2 tipos de pacotes que o cliente pode receber: boas vindas ou estado (aka. Dados de replicação) ● O servidor ignora pacotes vindos de clientes desconhecidos (se não for de boas vindas) ● O servidor cria um proxy para cada novo jogador (aka. Objetos que representam o estado de cada cliente)
  • 12. Replicação de objetos ● Replicação pode ser: criação, alteração ou destruição de objetos do jogo ● Quando há alguma alteração relevante (ex: gato atirando uma bola), o cliente envia um pacote input para o servidor
  • 13. Exercício Defina uma arquitetura Cliente-Servidor para o Robo Cat Action usando Unity LLAPI. ● Quantos canais de comunicação você deve usar? ● Qual QoS você deve usar para cada canal? ● Qual tipo de informação você vai enviar em cada canal? Dica: tome o modelo do Starsiege: Tribes como exemplo.
  • 14. Fim!