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!

Escalabilidade em Jogos Multi-jogadores

  • 1.
  • 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 ● Divideo 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 ● Jogadorespodem 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● Suponhauma 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-seum 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 ViewFrustum ● 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 ViewFrustum ● 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 Servidorcom 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 Servidorcom 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 ● Comessa 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.