Desenvolvimento de JogosDesign 6 Game EngineEstratégiaPlatformersRetro GamingTop 10 Game EngineTop Game EngineVideo Jogos

2025-02-27 – Redução da memória de 200 MB para 61 MB no nível mais pesado de testes, no meu Game Engine em C++…

Mais um marco na optimização do meu Game Engine.

Reduzido o nível mais pesado de 205 MB de memória para 61 MB de memória, e mantendo perto de 450 a 500 FPS, usando apenas metade de uma das minhas 8 threads, uns 3% a 6% de todo o potencial de CPU que tenho, num portátil já com 4 anos e na altura barato (600€) (na imagem tem menos FPS porque tem o OBS a gravar o vídeo e o CPU está sobreaquecido).

Ou seja, atingiria se fosse usado totalmente o multi-threading uns até 10.000 FPS nesta máquina ou muito mais noutras mais modernas.

E funcionaria em máquinas com menos de 1 Mhz de velocidade, com estes FPS, e com menos de 100 Mb de memória, máquinas de há 20 anos atrás.

Contrastem isto com motores como Unity ou Unreal em que se criam um botão apenas, são centenas de MB de memória ocupados e binários nessa ordem também:

2025-02-27 – Redução da memória de 200 MB para 61 MB no nível mais pesado de testes, no meu Game Engine em C++…

Claro que esses motores fazem muito mais coisas mas refiro isto para perceberem porque é que desenvolvo o meu, feito do zero, ao meu gosto, com apenas o que preciso. 🙂

Isto com 20095 tiles de 3232 píxeis cada, num total de 19.456.000 de píxeis de nível de jogo, com um total de 78 MB (RGBA 16 milhões de cores), ecrã de 1920×960, com mais de 100 inimigos no ecrã, e dezenas de milhares de objectos a serem desenhados em tempo real, com geração em tempo real de chuva e fogo e outros eventos (não são sprites), e com colisão píxel a píxel em todo o mapa de jogo mesmo que não esteja visível.

Tudo isto, com 3% a 6% do CPU de uma máquina velha barata com 4 anos e cujo CPU já está a cortar FPS por ter sobreaquecimento.

Claro que nunca tirarei 100% proveito de todas as threads, mas é para terem ideia do quão pouco isto usa do CPU e da memória (tipo 2,5% da memória).

Podem ver isto no topo, e lembrem-se que o top mostra 50% mas é 50% de uma das 8 threads, o que significa uns 6% na realidade.

Isto significa também que um jogo feito com ele que mostre apenas um único ecrã, ou tenha níveis mais pequenos, ocupará muito menos memória e será muito mais rápido.

E não preciso referir que posso meter isto a funcionar em máquinas dos anos 90 facilmente se baixar a resolução para 320×200 com menos cores, e cortando certas coisas muito “pesadas” que uso por estarmos no século 21. 😉

Escusado será dizer que ainda falta a 3ª fase da optimização, a primeira foi reduzir de 2 GB para 200 MB, agora para 64 MB, e depois será ainda mais difícil mas vou tentar atingir os 40 MB, e só depois retomarei a parte criativa e deixarei a parte de engenharia/arquitectura de lado.

Mais notícias em breve!

Hasta.

2025-02-27.

Publicado no mesmo dia no meu LinkedIn, em:

https://www.linkedin.com/posts/goncalopt_programming-cpp-gameengine-activity-7300999318709137408-6VUK?utm_source=share&utm_medium=member_desktop&rcm=ACoAABG7H2ABop3FluPLkJx4wf0Fa6gMHIcSrfI

Post seguinte associado ao meu Game Engine:

(A ser colocado mais tarde).

Post anterior associado ao meu Game Engine e também sobre optimizações:

2025-02-09 – O meu Game Engine em C++ a ocupar apenas 27 MB de memória e com binários de 300K…

Post anterior associado ao meu Game Engine (sobre um curioso bug):

2025-02-13 – Exemplo de pequeno bug no meu Game-Engine em C++ que faria inimigos voar com as armas de raios…

2025-02-27 - Redução da memória de 200 MB para 61 MB no nível mais pesado de testes, no meu Game Engine em C++…
2025-02-27 – Redução da memória de 200 MB para 61 MB no nível mais pesado de testes, no meu Game Engine em C++…

Leave a Reply

Your email address will not be published. Required fields are marked *

RSS
Follow by Email
LinkedIn
LinkedIn
Share
URL has been copied successfully!