2024-08-05 – Melhoria nos Relâmpagos e Chuva e Multi-Threading – de volta ao meu Game Engine em C++…
Um dos mundos mágicos de testes escondidos no meu Game Engine, para mostrar uma melhoria no meu sistema de relâmpagos e trovões (sim, estou de volta ao Game Engine!).
Isto porque eu há meses não mexia no meu Game Engine, e tinha saudades, e decidi melhorar os meus sistemas de rendering (explico abaixo).
E ao fazê-lo, tive de fazer update ao sistema de relâmpagos e vi que estava horrível, pois ele antes:
- Não era assíncrono, o que significa que a chuva parava para ele desenhar o ecrã;
- Só tinha as luzes nos céus porque os relâmpagos eram horríveis;
Agora se repararem, os relâmpagos já são desenhados nos céus (ainda não está um sistema perfeito mas está melhorado):
E ao serem desenhados, a chuva não pára, ou seja, são desenhados de forma assíncrona (multi-threading).
E de cada vez, varia entre 1 a 3 relâmpagos por “ataque”, para aumentar o dinamismo e a violência dos mesmos.
E só depois deles é que surge o céu em clarão, mas que pode surgir sem relâmpagos visuais também porque podem acontecer noutros pontos fora do alcance da câmera.
E claro, os trovões que acompanham os relâmpagos!
Por isso, temos agora chuva que ocorre em tempo real, sem paralizar devido ao algoritmo que desenha os relâmpagos (que é bem mais complexo e CPU intensive do que parece), que corre de forma assíncrona, e temos um número variável de relâmpagos a ocorrer com os flashes habituais nos céus, que podem ocorrer sem relâmpagos também, e junto com trovões. 🙂
Só depois disto é que retomo o sistema de renderização.
O que se passa nisso é que eu para desenvolver o meu Game Engine mais rápido, usei por vezes containers STL que são algo lentos, e está na altura de os trocar pelos meus próprios sistemas feitos à pata e que tornarão o Game Engine ainda mais rápido.
Ao mesmo tempo, vou recriar os meus próprios sistemas de rendering, que tratam das imagens, e mistura de cores no ecrã, etc, por outros mais rápidos, pois a optimização estava feita mas usando ainda containers STL, ou mecanismos ainda não muito aperfeiçoados por mim.
Mas eu quero criar na minha DML (Direct Media Layer, a minha libraria de gráficos e hardware), coisas o mais rápidas possível.
Isso farei mais tarde.
Hoje diverti-me a melhorar o Game Engine, pois tenho andado super ocupado com trabalho, e continuarei por mais uma semana, e para desanuviar, bem como para me relembrar do Game Engine, decidi fazer isto.
Agora sinto-me melhor, e mais, recordei melhor o Game Engine.
É que fazer trabalho de Software Architect, a gerir um Game Engine de centenas de ficheiros com centenas de milhares de linhas de código, que estão todas na minha cabeça, sem fluxogramas, sem diagramas ou mapas, sem nada, é um trabalho em que não basta ter-se o tipo de memória de autista que tenho.
É preciso mexer nele de tempos a tempos para que eu me mantenha informado sobre como ele funciona e não me esqueça dele.
É por isso também que eu tento não ficar muito tempo num projecto e afastado do outro, para os manter na minha cabeça.
Se um dia tiver amnésia, vai tudo por água abaixo! 🙂
Noto alguns bugs a nível de renderização com alguns píxeis a negro que terei de investigar mais tarde.
De qualquer das formas vou voltar ao trabalho, e só retomo o Game Engine dentro de 1 ou 2 semanas, isto foi só para matar saudades e refrescar a memória.
Hasta! 🙂
2024-08-05.
Partilhado no mesmo dia no meu LinkedIn, em:
Post em que finalizei já sem bugs o nível de testes da Chuva:
Post seguinte associado ao meu Algoritmo de Chuva:
Post seguinte associado ao meu Game Engine:
Post seguinte, sobre o meu mosaico de “Quem Sou Eu?”:
Último post associado ao meu Game Engine:
Post anterior (associado a simulações de Galáxias):
Último post associado a este tema da Chuva e Relâmpagos, de 2022: