Fiquei descansando um pouco do projeto, acabei Jogando Days gone, demorei um pouco mais pois acabei mudando de computador e instalar os requisitos para desenvolver no notebook.
Então agora que pude começar desenvolver um pouco com a AI.
Como havia dito ontem precisava separar mais as responsabilidades da AI, estive com uma dificuldade enorme de conseguir compreender como fazer a AI, até que percebi que meu problema era tentar deixar complexo tarefas simples, assim que eu simplifiquei o meu pensamento e como efetivamente acontece as coisas consegui produzir, muito bem por sinal.
Ontem e hoje estive fazendo alguns exercícios mentais pra escrever o que precisava na AI, também mostrei pra minha esposa como estou fazendo isso, é bom ver que ela vem tentar entender essa loucura, ao explicar pra ela, entendo melhor o que devo fazer.
Depois de pensar bastante na estrutura que tinha e separar algumas coisas.
Foi iniciado a parte de AI Muito básica ainda, mas já dá pra ver algo:
Explicando o que tem no vídeo.
primeiro o npc está aguardando “sentir” fome, procura um arbusto mais próximo, e fica tentando comer ele, é quando o arbusto começa dar fruto e ele finalmente “come”.
ainda preciso separar todas as sequências e estados de cada tarefa, mas já é um começo.
estou implementando a AI nos npcs, ainda estou absorvendo os postsde referência.
Bom em resumo eu havia feito um código lá em meados de 2016, que já tem alguma base da AI,
Que cada entidade possui uma Entidade, e dela uma lista de tarefas.
Hoje essa estrutura mudou.
E agora essas tarefas são na verdade eventos que são pré-configurados com timeout que quando invocados algo determinado acontece.
Algo como:
HungerTick (1seg) > evento de subtrair o valor da fome. TirenessTick (1seg) > evento de subtrair o valor da Cansaço. ThirstTick (1seg) > evento de subtrair o valor da Sede.
acredito que ainda vou ter de pensar em uma forma de integrar a inteligência artificial, para tomar uma decisão e deixar uma tasklist.
Penso em algo parecido como The Sims, acho muito agradável essa idéia.
mas por enquanto não é um roadmap, estou desenvolvendo e descobrindo o que é Leben.
hoje recebi um comentário no meu youtube de um mod manager que eu havia feito, era uma pessoa com dificuldade, então enquanto estava respondendo ele de como fazer funcionar e percebi que havia outro vídeo explicando como minha ferramenta funcionava, fiquei bem feliz e orgulhoso.
Então parei um pouco pra dar um update no Leben, só pre adicionar alguns recursos no mod manager.
ah! o manager é pro jogo Kenshi, por enquanto parei um pouco de jogar, mas é muito bom, um dos jogos que mais joguei no Steam.
Li bastante conteúdo e não… eu não li o livro inteiro ou todo conteúdo que postei recentemente, pois estou procurando técnicas, mas achei outros conteúdos bem pertinentes.
o que me chamou atenção é: eu pensei usar Finite State Machine (FSM), mas Behaviour Tree (BT), mas quero deixar a AI Complexa, independente e Extensível, pra isso acredito que terei de tomar a mesma decisão, implementar minha própria Behaviour Tree.
Gostei bastante desta implementação: Libgdx-AI,A Conclusão é interessante, mas a explicação extensa é de grande valia pra mim.
Juntando todo o trabalho feito até o momento, temos esse resultado:
Ainda há ajustes de animação, a animação também “trava”, o Pathfinding dá um bug quando entro em certos localizações.
Mas, já existe esse “sandbox” pra começar colocar itens e testar e fazer algumas coisas.
ainda é necessário fazer o código do behaviour tree, sendo algo muito complexo, não acho que vou adicionar no jogo.
Vou preferir isolar a AI, testar direto num console, depois passar pro HTML ou WPF, e depois que estiver razoável, quero criar ferramentas pra manipular, depois crio uma forma de portar essa instruções pra engine, até o momento essas foram as melhores formas de trabalhar que percebi.
Toda vez que tentei fazer tudo de uma vez, direto na Engine a quantidade de coisas que eu precisava fazer e aprender era overwhelming…
bom é isso, sim, duplo post hoje, mas ontem não deu pra postar e não fiz muita coisa.