2024-10-16 – Finalizados os Algoritmos de Neve e Chuva no meu Game Engine em C++…
Após finalmente terminar de corrigir os bugs restantes no meu Algoritmo de Neve e no de Chuva para o meu Game Engine em C++…
Tive de corrigir também o meu nível de testes de ambos, já com o novo sistema, acelerado, sem bugs, e com Multi-Threading funcional.
Claro que aqui o Multi-Threading não é tão útil, mas ajudou à melhoria de velocidade na mesma.
Primeiro mostro-vos o Algoritmo de Neve finalizado, e com uma música a lembrar o Natal, que está já perto, e porque Natal é quando o Homem quer:
Reparem que os bugs de flocos agarrados onde não deviam, entre outros, foram corrigidos.
Eles agarram-se às superfícies mas são deixados soltos em inversão de movimento vertical, e o sistema de calor está perfeito como podem ver, sendo que os flocos abaixo enviam o seu calor para os de cima, fazendo com que os de cima derretam primeiro, etc.
Notem como a neve vai derretendo, e obviamente quanto mais derretida, mais transparente e invisível fica aos nossos olhos:
Tudo está perfeito neste momento.
Talvez não 100% perfeito como o Game Engine original pois isto são apenas salas escondidas de testes, mas 99,99% perfeito, ou 100% perfeito na Neve parece-me.
Quanto às threads, uso o sistema referido no post anterior, com um número de threads próximas das dadas pelo processador, neste caso 6, com o nome de “TaskRunner[x]”:
A Neve requer muito mais processamento, pois tem muito mais mecanismos, como o do derreter dos flocos, os juntarem-se no ar e ao pousar, as suas rotações com o vento, o deslizar na face de sprites como o Sonic da imagem, etc, enquanto que a chuva simplesmente cai e faz splashes.
A Neve ainda não está a funcionar no Game Engine em termos de jogos em si, apenas funciona no nível de testes, abaixo posso mostrar é a Chuva a funcionar em níveis de teste.
Sou capaz de fazer a Neve funcionar no nível de testes (em pleno modo de jogo) pelo Natal, quem sabe, já que eu no Natal faço sempre coisas relacionadas com o tema! 🙂
De resto, quanto à chuva, ela na realidade não está diferente em relação ao que mostrei há dias, em funcionamento no próprio nível de testes (em modo de jogo):
Agora vejamos o incremento brutal na velocidade já com uns 50 FPS usando só 1/6 do CPU máximo que teria e com milhares de gotas de chuva no ecrã, num portátil barato com 3/4 anos:
Os FPS podem chegar aos 50 no de Chuva e uns 10 no da neve (com base no 1/6 máximo de CPU que lhe atribuí), e usando no total como podem ver o equivalente a apenas um 1 core a 1 core e meio dos 8 que tenho, o que significa que poderia ter 5 a 8 vezes mais flocos de neve ou gotas de chuva no ecrã mantendo a mesma velocidade, ou subindo a velocidade para 6 vezes mais neste portátil não muito potente, e notem que tenho milhares delas, apesar de talvez não parecer.
Relembrando que isto se passa num portátil barato com 3 anos e meio e apenas um I5, com máquina a gravar o vídeo entre outros consumos de CPU.
Sim, posso ter muito mais flocos de neve e/ou gotas de chuva e num jogo, sem problemas.
Tudo isto com cada gota de chuva a detectar colisões em tempo real com outros objectos, como neste caso o Sonic, com os milhares de splashes também, etc.
Ou no caso dos flocos de neve, não só a detecção de colisões, como aglomeramento, derreter, passagem de calor entre eles, agarrarem-se às superfíceis e soltarem-se, serem levados pelo vento, deslizarem pelos lados dos sprites, etc!
E já que os algoritmos de neve e chuva estão terminados, bem como os seus níveis de teste, posso dar como encerrado estes dois capítulos sobre Chuva, Neve, e Multi-Threading em ambos, bem como aceleração e correcção de bugs.
Agora vou ter algumas semanas com mais tempo livre, mas vou ter de mexer em coisas que não são muito visíveis, como a separação da lógica core do Game Engine da usada por variantes como Plataformas ou Shooters, bem como adaptá-lo para ser usado em contexto de Formação, etc (ou facilitar o seu uso na criação de videojogos).
Mais tarde trago mais notícias, hasta!
2024-10-16.
Partilhado no mesmo dia no meu LinkedIn, em:
Próximo post associado ao meu Game Engine, associado ao meu sistema de luzes e sombras e à época festiva do Halloween:
Último post (também associado ao meu Game Engine e aos algoritmos de Chuva):
Último post associado ao meu nível de testes de Chuva:
Último post meu associado ao algoritmo de Neve: