Lag: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Desfeita a edição 59014872 de 201.82.32.171 sem fontes
Etiqueta: Desfazer
Dorito voador20 (discussão | contribs)
Funcionalidade de sugestões de hiperligações: 2 hiperligações adicionadas.
Etiquetas: Editor Visual Edição via dispositivo móvel Edição feita através do sítio móvel Tarefa para recém-chegados Sugerida: adicionar hiperligações
Linha 26:
Existem vários métodos para reduzir ou disfarçar atrasos (os famosos delays), apesar de muitos destes tem suas desvantagens e podem não ser aplicáveis em todos os casos. Se a sincronização de um jogo não é feita por ele mesmo, os usuários podem escolher jogar em servidores mais próximos geograficamente deles para reduzir latências, ou no caso de servidores mais simples, eles optam por abandonar os clientes com alta latência para não ter que lidar com problemas resultantes. Entretanto, essas são as opções de solução mais raras. Em vez disso, os jogos normalmente são projetados com compensação de atrasos incluso.
 
Muitos problemas podem ser resolvidos simplesmente permitindo que os clientes acompanhem seu próprio estado e enviem estados absolutos para o servidor ou diretamente para outros clientes. Por exemplo, o cliente pode saber exatamente qual a posição do jogador ou qual a posição de tiro. Essa solução funciona e irá eliminar todos os problemas relacionados a atrasos. Infelizmente, isso também depende da suposição de que o cliente é honesto. Não há nada que prevê se o jogador modificará os dados que eles enviaram, diretamente para o cliente ou indiretamente por meio de um [[proxy]], a fim de garantir que eles sempre alcançaram seus alvos. Em jogos online, o risco de engano pode tornar esta solução inviável, e os clientes estarão limitados ao envio de estados relativos (isto é, se o vetor se moveu ou disparou).
 
==== O lado do cliente ====
Como os clientes normalmente não têm permissão para definir o estado do jogo principal, mas sim recebê-lo do servidor, a principal tarefa da compensação do lado do cliente é tornar o [[mundo virtual]] com a maior precisão possível. Como as atualizações vêm com um atraso e podem até ser descartadas, às vezes é necessário que o cliente preveja o fluxo do jogo. Uma vez que o estado é atualizado em etapas discretas, o cliente deve ser capaz de estimar um movimento baseado em amostras disponíveis. Dois métodos básicos podem ser usados para conseguir isso; Extrapolação e interpolação. [6]
 
A extrapolação é uma tentativa de estimar um futuro estado do jogo. Assim que um pacote do servidor é recebido, a posição de um objeto é atualizada para a nova posição. Aguardando a próxima atualização, a próxima posição é extrapolada com base na posição atual e no movimento no momento da atualização. Essencialmente, o cliente assumirá que um objeto em movimento continuará na mesma direção. Quando um novo pacote é recebido, a posição pode ser corrigida ligeiramente.