segunda-feira, 11 de janeiro de 2021

jogo da velha pt.2: como fiz a inteligência artifical do oponente

a IA começa escolhendo aleatoriamente uma de suas peças disponíveis para jogar e depois avalia o campo para escolher a melhor célula onde botar, levando em consideração a possibilidade de formar uma linha, impedir o oponente de fazê-lo e se beneficiar do poder da peça.

a IA não estrategiza de verdade, toma uma ação por vez sem planejar a próxima, mas visto que já é difícil conseguir ganhar, apesar de não ser difícil de evitar perder, não achei necessário que ela jogasse melhor que isso, pelo menos por agora.

na hora de analisar o campo a IA avalia todas as linhas de três células possíveis, uma a uma, e pontua as células vazias dependendo da possibilidade de conseguir formar uma linha sua ou impedir uma linha do oponente. no final do processo a célula com maior pontuação é escolhida e a IA joga sua peça nela.

um espaço vazia ganha uma certa pontuação se fizer parte de uma linha com uma outra peça da IA e uma pontuação bem maior caso faça parte de uma linha com duas peças, sendo a peça que falta para formar um conjunto de três. o mesmo é feito avaliando as peças do oponente, se a linha tiver duas peças do oponente, o espaço vazio ganha uma pontuação alta para levar a IA a impedir o oponente de ganhar.

cada espaço vazio também é pontuado dependendo do efeito da peça escolhida. certos efeitos retiram força de inimigos adjacentes ou adicionam força a aliados adjacentes. efeitos que dependem da posição da peça no campo e de seus vizinhos possuem tags que levam a IA a levar as peças adjacentes em consideração. peças que danificam os inimigos adjacentes por exemplo, dão pontos a um espaço vazio por cada inimigo adjacente a ele.

 

gif explicativo do processo de pontuação dos espaços vazios
explicação do processo de pontuação de um único espaço vazio de acordo com todas as linhas de três peças em volta dele

gif demonstrando todas as linhas analisadas pela IA
todas as linhas de três peças analisadas pela IA, em ordem


.

Sem comentários:

Enviar um comentário

Floreio, minha gramática de geração procedural de texto

Gostaria de falar um pouco da ferramenta de geração procedural de texto por gramática de substituição que eu venho desenvolvendo na Unity pa...