Cursos / Jogos Digitais / Inteligência Artificial para Jogos / Aula
O fato de gerar um valor qualquer dentro do intervalo de erro (na seção anterior) faz com que todos os valores dele tenham a mesma probabilidade de serem escolhidos. Isso faz sentido para você? Faz sentido que o maior nível de erro (aquele do chute de Roberto Baggio!) tenha a mesma probabilidade de ocorrer do que um chute mais próximo do alvo desejado?
Normalmente, não é isso que acontece. Os chutes desastrosos ocorrem com menos frequência do que os chutes próximos ao alvo. Se você pedir para um jogador cobrar centenas de pênaltis, descobrirá uma distribuição nos níveis de erros dos chutes (distância do alvo) que não é igual para todos os valores. Em geral, se para cada chute dado fosse medida a distância do alvo e somadas suas frequências, provavelmente teríamos um gráfico como o histograma apresentado na Figura 05. Ou seja, os chutes desastrosos, sejam para a direita ou para a esquerda, apareceriam com menor frequência, enquanto as maiores frequências ocorreriam mais próximas do alvo.
Esse histograma pode ser simplificado através de uma curva que indica uma tendência do comportamento dos chutes do jogador. É claro que ela pode ser diferente para cada um. Para alguns, a média estará mais próxima do chute perfeito, enquanto para outros (e eu me incluo nesse grupo ) a média estará bem mais próxima do chute desastroso. Como essa curva representa a frequência de ocorrências de um evento (no seu caso, o erro do chute), ela está diretamente relacionada à probabilidade de esse evento ocorrer. Por exemplo, se após 100 chutes, 90 foram a menos de 50 cm do alvo, pode-se inferir que a probabilidade de o jogador chutar nesse intervalo é de 90%, enquanto a de chutar a bola a uma distância maior ou igual a 50 cm é de 10%. Veja na Figura 06 a curva de distribuição de probabilidade das tentativas dos chutes do jogador.
Por isso, diz-se que essa é uma curva de distribuição de probabilidades. Para simplificar o método, considere-a como uma curva de distribuição normal, também conhecida como distribuição de Gauss ou Gaussiana. Essa curva possui características muito interessantes para esse caso.
A distribuição normal é muito importante em várias áreas do conhecimento, seja para descrever fenômenos físicos ou até da economia. Porém, nesse caso, ela será útil para descrever de forma mais realista as ações dos jogadores sem precisar pedir que eles chutem centenas de vezes para ficar medindo seus erros. Uma das características dessa curva é que ela pode ser descrita completamente através de dois parâmetros: a média e o desvio padrão. Conhecendo esses dois valores, você pode determinar qual a probabilidade de qualquer intervalo de erro ocorrer.
Claro que você sabe o que é a média, mas o que é desvio padrão?
Desvio padrão é uma medida para representar o quão a boca do sino (fiz essa analogia, pois a forma da curva lembra um sino) da Figura 06 é fechada ou aberta. Ou seja, desvio padrão é uma medida de dispersão de dados. Quanto mais dispersos são os dados, mais a boca do sino estará aberta. Consequentemente, quanto menos dispersos, mais fechada ela estará. Por exemplo, compare os seguintes conjuntos { 1, 2, 3, 4, 5, 6, 7, 8, 9 } e { 4, 4, 4, 5, 5, 5, 6, 6, 6 }. Ambos, possuem a mesma média: 5. Porém, os dados do primeiro conjunto estão mais dispersos que o do segundo. Assim, o desvio padrão do primeiro é maior do que o do segundo e, por conseguinte, a “boca do sino” estará mais aberta no primeiro.
A Figura 07 ilustra duas curvas com mesma média, mas com desvios padrões diferentes, e, como consequência, a amplitude da “boca do sino” também.
Assim, se considerar que os chutes dos jogadores seguem uma distribuição normal, usando a média e o desvio padrão de um jogador, você poderá extrair a probabilidade do nível de erro de um chute dele ocorrer. Bom, na verdade, como você está lidando com valores contínuos, não dá para saber a probabilidade de um erro exatamente, mas de um intervalo de erro. Por exemplo, não dá para saber a probabilidade exata do chute a 40 cm do alvo, mas se pode extrair a probabilidade de um chute sair a mais de 1 m de distância à direita do seu alvo (intervalo definido pelos valores maiores do que 1), bem como a probabilidade de seu chute sair a mais de 1,5 m à esquerda do alvo (intervalo dos valores menores que -1,5), ou de a distância do alvo estar entre 80 e 40 cm à esquerda do alvo (intervalo dos valores maiores que -80 e menores que -40).
A Figura 08 ilustra a probabilidade desses intervalos. É importante ressaltar que, na curva de distribuição normal, a probabilidade de um intervalo é definida pela área da curva delimitada pelo intervalo. Assim, a área total da curva é de 100%.
Para calcular a área de um intervalo, consulte uma tabela que contém os valores de distribuição normal, para simplificar o processo e tentar uma abordagem mais direta ao problema que você está resolvendo (simular o erro das ações dos jogadores). A simplificação é usar sua própria tabela, porém seguindo as características de uma distribuição normal. Por exemplo, você pode criar uma tabela que corresponda à curva de distribuição presente na Figura 09. Assim, você teria intervalos de erros e a probabilidade associada a cada intervalo.
Como você percebeu, foi transformada a curva de distribuição em valores discretos, definidos pelos seus respectivos intervalos, como exemplificado no Quadro 01. Porém, você fez isso baseado nos conceitos de distribuição normal, há muito tempo utilizados com sucesso para representar fenômenos estatísticos. Então, espere que o comportamento dos personagens virtuais tenha o mesmo sucesso.
Quadro 01 - Exemplo de quadro de distribuição de probabilidade sobre os errosLembre-se de que os valores negativos do Quadro 01 representam a distância da bola que foi à esquerda, enquanto os valores positivos representam a distância à direita. Dado o quadro, o que você precisa fazer é aplicar o mesmo procedimento das escolhas entre direita e esquerda feito anteriormente. Só que, agora, a escolha é uma sequência de intervalos, cada um tendo uma probabilidade associada. Note que, da mesma forma que a escolha entre direita e esquerda, a soma das probabilidades das possíveis opções necessita ser obrigatoriamente igual a 1 (ou seja, 100%).
Mas como tirar um valor dentro de um conjunto de possibilidades, cada um com uma probabilidade diferente, uma vez que as linguagens de programação em geral nos dão um comando para tirar um valor sem probabilidade associada (ou seja, todos os valores têm a mesma probabilidade de serem sorteados)?
A maneira mais simples é reescrever o Quadro, usando o somatório das probabilidades, como ilustrado na Figura 10. Usando essa estratégia, você pode usar o comando de geração de números aleatórios da linguagem e verificar em qual intervalo um valor aleatório se encontra. O tamanho do intervalo é que definirá o valor da probabilidade associado. No exemplo dado, um valor entre 0 e 2 tem 2% de chance de ocorrer, um valor entre 2 e 5 tem 3% de chance, um valor entre 5 e 14 tem 9%, um valor entre 14 e 30 tem 16% e assim por diante. O novo Quadro terá, portanto, um novo dado contendo o limite do intervalo, tal como apresentado no Quadro 02.
Quadro 02 - Comparação entre os métodos de partida de motores elétricos.Versão 5.3 - Todos os Direitos reservados