É interessante notar que a IA clássica e a IA para jogos partem de definições diferentes de IA.
A IA para jogos tem interesse numa IA que passe ao teste de turing. Ou seja, que um humano, jogando contra a IA, não perceba que se trata de uma IA, e pense estar jogando com outro jogador. Ok, ainda estamos muito distantes disso, principalmente em se falando de desafios mais complexos.
A IA clássica já se baseia numa definição mais próxima de “Fazer o computador fazer melhor o que os humanos hoje fazem bem melhor que ele”. É a busca do raciocínio perfeito, da eficiência técnica.
Então, por exemplo, para meus alunos de IA para jogos, eu sempre proponho que eles façam dois tipos de bots. Um deles, o que não erra, usando a teoria da IA clássica (árvores de decisão, algorítmos genéticos, etc). Como o jogo proposto é geralmente de mecânica simples (Pong, por exemplo) eles não tem muita dificuldade em fazer um bot invencível.
O segundo desafio (muito pior, na minha opinião) é fazer um bot que jogue bem, mas que erre de vez em quando. E, mais importante do que isso, erre de uma maneira convincente para o jogador. Ou seja, o bot tem que mostrar sua potencialidade, mas não ser programado necessariamente para ganhar. Isso exige a simulação do reflexo humano, ou da nossa tentativa (muitas vezes frustrada) de antecipar a posição da bola sem necessariamente recorrer a um calculo matemático preciso. Também exige entender como o jogador pensa e humaniza o bot. As pessoas tendem a tentar montar um “mapa mental” de seu oponente, imaginar o que ele está pensando e, embora a máquina não seja humana, eles fazem isso para ela também.
No caso de jogos, o algoritmo que acerta sempre pode não ser desejável. Afinal, quem quer um inimigo que não perde nunca?