Baixe o app para aproveitar ainda mais
Prévia do material em texto
O papel da aleatoriedade nos jogos eletrônicos Willian Rodrigues de Abreu Silva A matemática está presente em nossas vidas de diversas formas, aparecendo até nos lugares em que menos imaginamos. Uma utilização não tão óbvia dela está nos jogos eletrônicos, mais especificamente em algo que chamamos de RNG. RNG, ou Random Number Generator (gerador de números aleatórios, em português), é o nome dado para um algoritmo matemático que gera números aleatórios, estes são usados para ditar tudo que há de aleatório em um jogo. Com a ascensão dos e-sports, esse assunto tem ganhado enorme importância quando o assunto são jogos eletrônicos. Por exemplo, jogos de tiro como Fortnite, Counter Strike e FreeFire apresentam aleatoriedade principalmente em uma de suas funções mais básicas, na hora de atirar. Embora armas como pistolas e rifles de longo alcance muitas vezes apresentem tiros mais precisos, sendo influenciados somente por fatores constantes como a gravidade, a qual afeta o trajeto da bala, armas como fuzis e metralhadoras tendem a ser bem mais inconsistentes. Observando a imagem 1, podemos ver uma mira padrão de uma arma de baixa precisão. No momento em que o jogador atira, o RNG escolhe um ponto de duas coordenadas aleatórias, dadas como um plano cartesiano, dentro do círculo branco, dando desse modo a sensação de imprecisão da arma. Imagem 1 Além disso, jogos do gênero “Battle Royale” tendem a apresentar mais aleatoriedade quando comparados a outros jogos de tiro. Na hora da criação da partida, o algoritmo seleciona onde os itens e as armas aparecerão no mapa, adicionando um fator sorte ao jogo, assim cair onde há itens que melhor satisfazem suas necessidades podem te dar uma grande vantagem. Nos jogos do tipo MOBA (“Multiplayer Online Battle Arena”, ou Arena de batalha multijogador online), a aleatoriedade se encontra presente de maneiras diferentes das já citadas. No geral, os dois jogos mais populares do gênero, League of Legends e DOTA2, embora tendo objetivos muito parecidos (dois times de 5 pessoas batalhando para destruir a base inimiga), ambos lidam com a aleatoriedade de maneiras extremamente diferentes. League of Legends tentou reduzir o máximo possível a aleatoriedade dentro jogo, desse modo priorizando ao máximo as habilidade dos jogadores. Um dos poucos fatores relevantes regidos por aleatoriedade é o acerto crítico, a chance de o personagem dar o dobro de dano num ataque, podendo ir de 0 a 100%, dependendo de seus equipamentos. Além disso, no começo da partida um dragão elemental aparece num lugar específico no mapa. Este pode ser de 4 elementos diferentes, escolhido ao acaso no começo da partida. Este dá ao time que o abater diferentes bônus, baseados no elemento, que servem como uma vantagem para ganhar a partida. Imagem 2: Os 4 dragões elementais DOTA2, entretanto, abraça a aleatoriedade de várias maneiras. Diversos fatores no jogo são regidos por ela, forçando ao máximo os jogadores a se adaptarem e jogarem em volta dessa aleatoriedade. Para deixar as coisas mais “justas”, DOTA2 usa, em alguns casos, um sistema de aleatoriedade no qual a chance de um evento acontecer aumenta caso ele não tenha acontecido na ultima tentativa. Exemplificando, se está escrito que personagem tem 25% de chance de acertar um ataque crítico, o algoritmo muda isso pra que ele tenha na realidade cerca de 9% de chance no primeiro ataque, assim, caso ele erre o primeiro ataque critico, o segundo ataque tem uma chance maior, cerca de 17%, errando novamente, a chance sobe para 25%, e a assim sucessivamente. Após acertar um golpe, a chance do próximo golpe ser crítico volta para 9%. Esse algoritmo de pseudo-aleatoriedade usado em DOTA2 acaba por deixar as coisas mais previsíveis e menos inconstantes. No geral, algoritmos que são previsíveis acabam sendo muito pouco eficientes e arriscados, porém no caso desse jogo, ele se encaixa muito bem. Outro jogo que também utiliza RNG é o Minecraft. Na criação do mundo, o jogo gera um número aleatório que chamamos de “semente”. A semente é um número que, ao ser passado numa fórmula matemática complexa, inicia um algoritmo de aleatoriedade que cria todos os aspectos do mundo. O algoritmo utilizado também é de pseudo-aleatoriedade, visto que, caso você tenha o valor dessa semente é possível criar sempre o mesmo mundo, assim tirando toda a aleatoriedade. Imagem 3: Menu de criação de mundo no Minecraft, com campo para inserção da semente Mas na realidade, o que é aleatoriedade real e o que é pseudo-aleatoriedade? Existem dois tipos de algoritmos de RNG, TRNG e PNRG. TRNG (sigla para “True Random Number Generator”, ou gerador de números aleatórios verdadeiros) é a forma de aleatoriedade mais pura que se pode obter. No geral, é utilizado um aparelho que capta qualquer evento que não siga nenhum padrão específico, como ondas do mar, som atmosférico e ruído térmico. Esse aparelho transforma esse dado em números, os aplica numa fórmula matemática e retorna um ou mais números aleatórios. Isso, entretanto, muitas vezes não é um processo prático para a maioria dos computadores. Esse tipo de aleatoriedade normalmente está presente em cassinos, nas maquinas de slot, por exemplo, e em criptografia, que exige algoritmos de aleatoriedade extremamente complexos. Porém, devido a inabilidade do computador de produzir esse tipo de aleatoriedade, praticamente todos os jogos eletrônicos e até mesmo cassinos virtuais utilizam algoritmos de pseudo –aleatoriedade (ou PRNG). Como explicado para Minecraft, praticamente todos os jogos também apresentam uma semente, e todos os eventos aleatórios posteriores são baseados naquela semente. Entretanto, ao contrário do Minecraft, não é possível saber esse valor, desse modo é impossível o jogador prever o resultado das aleatoriedades que irão acontecer no jogo. Mas afinal, como de fato funcionam esses algoritmos de PRNG? Embora muitos utilizem fórmulas matemáticas extremamente avançadas, existem algoritmos simples que servem para mostrar a idéia por trás da geração de números aleatórios. Um exemplo é o método do quadrado do meio, apresentando numa conferência por John Von Neumann em 1949. Primeiramente, precisamos de uma semente. Podemos escolher um número arbitráriamente ou utilizar de algum método fixo para escolher esse valor (por exemplo, podemos olhar num relógio e somar os digitos dos segundos e dos milisegundos desse exato momento). Após a obtenção da semente, elevamos o valor ao quadrado, e pegamos os algoritmos no meio do resultado como próximo valor da sequência. Repetimos o processo quantas vezes for necessário para gerar a quantidade de números aleatórios que quisermos. Para exemplificar, digamos que queremos gerar números aleatórios com 2 dígitos, e escolhemos como nosso valor de semente o número 42. 42² = 1764 => 76 Obtido o valor, elevamos ele novamente ao quadrado e fazemos isso quantas vezes quisermos. 76² = 5776 => 77 77² = 5929 => 92 92² = 8464 => 46 46² = 2116 => 11 E assim por diante. Nossa sequência aleatória obtida é (42, 76, 77, 92, 46, 11) o que parece razoavelmente aleatório. Entretanto, esse método tem diversas falhas, podendo muitas vezes gerar repetições infinitas dependendo do valor da semente. Como exemplo, escolhemos o valor 50 como semente. 50² = 2500 => 50 50² = 2500 => 50 Como podemos ver, escolhendo o valor 50, o algoritmo sempre irá escolher 50 como próximo valor, sendo assim nossa sequência composta apenas pelo número 50 repetido diversas vezes. Visto que esse algoritmo pode levar a repetições como essa com diversos valores diferentes de semente, esse método é considerado um método pouco eficiente para a geração de números aleatórios. Observando a imagem 4, podemos ver como o algoritmo se comporta para todos os números de 2 digitos. Imagem 4 Hoje, temos algoritmos de PRNG que cada mais se assimilam muito aos algoritmos de TNRG. Entretanto, um algoritmo de PRNG de baixa qualidade(como o visto acima) pode ser facilmente hackeado, assim, muitos ataques cibernéticos e quebras de criptografia tem como principal culpado algoritmos de aleatoriedade fracos e previsíveis. Além disso, já tiveram casos em que algoritmos de baixa qualidade fizeram pessoas perderem grandes quantias de dinheiro em cassinos virtuais, causando problemas para empresas criadoras. Mas não só em jogos esta presente a aleatoriedade, ela até certo ponto está presente em todos os aspectos da vida. Dito isto, podemos dizer que ela está presente em esportes praticados na vida real, fatores como temperatura, velocidade do vento e tempo podem facilmente mudar o resultado de um jogo indiretamente. Entretanto, a minimização da aleatoriedade é uma discussão muito presente especialmente no meio dos e- sports e jogos eletrônicos em geral. Visto que a aleatoriedade pode levar a mudanças de resultado drásticas, é necessário que a empresa criadora sempre tenha em mente a quantidade de aspectos que os jogadores não podem controlar. No caso de muita aleatoriedade, jogadores podem se deparar com resultados totalmente regidos por sorte. No caso dos e-sports, entretanto, aleatoriedade pode aumentar o fator entretenimento para o público, adicionando obstáculos aleatórios que os jogadores têm que superar para vencer a partida. Sendo assim, é necessário sempre procurar a dose certa de aleatoriedade para que o jogo seja um sucesso. Bibliografia RUBINSTEIN-SALZEDO, S. Cryptography, New York: Springer International Publishing, 2018. VILLELA, Marcelo. LoL: veja mudanças da pré-temporada de 2020 no MOBA da Riot Games. Techtudo, 2019. Disponível em: <https://www.techtudo.com.br/noticias/2019/11/lol-veja-mudancas-da-pre- temporada-de-2020-no-moba-da-riot-games.ghtml>. Acesso em: 6 de ago. de 2020. PSEUDO random distribution. Liquipedia. Disponível em: <https://liquipedia.net/dota2/Pseudo_Random_Distribution>. Acesso em: 6 de ago. de 2020. MIDDLE-SQUARE method. Wikipedia. Disponível em: <https://en.wikipedia.org/wiki/Middle- square_method>. Acesso em 6 de ago. de 2020. FORTNITE Bloom – Weapon Mechanics. ARENAFPS. Disponível em: <http://arenafps.com/fortnite- battle-royale-weapon-bloom-mechanics/>. Acesso em 6 de ago. de 2020. ABOUT Random Number Generators. Gambling Sites. Disponível em: <https://www.gamblingsites.com/online-casino/introduction/random-number-generators/>. Acesso em 8 de ago. de 2020.
Compartilhar