Esse repositório foi criado para armazenar um jogo feito em Godot para experimentos com Algoritmos Genéticos em Criação de Waves. Mais detalhes podem ser encontrados abaixo:
-
O outro jogo criado para comparação (Space Shooter) pode ser encontrado aqui
-
O dataset com os resultados pode ser encontrado aqui.
-
Os assets utilizados são propriedade de Kenney, utilizados sob CC0 / Modificados do original.
-
A playlist usada para a criação do jogo pode ser encontrada aqui.
-
Os tutoriais usado para embasar a criação do algoritmo genéticos podem ser encontrados aqui (de Ahmed Gad) e aqui (de Vijini Mallawaarachchi)
A função de fitness e mutação tem grande importância na exploração das possíveis soluções do problema, a função fitness irá ditar quem são os indivíduos mais aptos de uma população (selecionar os melhores candidatos) enquanto a taxa de mutação permite que você explore as diversas combinações de indivíduos possíveis, evitando que fique preso em máximos locais nas primeiras interações.
A diferença entre as versões está na taxa de mutação e na função fitness.
A Função fitness usada na v1 é:
(reached_goal(x) + offset(x)) / 2
reached_goal (x) := se o inimigo x chegou ao final do trajeto (1 se chegou, 0 caso contrário)
offset(x) := quanto do trajeto o inimigo x percorreu.
Taxa de mutação que decrementa com o tempo (começa em 100% e decai 5% a cada iteração, até chegar em 0%)
O código pode ser encontrado aqui.
A Função fitness usada na v2 é:
(hp(x) + offset(x)) / 2
hp (x) := quanto de vida de x sobrou ao final do trajeto (float de 0 a 1, com 1 equivalente a 100%)
offset(x) := quanto do trajeto o inimigo x percorreu.
Taxa de mutação fixa em 1/12 na 1a wave e 1 nas waves seguintes.
O código pode ser encontrado aqui.
A função fitness é equivalente a v2 (anterior).
Taxa de mutação constante de 1/12.