0

Halo Networking: uma entrevista com Chris Butcher

Chris Butcher continua:

“Basicamente, o sistema lembra o que envia às pessoas. Ele sabe que tenho 5.000 informações que gostaria que você tivesse, mas só posso enviar talvez 50 neste pacote porque a rede só permite pacotes de determinado tamanho, transmitiu uma determinada taxa para não congestionar a rede.

Propaganda

Assim, ele descobre que as coisas mais importantes são baseadas em onde você está, o que está fazendo, se está vivo ou morto, se está atirando em alguém. Você sabe que, se estou atirando em alguém e ele está na minha frente, preciso saber sobre ele em alta prioridade. Mas se há alguém atrás de mim que não consigo ver, não preciso saber sobre ele. O servidor determina a prioridade dos objetos. Existem muitas regras para as coisas. Granadas têm uma prioridade entre 50 e 70, mas apenas um pequeno objeto caído no chão, talvez não seja uma prioridade – entre 10 e 20 você sabe, ou algo parecido. Na verdade, há casos em que um objeto de baixa prioridade não seria renderizado do lado do cliente.

Existem basicamente dois tipos de dados que são priorizados. Existe o estado de persistência de objetos que sempre serão enviados eventualmente. Eles podem levar muito tempo e a razão para isso, se houver um objeto se movendo continuamente com uma prioridade baixa, você não deseja enviar informações sobre esse objeto até que o tenha visto. Você pode querer uma atualização a cada 10 segundos para dizer em baixa prioridade: “É aqui que está.” O sistema de prioridade gerencia a prioridade dos objetos, o tempo desde a última transmissão e quanta informação é necessária para transmitir esses dados.

Existe um estado persistente e também um fluxo de eventos ocorrendo no mundo, como uma bala atingindo uma parede ou algum cara disse “urg” porque foi morto. Esses eventos são as informações que não precisamos enviar. Se for necessário descartar eventos, nós o faremos. Então, por exemplo, se eu explodisse um milhão de granadas em uma partida multijogador, muitas dessas granadas cairiam no final porque não poderiam ir para o pipeline rápido o suficiente. Eles seriam descartados como irrelevantes. Portanto, existe esse equilíbrio entre as coisas que você precisa ter e as coisas que estão acontecendo no mundo que lhe dão uma imagem melhor, mas não são necessárias.

Essa separação de dados significa que podemos suportar todos os tipos de coisas interessantes. Por exemplo, porque cada cliente está recebendo o estado persistente das entidades no mundo (as entidades são o que chamamos de objetos persistentes no mundo), isso significa que qualquer cliente tem todas as informações sobre o mundo. Como o cliente sabe tudo sobre o mundo, podemos dar suporte para torná-lo um novo servidor, se a máquina do servidor for desligar, se desconectar do Xbox Live ou se o jogador quiser apenas sair do jogo. O que acontece é que o jogo para, um novo servidor é determinado, o controle é alterado e o jogo continua. Também funciona em jogos LAN. Assim, você pode terminar um jogo com um conjunto de jogadores completamente diferente do que quando começou, porque temos a tecnologia para replicar essas informações e reatribuir um novo servidor.

O potencial do Xbox live pode ser realmente emocionante. Existem todos os tipos de ramificações sociais interessantes para fazer este jogo online. Há muito mais do que aquilo sobre o que conversamos. Não sou a melhor pessoa para conversar sobre todos os aspectos sociais de projetar uma interface de usuário ou direcionar os jogadores para jogos, mas posso definitivamente falar sobre o lado da rede das coisas. “

Você certamente pode, Chris, certamente pode.

reverent-aryabhata

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *