SlideShare uma empresa Scribd logo
1 de 21
Escalabilidade
Prof. Fernando Vieira da Silva, MSc.
Escopo e Relevância
● Pode não ser importante saber sobre outro jogador a kilômetros
de distância
● Enviar informações sobre esse jogador seria disperdício de
recursos de rede...
● Considerar objetos distantes como for a de escopo é uma
abordagem espacial
Abordagem Espacial - Limitações
● Suponha um FPS com duas armas: Pistola e Rifle (maior
alcance)
● Todo objeto no alcance do Rifle, é considerado relevante para o
jogador
● Se adicionar uma Sniper com o dobro do alcance do Rifle, o
número de objetos relevantes aumenta muito...
Abordagem Espacial - Limitações
● Abordagem Espacial considera objetos à frente e atrás como
iguais (o que não é intuitivo...)
● Ignora objetos atrás de paredes
Objetos relevantes para o jogador marcado com “X”
Zonas Estáticas
● Divide o jogo em Zonas Estáticas
● Exemplos de zonas: Cidade, Floresta, etc
● Somente objetos da mesma zona onde o jogador está são
replicados
Mapa do Fiesta (mundo Isya)
Transições entre Zonas – Possíveis
Soluções
● Exibir uma tela de “Loading” enquanto viaja de uma zona para
outra
● Objetos desaparecerem e aparecerem, conforme suas
relevâncias se alteram
Zonas Lotadas
● Jogadores podem não estar distribuídos pelo jogo
● Ao contrário: O jogo pode “estimular” que os jogadores se
encontrem em um local (para uma batalha, por exemplo)
● A estratégia de zonas estáticas perde o sentido… O que
fazer?
Zonas Lotadas – Possíveis
Soluções
● Ashron’s Call teletransporta jogadores que tentam entrar em
zonas lotadas para zonas vizinhas
● Não é o ideal, mas é melhor do que travar…
● Outros jogos podem dividir a mesma zona em múltiplas
instâncias
Asheron’s Call (1999)
View Frustum● Suponha uma câmera e uma caneta posicionada à sua frente
● Se você inclinar a caneta até que ela chegue ao topo da
imagem
● Qualquer objeto além da caneta, não será visível
https://docs.unity3d.com/Manual/UnderstandingFrustum.html
View Frustum
● Forma-se um objeto semelhante a uma pirâmide
● Além disso, Nada além do Far clipping nem mais perto que o
Near clipping será visível
https://docs.unity3d.com/Manual/UnderstandingFrustum.html
Usando o View Frustum
● Pode ser usado para limitar o
escopo
● Mas usar somente o frustum pode
trazer problemas de latência…
● Objetos imediamente atrás do
jogador seriam ignorados
● Isso é um problema, se o jogador
virar 180° (mais objetos serão
replicados… mais latência)
Usando o View Frustum
● Solução: combinar o View
Frustum com um mecanismo
baseado em distância
● Objetos dentro do frustum ou em
uma certa região devem ser
considerados dentro do escopo.
Técnica PVS – Conjunto
Potencialmente Visível
● Indicado para jogos de corrida, por exemplo
● Dependendo de onde o carro está, os objetos visíveis podem se alterar (ex:
reta plana, curva, subida, etc)
● Se o servidor souber onde o carro está, saberá quais objetos são visíveis.
● Também pode ser usado em FPS baseados em corredor (Doom, Quake)
Relevância Não Visível
● Exemplo: FPS onde jogadores usam granadas
● Se uma granada explode, ela deve impactar (ao menos a
explosão deve ser ouvida) jogadores próximos, mesmo que não
seja visível
● Possível solução: Tratar granadas de forma diferente – replicar os
objetos em um raio de proximidade, ao invés de visibilidade
Particionamento de Servidor
● É o conceito de manter vários servidores executando
simultaneamente
● Muito usado por jogos de ação em que cada jogo ativo possui
certa capacidade (normalmente entre 8 e 16 jogadores)
● Call of Duty, League of Legends e Battlefield usam essa
abordagem
● Não há interação entre os jogadores de dois jogos separados
(rodando em servidores separados)
● Compartilham o mesmo servidor de estatísticas, levels, etc.
Particionamento de Servidor com
Zonas Estáticas
● Cada zona (ou conjunto de zonas) é executada em um determinado servidor
● World of Warcraft usa esse conceito, armazenando seus continentes em servidores
diferentes
● Cada continente é composto por várias zonas estáticas
Particionamento de Servidor com
Zonas Estáticas Lotadas...
● Mesmo problema de zonas estáticas: se houverem regiões muito
frequentadas, a zona (e o servidor) ficará lotada
● O servidor pode enfrentar problemas de performance
● Possíveis soluções:
● Forçar o jogador a esperar em uma fila, se a capacidade
estourar
● Eve Online reduz a velocidade do jogo (time dilation)
Múltiplas Instâncias
● Com essa técnica, os personagens residem em um mesmo
servidor, mas em diferentes instâncias do jogo
● Pode ser usado para resolver o problema de zonas lotadas
● Exemplo: Star Wars: The Old Republic limita o número de
jogadores em uma zona. Se o número ultrapassar o limite, uma
nova instância da mesma zona será lançada
Star Wars: The Old Republic (2011)
Múltiplas Instâncias
● Complicações: Se dois jogadores tentarem se encontrar em uma
zona, eles podem acabar em instâncias diferentes
● Solução do Old Republic: Permite que jogadores se
teletransportem para outra instância
Star Wars: The Old Republic (2011)
Múltiplas Instâncias - Vantagens
● Se bem gerenciadas, instâncias podem ser benéficas para a
performance do jogo
● Pode garantir que não mais que X jogadores sejam relevantes ao
mesmo tempo
● Ainda é possível combinar múltiplas instâncias com
particionamento de servidor
Fim!

Mais conteúdo relacionado

Mais de Fernando Vieira da Silva

Mais de Fernando Vieira da Silva (9)

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
 
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
 
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
 

Escalabilidade em Jogos Multi-jogadores

  • 2. Escopo e Relevância ● Pode não ser importante saber sobre outro jogador a kilômetros de distância ● Enviar informações sobre esse jogador seria disperdício de recursos de rede... ● Considerar objetos distantes como for a de escopo é uma abordagem espacial
  • 3. Abordagem Espacial - Limitações ● Suponha um FPS com duas armas: Pistola e Rifle (maior alcance) ● Todo objeto no alcance do Rifle, é considerado relevante para o jogador ● Se adicionar uma Sniper com o dobro do alcance do Rifle, o número de objetos relevantes aumenta muito...
  • 4. Abordagem Espacial - Limitações ● Abordagem Espacial considera objetos à frente e atrás como iguais (o que não é intuitivo...) ● Ignora objetos atrás de paredes Objetos relevantes para o jogador marcado com “X”
  • 5. Zonas Estáticas ● Divide o jogo em Zonas Estáticas ● Exemplos de zonas: Cidade, Floresta, etc ● Somente objetos da mesma zona onde o jogador está são replicados Mapa do Fiesta (mundo Isya)
  • 6. Transições entre Zonas – Possíveis Soluções ● Exibir uma tela de “Loading” enquanto viaja de uma zona para outra ● Objetos desaparecerem e aparecerem, conforme suas relevâncias se alteram
  • 7. Zonas Lotadas ● Jogadores podem não estar distribuídos pelo jogo ● Ao contrário: O jogo pode “estimular” que os jogadores se encontrem em um local (para uma batalha, por exemplo) ● A estratégia de zonas estáticas perde o sentido… O que fazer?
  • 8. Zonas Lotadas – Possíveis Soluções ● Ashron’s Call teletransporta jogadores que tentam entrar em zonas lotadas para zonas vizinhas ● Não é o ideal, mas é melhor do que travar… ● Outros jogos podem dividir a mesma zona em múltiplas instâncias Asheron’s Call (1999)
  • 9. View Frustum● Suponha uma câmera e uma caneta posicionada à sua frente ● Se você inclinar a caneta até que ela chegue ao topo da imagem ● Qualquer objeto além da caneta, não será visível https://docs.unity3d.com/Manual/UnderstandingFrustum.html
  • 10. View Frustum ● Forma-se um objeto semelhante a uma pirâmide ● Além disso, Nada além do Far clipping nem mais perto que o Near clipping será visível https://docs.unity3d.com/Manual/UnderstandingFrustum.html
  • 11. Usando o View Frustum ● Pode ser usado para limitar o escopo ● Mas usar somente o frustum pode trazer problemas de latência… ● Objetos imediamente atrás do jogador seriam ignorados ● Isso é um problema, se o jogador virar 180° (mais objetos serão replicados… mais latência)
  • 12. Usando o View Frustum ● Solução: combinar o View Frustum com um mecanismo baseado em distância ● Objetos dentro do frustum ou em uma certa região devem ser considerados dentro do escopo.
  • 13. Técnica PVS – Conjunto Potencialmente Visível ● Indicado para jogos de corrida, por exemplo ● Dependendo de onde o carro está, os objetos visíveis podem se alterar (ex: reta plana, curva, subida, etc) ● Se o servidor souber onde o carro está, saberá quais objetos são visíveis. ● Também pode ser usado em FPS baseados em corredor (Doom, Quake)
  • 14. Relevância Não Visível ● Exemplo: FPS onde jogadores usam granadas ● Se uma granada explode, ela deve impactar (ao menos a explosão deve ser ouvida) jogadores próximos, mesmo que não seja visível ● Possível solução: Tratar granadas de forma diferente – replicar os objetos em um raio de proximidade, ao invés de visibilidade
  • 15. Particionamento de Servidor ● É o conceito de manter vários servidores executando simultaneamente ● Muito usado por jogos de ação em que cada jogo ativo possui certa capacidade (normalmente entre 8 e 16 jogadores) ● Call of Duty, League of Legends e Battlefield usam essa abordagem ● Não há interação entre os jogadores de dois jogos separados (rodando em servidores separados) ● Compartilham o mesmo servidor de estatísticas, levels, etc.
  • 16. Particionamento de Servidor com Zonas Estáticas ● Cada zona (ou conjunto de zonas) é executada em um determinado servidor ● World of Warcraft usa esse conceito, armazenando seus continentes em servidores diferentes ● Cada continente é composto por várias zonas estáticas
  • 17. Particionamento de Servidor com Zonas Estáticas Lotadas... ● Mesmo problema de zonas estáticas: se houverem regiões muito frequentadas, a zona (e o servidor) ficará lotada ● O servidor pode enfrentar problemas de performance ● Possíveis soluções: ● Forçar o jogador a esperar em uma fila, se a capacidade estourar ● Eve Online reduz a velocidade do jogo (time dilation)
  • 18. Múltiplas Instâncias ● Com essa técnica, os personagens residem em um mesmo servidor, mas em diferentes instâncias do jogo ● Pode ser usado para resolver o problema de zonas lotadas ● Exemplo: Star Wars: The Old Republic limita o número de jogadores em uma zona. Se o número ultrapassar o limite, uma nova instância da mesma zona será lançada Star Wars: The Old Republic (2011)
  • 19. Múltiplas Instâncias ● Complicações: Se dois jogadores tentarem se encontrar em uma zona, eles podem acabar em instâncias diferentes ● Solução do Old Republic: Permite que jogadores se teletransportem para outra instância Star Wars: The Old Republic (2011)
  • 20. Múltiplas Instâncias - Vantagens ● Se bem gerenciadas, instâncias podem ser benéficas para a performance do jogo ● Pode garantir que não mais que X jogadores sejam relevantes ao mesmo tempo ● Ainda é possível combinar múltiplas instâncias com particionamento de servidor
  • 21. Fim!