Leben dia 38

Voltei pro desenvolvimento do Leben…

Vai ano, volta ano e sempre pego esse projeto, toco por alguns dias e paro.

Hoje eu cansei de usar o godot, estava na versão v3.3.2.

estive fazendo o upgrade do projeto pra versão v4.2.2, mudou bastante coisa, acabou que eu tive que portar o Leben.Core pra net core 6.0

terminei de portar e comecei trabalhar no projeto
Vira e mexe vem o erro:

eu deleto o script, mudo o script, crio um novo, mas nunca é uma coisa simples, parece que foi uma gambiarra pra funcionar C# nessa engine.

por conta disso vou mudar de engine de novo…
pra quem não viu o histórico…

eu comecei o projeto com Unity, foi pro Mono, Unreal, tentei zenko/stride.

Voltarei pro Mono que já tem um ecossistema mais próximo do que quero trabalhar

eu estou tentando ir desenvolvendo com BDD então eu não preciso de uma Engine ainda

só quero adicionar os objetos programaticamente e rodar pelo Leben.Core.

estou indo por essa abordagem porque quero ter a possibilidade de ter Full mod support, sendo possível alguém se quiser re-escrever como a IA funciona.

mas essas engines são muito travadas…

era isso

Esteja Curioso!

Leben – Day 36

Estive descansando um pouco do Leben, mas hoje tive vontade de voltar desenvolver.

Hoje estive adicionando um processo de propagação de arbustos, encontrei vários erros no Core do Leben que estavam ignorando o timer dos eventos, depois de corrigir todos, agora sei que é mais difícil ter um memory-leak tão rápido, mas ainda há muito trabalho nessa parte.

Primeiro porque um objeto está sendo Spawnado em cima de outro, e não existe um limite de Arbustos na região, então eles se propagam indefinidamente e isso é um problema, ainda não pensei em como limitar, talvez por nutrientes no solo… mas ainda não sei.

Como sempre um gif pra mostrar o comportamento.

Leben – Day 35

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.

mas não consegui produzir muito.

então é isso :p

Leben – Day 34

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.

Bom é isso, sem prints ou gifs hoje.

That’s all Folks!

Leben – Day 33

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.

Leben – Day 32

Hoje não foi tão produtivo,

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.

Leben – Day 31

Bom…

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.

Encontrei esse post: Coffee Brain Studios – Finite State Machine vs Behaviour Tree, A True Story.

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.

continuarei pensando

inté.

Leben – Day 30

Nem sempre conseguirei adicionar imagens ou algo visível de como está andando o projeto.

hoje estou lendo alguns conteúdos de AI

O Livro que estou lendo como referência, pra não ter de reinventar a roda.

Inteligência artificial para jogos

outras referências: Wiki e Um Post do Chris Simpsom sobre como funciona AI

é redundante ler a mesma coisa, porém tem graus de complexidade onde eu posso escolher em qual deles me aprofundar e quando.

sou autodidata faz muito tempo e desta forma eu controlo quanto e como, fico mais inclinado á aprender.

Ainda acho que hoje crio um Arcabouço para apresentar algo, se ficar claro eu posto.

Leben – Day 29

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.

Leben – Day 28

ainda estou desenhando a parte de AI, e como vou sub-dividir as os pensamentos de npcs.

Por enquanto estou adicionando mais recursos para conseguir ter os recursos pra AI, um exemplo delas é o pathfinding:

TODO? bom.. as animações não estão correspondentes pro sentido que está o npc está caminhando.