Os problemas nos games: bugs, glitches e falhas

Games não são perfeitos, mas às vezes os defeitos são mais difíceis de corrigir do que muitos bosses.

em 07/10/2015

Desde a época dos primeiros games, problemas sempre existiram. Não existem jogos perfeitos. E não, não estamos falando em termos de jogabilidade ou história, mas sim de funcionalidade. Games livres de defeitos são impossíveis. Seja durante a sua fase de produção ou quando está nas mãos do usuário final, problemas podem (e provavelmente vão) aparecer. Por isso é importante saber a diferença entre seus vários tipos. O que fazer para contorná-los e poder continuar a jogatina tranquilamente.

Da terminologia aos casos

Um game nada mais é do que um software, ou seja, um ou mais programas de computador que definem as instruções e regras para que uma plataforma possa executar a aplicação. E, como todo software, eles estão sujeitos a erros. No caso dos games, nós podemos dividir estes erros em três tipos diferentes: bugs, glitches e falhas. Apesar de muitos acharem que tudo é a mesma coisa, cada um é muito diferente do outro.
Ops! Essa não era a bola que eu estava procurando!

Vamos começar falando sobre bugs. Você já deve ter ouvido falar deles. Certamente deve se lembrar do famoso “Bug do Milênio” que iria acontecer na virada do ano de 1999 para 2000 e destruiria toda a tecnologia. Ele se baseava na ideia de que o sistema numérico de datas de todas as máquinas do planeta não iria conseguir identificar os novos dígitos "00" como sendo 2000 e retornariam ao ano 1900. Já imaginou o problema que isso iria causar nos sistemas bancários e outros semelhantes? Felizmente, nada aconteceu.

Mas você já perguntou por que estes defeitos têm o nome de bug? O termo tem origem na época dos primeiros computadores, como o ENIAC (Eletronic Numerical Integrator and Computer), que ocupavam andares inteiros. Como as máquinas funcionavam à base de válvulas com luz incandescente, os operadores tinham dois problemas. Primeiro, que esse tipo de lâmpada possuía pouca durabilidade, o que exigia constantes trocas. Segundo, elas atraíam uma quantidade enorme de mariposas e outros insetos que adoram fontes luminosas. Por consequência, às vezes os bichinhos acabavam queimando as lâmpadas e cabia aos operadores entrarem nas máquinas, limparem os insetos e trocarem as válvulas.
O ENIAC ocupava um andar inteiro de um prédio e suas centenas de válvulas atraíam muitos insetos indesejáveis.

Sendo assim, bugs são problemas transitórios em um programa de computador e podem ocasionar problemas ou mesmo gerar falhas no software. Um bug muito comum em games da atualidade é o cálculo da colisão de objetos. Como você pode imaginar, cada objeto, desde uma parede até uma pessoa, é uma entidade do programa do game. Em sua essência, cálculos físicos são necessários para fazer com que um objeto não atravesse ou outro. E, às vezes, esse cálculo pode dar errado por um erro de implementação do próprio desenvolvedor ou por simplesmente algum bug no momento em que o programa faz o cálculo. Assassin’s Creed Unity (Multi) com seus bugs de personagens caindo do céu ou atravessando paredes ou caindo no infinito são belos exemplos de como bugs podem incomodar.
Além de bugs de colisão, a falta de carregamento de texturas era causa de pesadelos em Assassin's Creed Unity.

A principal diferença entre um bug e um glitch está na forma como o usuário pode se aproveitar desse problema de software. Normalmente, quando um bug ocorre não existe muito o que fazer a não ser reiniciar o game e esperar que o problema não se repita, caso seja algo que esteja prejudicando a jogabilidade. Já com o glitch as coisas são diferentes. O glitch é um tipo de bug que o jogador pode provocar no programa do game, a fim de realizar alguma modificação não autorizada ou tirar alguma vantagem. Os famosos speedrunners talvez sejam os usuários que mais utilizam brechas de segurança do software do game para seu benefício.

Pense bem, quem seria capaz de terminar o clássico Ocarina of Time (N64) em apenas 18 minutos (como foi realizado recentemente) sem nenhum tipo de atalho? É humanamente impossível! Apenas com o uso de glitches que alteram instruções e estados do game é possível sair diretamente da câmara do Boss da primeira dungeon diretamente para o confronto final com Ganon. Já em outros casos, glitches podem se tornar uma verdadeira dor de cabeça. No recente Ether One (PC/PS4), um glitch faz com que completar um desafio perto do final do game seja impossível devido a um erro no programa. Nessas horas, infelizmente somente um update consertando erros é a solução.


Mas glitches também podem proporcionar situações únicas. Um exemplo é o famoso glitch do MissingNo de Pokémon Red and Blue (GB). O Pokémon de nível 100 que mais parecia uma aberração da Matrix nada mais era do que um amontoado de sprites (imagens digitais) de Pokémon do game que apareciam sobre essa forma bizarra quando o jogador executava uma sequência correta de eventos. E apesar de parecer esquisito, o problema cria uma grande vantagem para o jogador. Ao encontrar o estranho monstrinho corrompido, o sexto item da mochila do jogador será multiplicado. Quem não iria querer ter 100 Master Balls, não é mesmo?
Wow! Olha só, é um... Um... Que diabos é isso?

Tendo isso em mente, fica claro que nenhum desenvolvedor quer bugs ou glitches em seu game. No entanto, são as falhas o pior pesadelo de qualquer programador (e jogador). Ao contrário de bugs ou glitches, falhas podem ser pequenas ou catastróficas. De qualquer forma, se elas ocorrem tornarão a jogabilidade impraticável ou impossível. Nesse caso, somente uma atualização com correção de erros fornecida pela empresa que criou o game pode ser uma solução para o problema. Um dos exemplos que podemos citar era uma falha em The Legend of Zelda: Skyward Sword (Wii). Em um certo momento do game, caso o jogador seguisse uma forma de completar as dungeons do game e depois salvasse seu progresso, o arquivo de salvamento se corrompia. Para corrigir o problema, a Nintendo teve que lançar até mesmo um canal no Wii para manter o save do game sem erros.

Em quase todos os games que possuem falhas, elas são geradas por bugs ou glitches que adquirem proporções gigantescas ou se propagam, ou seja, eles podem começar como um simples erro no contador de pontuação mas podem afetar outros módulos do programa e em pouco tempo tornar o game inpraticável. Big Rigs (PC), de 2003, é considerado como um dos piores da história. Seus problemas iam desde colisões mal feitas, números que saíam do frame do contador e físicas de movimento tão mal implementadas que não era possível mover o caminhão em certos momentos. No caso dele, nem mesmo um update de correção seria suficiente para salvá-lo. Como seus próprios criadores disseram, “precisaríamos refazer o game do zero para corrigir suas falhas”.

O árduo trabalho de criar um game

Apesar de a profissão de desenvolvedor de games ser um objetivo almejado por tantos jogadores, é preciso desmistificá-la. Eu já criei alguns jogos, nada muito sofisticado, mas certamente deram muito trabalho. Tudo depende da engine e linguagem de programação que você irá utilizar. Algumas facilitam certos aspectos, mas tornam outros complexos. A verdade é que você terá muito com o que quebrar a cabeça enquanto estiver tentando criar seu game.
Criar um game é recompensador, mas são muitas horas em frente ao computador calculando, testando e verificando (e xingando a máquina também)

Mas que problemas são esses que todo programador passa enquanto está trabalhando no seu game? Um dos mais comuns é a detecção de colisão. No entanto, esse não é um bicho de sete cabeças se a engine que você usa já possui essa mecânica implementada (como Unity 3D e Unreal). Mas se você precisa fazer isso no braço, prepare-se para longas horas de cálculos físicos, testes e verificação.
A Unreal Engine é um dos programas que mais oferecem recursos de ponta de forma gratuita para seus usuários criarem games.

Outra dificuldade que muitos encontram é falha no carregamento de dados. Por exemplo, você tem um jogo de corrida e está armazenando os dados referentes ao tempo que cada competidor levou para completar o circuito e, após o final das corridas, exibe um ranking. Mas e se, de repente, no ranking final os tempos estão errados? Provavelmente o que ocorreu é que os dados se perderam enquanto eram armazenados e transferidos de um cenário para o outro. Como todo grande software, um game é dividido em vários módulos que salvam e passam valores para outros módulos do código. Se uma função não está bem implementada e a engine não mostra isso ao programador, leva um bom tempo até que ele descubra onde está o problema para que possa corrigir.
Quando aparece um erro de exceção, prepare-se, não será fácil corrgí-lo.

O mais importante de tudo é saber como prevenir tais problemas. Claro que a correção também tem seu valor, mas antes de criar uma dor de cabeça para os jogadores que terão problemas de experiência e para os desenvolvedores que terão que encontrar forma de corrigir seus códigos, é preciso buscar forma de evitá-los. Para isso duas coisas são imprenscindíveis: utilizar boas técnicas de programação e muita paciência. Planejamento também é necessário para estipular prazos e verificar o quanto de tempo será necessário dedicar para cada etapa do projeto do game. Não são metas fáceis de serem seguidas, ainda mais hoje em dia em que o relógio está sempre correndo contra nós, mas saiba que elas farão toda a diferença entre um personagem que corre pelo cenário e outro que esbarra em um cavalo e começa a cair no infinito.
Sem bugs nos games, ok? HAIOHAOHOAHOAHAOAHOAH

Revisão: Vitor Tibério
Capa: Felipe Araujo

Escreve para o GameBlast sob a licença Creative Commons BY-SA 3.0. Você pode usar e compartilhar este conteúdo desde que credite o autor e veículo original.
Este texto não representa a opinião do GameBlast. Somos uma comunidade de gamers aberta às visões e experiências de cada autor. Escrevemos sob a licença Creative Commons BY-SA 3.0 - você pode usar e compartilhar este conteúdo desde que credite o autor e veículo original.