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