🤔 Para Refletir :
"Todos projetos não são unicamente meu, pois cada sugestão e critica, recursos e sugestões fazem me ver que ele leva um pedaço de cada pessoa nele"
- riquecamarg0

Algorítimo genético em jogos O.o ?

FabioSmuu Masculino

Plebeu
Membro
Membro
Avisa ao recaptcha da google que eu não sou um robô
Juntou-se
11 de Abril de 2021
Postagens
27
Bravecoins
33
Área
Programação
Motor de jogo
Outros
Bom dia/tarde/noite pessoal da CB ^^

Estava aqui pensando sobre algumas ideias loucas usando algorítimo genético.. 😳🤔

E tipo, imagina só um jogo topdown mesmo, onde será um mundo aberto e semi-procedural, com diversos "NPCs" sendo os jogadores hehe.
Estes "NPCs" teriam um genoma, cada um deles e objetivos. 🤗

Eles basicamente teriam que andar numa área limitada deste mapa atras de recursos para montar equipamentos.
O intuito seria basicamente, ver quais dos genomas irá sobreviver no processo seletivo, então eles teriam que aprender a atacar, correr, montar estrategia e com o passar do aprendizado da população, poderia conter alguns NPCs sem genomas, apenas para vender itens aos indevidos inteligentes.. 🤯

Eu estava pensando a respeito...
Seria bem legal ver o comportamento do algoritmo para sobreviver ^^
Já até pensei na function fitness hehe 😅

Oque vocês acham a respeito?
Seria algo legal ou totalmente desnecessário? kkk
Daria trabalho, mas seria um trabalho bem gasto kkk ou não ?

Enfim,foi só uma ideia que tive e nem sei se seria legal iniciar este projeto 😬
 
Já ouviu falar de Dwarf Fortress? A ideia é parecida. Não sei até que ponto eles empregam algoritmos genéticos propriamente ditos na implementação, mas certamente existem parâmetros nos NPCs que influenciam seu comportamento (incluindo morte/reprodução).

Minha visão é que talvez uma abordagem mais clássica de algoritmos genéticos não seria muito prática nesse caso; das aplicações que eu já vi, em geral, é necessário um bom tempo até que os genomas se adaptem ao objetivo de fato, não sei até onde isso seria interessante de ver fora de um contexto de "olha, isso é um algoritmo genético, é assim que funciona". Também não é raro precisar de algum recurso pra acelerar o tempo, dado que o processo evolutivo demora demais se as iterações forem longas, então teria que incluir isso no jogo de alguma maneira.

Outro empecilho que eu vejo é que esses algoritmos costumam convergir, então a menos que você tome bastante cuidado, muito provavelmente depois de um tempo vai ter só um monte de NPC agindo igual.

Se você quiser muito usar um algoritmo genético, eu iria mais pelo caminho de pré-computar os genomas pra resolver algum(ns) problema(s) específico(s) que seja(m) conhecido(s) a priori (que pode ir de buscar recursos de alguma maneira a batalhar contra um jogador médio).
Acho que o tempo de cômputo das adaptações inviabiliza um pouco a aplicação em tempo real, pelo menos considerando os algoritmos que eu conheço (que não são muitos, tbh). Isso, claro, a menos que o seu objetivo seja apenas mostrar o algoritmo genético funcionando (aí acho que deixar de ser um jogo, e vira mais uma simulação).
 
Já chegue sim a dar uma olhada a respeito do simulador Dwarf Fortress . ^^

A ideia deste algorítimo genético seria basicamente uma simulação, mas com recursos de correções para evitar que os genomas no fim sejam semelhantes ^^


Pensei em algo que adicione mutações agressivas nos genomas e até mesmo alguns crosovers desnecessários...
Algo para de fato desbalancear...

E logico, um personagem que possui as mesma limitações dos NPCs (mais como uma forma de observador)

É apenas uma ideia hehe, não para mostrar como é um algorítimo genético, mas sim para efetuar testes, onde o "ambiente" sempre será diferenciado etc...

Tem muito problema em construir esta estrutura, principalmente se for basear um perceptron ou qualquer outra rede...

Obrigado pela observação <3 me fez pensar mais em soluções de problemas que talvez sejam contornáveis.
 
É interessante. Creio que postei em algum lugar minha tentativa de aplicar seleção natural nos inimigos para uma adaptação ao estilo do jogador (Edit: aqui). Como o Brandt disse, não rendeu bons resultados porque o tempo que este tipo de coisa leva para fazer algum efeito visível é muito grande se comparado à uma rotina normal de jogo. Exceto nos casos em que monstros/NPCs são substituídos por novas gerações com muita frequência.

Mas não acho que seja inviável. É uma ideia muito interessante e gostaria de vê-la aplicada. Se todo o projeto for idealizado com isto em mente, com todos os gatilhos necessários, o resultado pode ser bem interessante. Vale a pena nem que seja só pelo estudo.
 
Uma das formas que pensei para que isso flui-se bem é treinar alguns genomas com uma MLP e fazer diversas convoluções...

Gerar muitos indivíduos até chegar num resultado satisfatórios(oque levaria tempo)
Então pegar estes genomas e esta rede já com alguns fitness pré-definidos e colocar num projeto, onde seria feito processos seletivos, cross-overs e mutações(exageradas) para mudar o comportamento dos indivíduos.

O maior problema nem seria o tempo em si, pois dá para fazer como uma rede normal detecta uma imagem por exemplo..
Vem a elaboração e desenvolvimento da rede, testes dos pesos iniciais, o treino e a ajustes dos pesos e só ai que estará pronto alguns genomas para uso ^^

No projeto não seria diferente.. o único problema "grave", seria os indivíduos se comportarem iguais, oque estou buscando algumas soluções.. talvez ao invés de pegar os melhores indivíduos para gerar os melhores genomas, poderia pegar o melhor e o pior para puxar uma media e ver no que da...

Vou continuar penando em uma solução ^^

E nossa kkk gostei do projeto de seleção natural, pretende continuar ?
 
Voltar
Topo Inferior