Este é o Simple Fight. Ele foi criado para servir de estudo de caso para o meu trabalho de graduação em inteligência artificial (IA). Foram utilizados os gráficos de Street Fighter 2. Além disso, a interatividade dos personagens foi reduzida (em comparação com outros jogos de luta). Por exemplo, não há pulo nem goles especiais.
------------------------
Como Funciona?
Selecione entre "Usuário", "Fuzzy", "Q-Learning" e "Aleatório" nas duas caixas. Isto vai definir qual algorítmo controla os personagens.
Marque ou desmarque a caixinha que diz "limpar IA". Se esta caixa estiver marcada, cada vez que você re-iniciar o jogo (Apertando o "START"), os algorítmos de aprendizado voltaram a ser "burros".
Aperte "START" para começar uma nova luta com as configurações que foram selecionadas nas caixas.
Durante a luta, você pode aumentar ou diminuir a velocidade do jogo com as opções "+velocidade" e "-velocidade".
Você pode controlar os personagens com o teclado. Para fazer isso selecione "Usuário" para um dos jogadores. Existe um bug, que é da natureza do java applet que é o seguinte: para utilizar o teclado você deve dar "foco" ao applet. Ou seja, clique com o botão esquerdo do mouse uma vez sobre a área de luta para que o teclado funcione.
Para controlar o personagem da esquerda use as teclas: "a", "s", "e", "r", "d", "f"
Para controlar o personagem da direita use as teclas: "seta esquerda", "seta direita", "Home", "PgUp", "PgDn", "End"
------------------------
A simplificação do aplicativo tem várias vantagens. O objetivo da minha monografia foi explorar técnicas de IA, e não criar um jogo bacana. A primeira vantagem da simplificação é o tempo de desenvolvimento. Demorei 8 meses (de momentos de folga) para criar o jogo e as inteligências artificiais. Se fosse para o jogo ficar divertido, teria demorado bem mais. A segunda vantagem é que com um jogo simplificado fica mais fácil verificar o desempenho de uma IA, pois existem menos possibilidades à serem percorridas pelos personagens.
Duas técnicas de IA são demonstradas no Simple Fight. A primeira é a Logica Fuzzy, um algorítmo que contém um conjunto de regras "nebulosas" pre-definidas. Ele segue as regras rigorosamente, o que reflete em um comportamento determinístico e previsível. A segunda técnica é o Q-Learning, um algorítmo estocástico capaz de aprender enquanto joga. Ele começa sem nenhum conhecimento do ambiente à sua volta ("burro"), e à medida que experimenta coisas diferentes, descobre o que funciona e o que não funciona, e monta uma política de comportamento ótimo.
Ainda sinto que faltaram alguns ajustes, mas em geral considero o projeto um sucesso porque as IAs que foram desenvolvidas ficaram com boa qualidade. Isto permite seu reaproveitamento em projetos futuros em aplicações comercias, como outros tipos de jogos ou sistemas de controle.
------------------------
Se quiser bater um papo me adicione ao MSN ou mande e-mail para: [email protected]
Gabriel Santos
18 de Janeiro de 2007
Trabalho de Graduação para curso de Ciência da Computação