O que é netcode via rollback para os jogos de luta?

Rollback Netcode

Durante a EVO 2022, algumas palavras foram frequentes em seus anúncios: netcode via rollback. Dragon Ball FighterZ, Samurai Shodown e Persona 4 Arena Ultimax receberam a notícia de que o netcode via rollback foi ou será implementado. Além disso, outros jogos já possuem a tecnologia implementada. Dos títulos mais populares de jogos de luta no momento, há apenas dois que ficaram de fora: Granblue Fantasy Versus e Tekken 7. Street Fighter V também o utiliza, porém vale esclarecer que sua implementação não é das melhores.

Mas o que é netcode via rollback e para que serve? A resposta curta e direta é muito simples: para melhorar completamente o modo online.

Super Street Fighter IV

Netcode via Delay

Para entender o que é rollback, precisamos explicar primeiro o outro tipo de netcode, que tem o nome de delay. Esse netcode é o que predominava nos jogos de luta na época do PS3 e Xbox 360.

Netcode significa código de rede. Ou seja, é a “programação por trás do modo online”. O netcode via delay basicamente espera o input (o botão pressionado) do adversário chegar até você para daí interpretar o seu input também. Por isso “delay” (espera/atraso). Se a resposta chega atrasada ou é perdida, temos o lag e aquele jogo lento que já vimos aos montes.

O netcode via delay não é ruim. Ele funciona muito bem, principalmente para dois usuários que não estejam distantes um do outro (por isso o Japão não vê problema em usá-lo; afinal, é um país com dimensões pequenas quando comparado aos EUA ou Brasil, por exemplo, além de sua estrutura de rede muito melhor), porém é limitado e é aí que está o seu problema. Quanto mais longe ou pior a conexão entre dois jogadores, mais lag você sofrerá.

Street Fighter 6

Netcode via Rollback – O Básico

O netcode via rollback, chamado inicialmente de GGPO, foi criado em 2007 por Tony Cannon. Atualmente, ele trabalha na Riot Games desenvolvendo o jogo de luta de League of Legends chamado Project L. O GGPO/rollback foi disponibilizado gratuitamente sob a licença MIT e qualquer desenvolvedor do planeta pode usá-lo. Implementar, porém, não é uma questão apenas de inserir e “está pronto”. É preciso programar e adaptar o seu jogo para ele, por isso nem todos os títulos ainda o utilizam.

O rollback parte do princípio de que não é necessário esperar pelo input do adversário. A programação do online simplesmente supõe o que seu inimigo vai fazer e, quando a informação chegar, substitui o “que havia suposto” pelo “que de fato aconteceu”, retornando à última informação correta de ambos os lados. Ou seja, ela “volta atrás” (rollback). Mas isso não causa problemas?

O motivo disso funcionar é que essas informações substituídas são os quadros. Você já deve ter ouvido falar de 30 e 60 fps, por exemplo (e hoje em dia até 120 fps). Fps são frames per second, ou seja, quadros por segundo. Em outras palavras, 1 segundo possui 60 quadros (60 imagens em movimento). Jogos de luta têm adotado, por padrão, 60 fps. Então, em 1 segundo, há 60 quadros acontecendo.

Se a conexão atual está atrasada em alguns quadros, para o jogador isso é praticamente invisível, pois em basicamente 80% do tempo, você vai estar fazendo algum movimento que dura muito mais que os quadros que possam estar atrasados. Em outras palavras, o “rollback” vai acontecer no meio de um Hadouken, por exemplo, e não durante algo que você notaria. Números muito altos de quadros atrasados causarão problemas, é claro, mas tudo isso permite mais partidas em um “estado jogável”, digamos assim, que o netcode via delay (o qual não teria capacidade de reproduzir).

Na entrevista abaixo, que é focada em como o netcode via rollback foi implementado em Killer Instinct (de Xbox One e PC), é explicado muito bem (com legendas em português) justamente como alguns quadros perdidos não fazem falta, na prática. Recomendamos que assista ao vídeo inteiro (são 18 minutos, mas vale a pena, principalmente se você quer entender bem como o rollback funciona).

Netcode via Rollback – Explicando Mais a Fundo

O que comentamos acima sobre o netcode via rollback é o básico e o que você precisa entender sendo um jogador.

Além do vídeo de Killer Instinct acima, temos outros dois tão bons quanto que explicam muito bem o rollback.

O primeiro é do canal Core-A Gaming (também legendado em português). Já o outro vídeo é da Code Mystics, desenvolvedora de ports de jogos antigos da SNK, como The King of Fighters 2002 UM, The Last Blade 2 e Garou: Mark of the Wolves. O da Code Mystics é bem resumido, mas não possui legendas em nosso idioma.

Conclusão

O netcode via rollback chegou para ficar e provavelmente não será mais notícia os jogos de luta o adotarem num futuro próximo.

Obviamente, o online nunca será a mesma coisa que duas pessoas jogando em uma mesma máquina, uma do lado da outra. Porém, o rollback ajuda a termos partidas mais suaves e inclusive bem distantes (o que define o atraso, além de sua conexão, é a distância). Como o Brasil é um país com dimensões continentais (da mesma forma que os EUA), o netcode via rollback é (pelo menos atualmente) a única saída para que jogos de luta possam ser jogados entre pessoas que vivem em Porto Alegre e que desejam lutar com quem está em Macapá, por exemplo.