Lomadee

quinta-feira, 4 de agosto de 2016

O que Pokémon Go perdeu para chegar ao Brasil


Pokémon Go finalmente foi lançado no Brasil após um longo período de espera e a galera já está se divertindo aos montes enquanto seus celulares não são roubados. Porém, há um detalhe que talvez nem todos saibam, o jogo que foi lançado aqui no Brasil não é exatamente o mesmo que o resto do mundo vinha jogando esse tempo todo.

Assim como o meu salário que morre na alfândega, Pokémon Go teve que deixar algumas coisas para trás para poder atravessar as fronteiras e chegar ao Brasil. Se você está curtindo o lançamento do jogo, provavelmente reparou que os servidores aguentaram o tranco, isso porque houve mudanças no jogo.

Essas coisas que foram removidas ou alteradas são exatamente o que estão fazendo o público do resto do mundo estar zangado com a produtora Niantic, como falamos no artigo "Pokémon Go & A Queda de Reichenbach". Vamos dar uma conferida no que o jogo perdeu para chegar ao Brasil.

Aparentemente a prioridade da Niantic era aliviar os servidores dela, pois desde que o jogo lançou ele sofria de instabilidade constante. Isso aconteceu porque inicialmente não era previsto todo esse sucesso do jogo. Se eles não conseguiam manter o serviço estável em um país, imagine ficar planejando lançamento em outros.


Alguns fatores devem ter apressado o lançamento do jogo no Brasil, como o hackeamento da conta do CEO da Niantic, John Hanke (@johnhanke), que não foi algo muito legal, mas que deve ter feito a empresa priorizar o povo #HueBR. Porém, de nada adiantaria se os servidores continuassem congestionados.

A solução veio na atualização de número 0.31.0 de Pokémon Go. Estranhamente ela não adicionava coisas ao jogo, removia. Foi removido o sistema de "Pokémons próximos" que estava bugado mesmo, o sistema de economizar bateria e foram alteradas a frequência de atualização do mapa e a chance de captura de pokémons.

A maioria dessas alterações parece pequena, mas foram elas que permitiram o lançamento de Pokémon Go no Brasil. Não vou falar do sistema de economizar bateria, pois obviamente este não afeta o jogo em nada, porém o sistema de "Pokémons próximos" talvez fosse um dos mais problemáticos.

Pokémon Go não traz exatamente a programação mais otimizada possível, ele fica checando informações o tempo todo e isso causa muito estresse ao servidor. Muita coisa que poderia ser feita em Client Side, é feita Server Side, apenas porque o jogo foi projetado sem pensar muito nesse lado de poupar o servidor.


Uma explicação rápida para leigos, quando falamos de jogos online, existem dois lados: O Server Side, é o lado do servidor, bancado pela Niantic com certos custos, que mantém informações seguras e permanentes sobre o jogo. O outro lado é o Client Side, é o que acontece no seu celular, como o processamento dos gráficos e todos os sistemas do jogo em tempo real, até que alguma informação precise ser gravada.

Em outras palavras, o sistema que detecta se há pokémons próximos de você, fica pedindo informações sobre isso ao servidor quase que o tempo todo. Imagine milhões de pessoas pedindo por essa informação ao jogo quase o tempo todo. Não é de se surpreender que ele fique sobrecarregado.

Uma das coisas que Pokémon Go poderia fazer se fosse otimizado é baixar um mini-mapa de informações sobre o local onde você está jogando, com todos os dados sobre Pokémons próximos calculados Client Side, não Server Side.

Talvez o medo da Niantic é que pelas informações estarem no celular as pessoas trapaceassem e alterassem os dados de quais pokémons existem naquela região, mas ela poderia simplesmente confirmar em uma lista se o pokémon capturado bate com os da região, ao invés de deixar a localização de todos os pokémons no seu servidor.


Ironicamente, o sistema de detecção de pokémons próximos de Pokémon Go nem mesmo funcionava. Todos eram mostrados como a "3 patas" de distância, no que ficou conhecido como o "bug das 3 patas". Para contornar o problema jogadores criaram seus próprios Apps de localização para indicar a proximidade dos monstros, como PokéVision.

Na última atualização a Niantic não apenas removeu o sistema de proximidade por completo, como ainda bloqueou a ação de Apps terceirizados. Isso é uma das coisas que deixou os fãs bem irritados com o jogo, pois agora simplesmente não há como saber quais pokémons estão perto de você.

A segunda grande alteração foi na frequência de atualização do mapa. Antes a cada 5 segundos o seu mapa de Pokémon Go era atualizado e assim você saberia se havia algum pokémon no local. Agora a frequência é de 10 em 10 segundos, o que pode não parecer nada, mas é na verdade gigante.

A mudança de 5 para 10 segundos significa 50% a menos de requisições ao servidor. É como se metade dos EUA parasse de pedir informações ao servidor da Niantic. Começando a entender onde o Brasil entra nisso? Todo esse potencial livre significa que o jogo poderia receber 50% novos jogadores.


A frequência de atualização alterou pouco o jogo para quem se aventurava a pé, porém mudou bastante sobre rodas. Para quem jogava Pokémon Go de bicicleta, skate, carro, ônibus ou metrô, 10 segundos podem significar passar completamente por áreas com pokémons esperando para serem capturados. Mas talvez o jogo não tenha sido feito para jogar sobre rodas, é um argumento válido.

Então vem a terceira mudança, a que provavelmente causará mais problemas. A taxa de captura dos pokémons foi alterada de forma que está mais difícil capturar os monstrinhos. Agora aproximadamente 1/3 dos encontros com pokémons acaba em insucesso, pokébolas gastas à toa e um pokémon que foge sem ser capturado.

Isso também é uma questão de servidor, pois toda vez que um pokémon é capturado, a informação precisa ser gravada no servidor, Server Side. Se as informações ficassem guardadas no celular, Client Side, seria fácil alterá-las. Com 1/3 a menos de capturas, mais uma vez o sistema é aliviado e permite a nós brasileiros capturar pokémons também.

Há no entanto um problema ético aqui. Pokébolas são recursos vendidos através de microtransações com dinheiro de verdade no jogo. Um aumento na dificuldade para capturar pokémons força jogadores a gastarem mais para obter o mesmo resultado. Isso não caiu muito bem com os fãs.


Uma coisa simples que a Niantic poderia ter feito é nos dar a opção de enviar o pokémon capturado diretamente para o professor em troca de doces de imediato, sem guardá-lo e portanto poupando mais uma tarefa para o servidor.

Novamente, dá pra entender por que os jogadores do resto do mundo estão frustrados por perder alguns elementos do jogo, mas não dá para entender tamanho ódio. Essas mudanças provavelmente poderão ser revertidas no futuro quando as coisas estabilizarem

Aqui no Brasil o jogo acabou de chegar, então não estamos nessa vibe negativa, mas nos faz pensar se estaríamos dispostos a perder jogo pior por aqui para que mais países jogassem.

Post relacionado
- Pokémon Go & A Queda de Reichenbach

Nenhum comentário:

Postar um comentário