Netcode nos jogos de luta: Quais os tipos? Funcionamento e porquê são importantes?

Guilty Gear Strive

Compartilhe

Netcode: o que é e porquê o Rollback é um fator determinante para os jogos de lutas?

O Netcode se tornou um fator essencial no cenário dos jogos de luta pois estes ainda continuam populares com o decorrer do tempo, e em meio a tantas opções de jogos, desde os já consagrados e com maior evidência como Killer Instinct, Street Fighter 5, Mortal Kombat 11,The King of Fighters 15, Tekken 7, Dragon Ball Fighterz, Guilty Gear Strive e Super Smash Bros Ultimate, temos futuras promessas como Multiversus, DNF Duel e Project L.

O Rollback netcode se popularizou com a chegada de Guilty Gear Strive, no qual a Arc System implementou um netcode de qualidade incrível, tornando possível a jogatina online com uma qualidade de conexão semelhante a um gameplay local.

- PUBLICIDADE -

No entanto, para entender melhor o porquê do Rollback ter tanta importância, iremos nos aprofundar no funcionamento dos Netcodes dos jogos de luta, e iremos começar pelo Delay-Based Netcode.

Atualmente, a maioria dos jogos de lutas atuais rodam a 60 frames por segundo, o que significa que 1 frame tem cerca de 16 milissegundos (ms) de tempo real. Em uma jogatina offline jogador vs jogador, se acontecer de ambos pressionarem um botão na mesma janela de 16 milissegundos, o jogo receberá e processará as entradas no mesmo quadro e aplicará a lógica conforme o esperado. Ambos verão a mesma saída, porque há apenas o console/computador fazendo os cálculos.

Se tratando do modo online, a história muda completamente!

No modo online há mais de um “intermediador” no processo das informações além da máquina que está rodando o jogo, neste caso, o outro intermediador será a internet. Dessa forma, há um pequeno atraso na entrega das informações, pois elas vão da plataforma para a rede e da rede para dentro da plataforma do oponente, seja ela console ou PC.

- PUBLICIDADE -

Isso se mede em ping: quantidade de tempo que leva para o encaminhamento de informações entre jogadores.

Tomando como exemplo um ping de 90ms, levará cerca de 45 milissegundos (em média) para que as informações cheguem ao outro lado, isso equivale a mais ou menos cerca de 3 frames dentro do jogo. Tendo isto em mente, vamos entender o funcionamento do netcode baseado em delay conhecido como “Delay-Based Netcode“.

Se tratando do modo online, pegando o exemplo de 90ms que falamos acima, se pressionar o botão no 5° frame de animação do seu personagem, o próprio jogo irá atrasar artificialmente o comando efetuado por você, nesse caso, a ação irá sair no 8° frame de animação, pois este seria o tempo de envio da informação por meio da rede.

No exemplo a seguir da Code Mystics, podemos ver que ambos apertaram os botões ao mesmo tempo, mas os personagens só irão efetuar o movimento assim que essa informação chegar ao oponente, esse atraso artificial é o tempo necessário para essa troca de informação. Esse tempo entre o apertar do botão, até o momento da entrega dessa informação para os jogadores é conhecido como “input delay“.

Contanto que cada comando possa viajar pela rede nesses 3 frames, o jogo permanece estável e consistente mas essa não é a realidade da internet.

A qualidade da conexão faz toda a diferença

O maior problema desse tipo de Netcode é a inconsistência da internet. Como as redes não são plenamente consistentes (principalmente as redes Wi-Fi), o delay-based netcode têm dificuldades para lidar com as oscilações da rede. Se caso em uma luta um dos jogadores tenha atraso no envio das informações devido a oscilação na rede, o jogo simplesmente não pode prosseguir sem a informação de ambos os jogadores, dessa forma ele não terá escolha a não ser parar e aguardar a chegada da informação, fazendo com que o jogo “congele” a luta por curtos ou até mesmo longos períodos de tempo devido a problemas de rede.

O vídeo abaixo ilustra melhor essa situação. Observe que em determinado tempo, ao tomar dois golpes de seu oponente, a personagem da direita se defende do ataque, mas neste exato momento ocorre uma oscilação na rede, o comando de defesa aconteceu no 2° frame, mas devido a oscilação, esse comando não mais chegaria com os 3 frames de atraso, ou seja, no 5º frame. Desse modo, para que o delay-based netcode cumpra a sua função de entregar a resposta ao mesmo tempo para os jogadores, ele “congela” a luta até a rede estabilizar, assim que ela estabiliza, ele entrega a resposta no 5° frame.

Quando o atraso de entrada flutua muito, seja entre duas partidas diferentes ou mesmo durante a mesma partida. Os jogadores de jogos de luta perdem a confiança de que tudo o que fizerem funcionará conforme o esperado. E quando não conseguem cumprir o plano de jogo que sabem que os ajudaria a vencer, o jogo online torna-se extremamente frustrante e muitas vezes inútil.

Já se tratando do Rollback Netcode, o maior diferencial dele para o Delay-Based Netcode é o modo como ele lida com a incerteza da conexão.

“Eu vou manter o jogo rodando, pode deixar comigo!”

O Rollback não espera a entrada perdida do oponente congelando o jogo assim como o delay-based faz, em vez disso, ele continua rodando o jogo normalmente. Os comandos feitos na tela do jogador são processados imediatamente, semelhante ao modo offiline e nos casos em que a informação chega com atraso para o oponente, o netcode de rollback continua a simular o jogo.

Mas, quando essa informação finalmente chegar ao seu destino, o jogo terá avançado além do tempo em que o oponente pressionou aquele botão, e o jogo já terá mostrado um resultado diferente na tela. Para corrigir isso, o rollback retrocederá a simulação, aplicará a entrada correta e mostrará o novo resultado ao jogador imediatamente.

No vídeo abaixo, temos uma luta entre Fulgore e Jago, ambos jogadores pressionam soco no 1° frame. Mas digamos que a entrada de Jago tenha uma oscilação na rede causando atraso no envio da informação e ela acabe chegando 3 frames atrasada. Como o Rollback não pausa a luta nesse prazo de demora para a entrega da informação, observe que Jago permanece imóvel. No entanto, quando finalmente a informação chega ao seu destino no 4° frame, o jogo percebe que o comando verdadeiro aconteceu no 1° frame.

O jogo então deve consertar o passado executando alguns cálculos em segundo plano, e compensará o atraso cortando frames de animação para igualar o tempo de resposta de ambos os oponentes. Vale lembrar que esse corte de frames será visto apenas pelo o jogador de Fulgore, pois o atraso ocorreu no envio da entrada efetuada pelo o Jago, e esse atraso em questão foi de mais ou menos 45 milissegundos o que é quase imperceptível a olho nú.

Tudo acontece em uma fração de segundos!

O jogo pode estar mostrando coisas ligeiramente diferentes para cada jogador, dependendo da qualidade da conexão e do que está acontecendo no momento dos rollbacks.

Conforme podemos ver no exemplo abaixo:

Também não há como sua entrada ser invalidada ou “comida” pelo atraso da rede. O que pode ocorrer no Delay-Based Netcode quando o jogo está aguardando uma entrada remota e não responde para ambos os jogadores. Portanto, um jogador pode se sentir confiante de que o os botões que pressionam serão executados independentemente da qualidade da rede, aumentando muito a consistência do jogo online.

O funcionamento central do Rollback “puro” é bom mas não é o ideal. Não há atraso nos comandos, no entanto, visualmente, o corte de frames pode ser muito brusco. Dependendo da qualidade da conexão a impressão que fica é que está acontecendo “teleports” conforme Street Fighter 5 nos mostra.

O corte de frames na animação do golpe é efetivo, mas o resultado puro pode não ser o melhor

Vamos para o ponto onde o Rollback brilha, com a implementação do sistema de previsão, o modo utilizado em Guilty Gear Strive.

No exemplo anterior, mostramos que Jago ficou imóvel aguardando a chegada da informação para efetuar o comando no tempo correto. No entanto, é possível prever o que o jogador irá fazer com um grau de precisão incrível, este é o Rollback baseado em “previsão”.

O Rollback analisa a luta a todo o momento sem parar, então caso um comando tenha sido efetuado mas ocorra alguma perda após a entrada. O rollback irá duplicar o comando anterior a perda para todos os frames que ficaram sem entrada. Se o jogador estava segurando a defesa antes da perda no envio da comunicação, o jogo manterá o personagem se defendendo nesse espaço de tempo. Se o jogador estava andando para frente antes da perca, o jogo manterá o personagem andando para frente. Portanto, se a previsão do Rollback foi a correta, não será necessário cortar frames de animação para compensar o atraso, dispensando a reversão.

Observe no vídeo abaixo que Fulgore estava andando para frente, mas no 3° frame ocorreu uma perda na entrada. Sendo assim, o Rollback pegou a última entrada feita pelo o jogador de Fulgore e o manteve andando. As interrogações mostram a perca que aconteceu em cada frame de animação, os quadradinhos laranjas é a previsão que o Rollback está fazendo.

O explendor do funcionamento de um Rollback bem projetado

Abaixo temos o seguimento do que mostramos acima, só que desta vez, a informação de entrada chegou ao seu destino. Dessa forma, o Rollback irá comparar os comandos reais com a sua própria previsão frame a frame. se a previsão estiver correta, nada acontecerá. A gameplay seguirá normalmente, mas caso a previsão esteja incorreta, acontecerá o sistema de reversão. O Rollback vai para o frame onde a previsão errou e corrige com o movimento correto, cortando os frames de animação.

 

Se houver um pico de rede durante qualquer um desses momentos em que a entrada não foi alterada, será completamente invisível para ambos os jogadores. Mesmo em conexões duvidosas, uma grande porcentagem desses atrasos coincidirá aleatoriamente com momentos em que o jogador não mudou o comando inicial antes da perda.

Um jogo com o delay-based netcode teria que parar e esperar esse tempo em que ocorreu a perda. Ademais, um jogo baseado no rollback verifica se as entradas verdadeiras estão corretas com a sua previsão. E assim, quando a informação chega, não há necessidade de mudar nada, a conexão parece completamente perfeita.

Jogos que utilizam o Rollback netcode
  • Super Street Fighter II Turbo HD Remix (2008)
  • Marvel vs Capcom 2 (2009)
  • Touhou Suimusou: Immaterial and Missing Power (2009)
  • Street Fighter X Tekken (2012)
  • PlayStation All-Stars Battle Royale (2012)
  • Touhou Hisoutensoku (2012)
  • Killer Instinct (2013)
  • Eternal Fighter Zero (2014)
  • Melty Blood Actress Again Current Code (2015)
  • Brawlhalla (2015)
  • Street Fighter V (2016)
  • Mortal Kombat XL (2016)
  • For Honor (2017)
  • River City Ransom: Underground (2017)
  • Marvel vs. Capcom: Infinite (2017)
  • Injustice 2 (2017)
  • Umineko: Golden Fantasia (2017)
  • Acceleration of Suguri 2 (2018)
  • The King of Fighters ’97 Global Match (2018)
  • Street Fighter 30th Anniversary Collection (2018)
  • Lethal League Blaze (2018)
  • Mortal Kombat 11 (2019)
  • Fight of Gods (2019)
  • Samurai Shodown V Special (2019)
  • Power Rangers: Battle for the Grid (2019)
  • Fight of Animals (2019)
  • Garou: Mark of the Wolves (2020)
  • Maiden & Spell (2020)
  • Mighty Fight Federation (2020)
  • The Last Blade 2 (2020)
  • Samurai Shodown NeoGeo Collection (2020)
  • Super Smash Bros. Melee (2020)
  • Fighting EX Layer (2020)
  • Spelunky 2 (2020)
  • Guilty Gear -Strive (2021)
  • Fly Punch Boom! (2020)

Por fim, o que você achou do funcionamento dos Netcodes no jogos de luta? Comente abaixo e compartilhe conosco sua opinião! Em seguida, não se esqueça de se inscrever em nosso canal do YouTube e seguir o Combo Infinito nas redes sociais para mais notícias FacebookTwitterInstagram.

Fonte: Fightin’ Words

Em seguida, veja as últimas notícias:

Compartilhe

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

LIVES

TODOS OS DIAS

O melhor conteúdo do mundos dos Games para você! São LIVES diárias com os melhores jogos de luta, Últimos Lançamentos, Notícias, Temporadas da “Guerra das Torres (Mortal Kombat)” e da “Guerra das Ruas (Street Fighter)” com os melhores players do momento e muito mais! É só colar e mandar aquele “Salve”