2022-06-10 – Game Engine super-optimizado com C++, 1000 FPS num velhinho portátil I5, mesmo usando RGBA 640×480 com fogo e água real-time, milhares de objectos no ecrã, etc…
Estes 1000 FPS seriam muitos mais se cortasse algumas coisas.
Podem ver aqui a performance do meu game engine desenvolvido do zero em C++, e super-optimizado por mim, na vertente do Shooter de testes que tenho, depois o Shooter sem aceleração (só 60 FPS ou 90 FPS não lembro), e depois o meu platformer de testes, que apesar de mostrar 900 FPS (que é o máximo que daria com tanto peso), está a correr talvez só em 400 FPS.
Mesmo assim dá para ver o poder dele:
Mas é bom saber que é 640×40 com 16 milhões de cores e transparências (RGBA), fogo gerado em tempo real, com como as gotas de água, e colisões em tempo real píxel-a-píxel perfeitas, efeitos parallax no background, várias layers por cima, etc, etc.
E com uns bons milhares de objectos no ecrã em tempo real.
Sem aceleradoras, ocupando apenas parte do CPU, e se fosse 320×200 ainda seria mais, como é óbvio.
Isto num portátil I5 de 8 GB de memória, e sem usar a totalidade dos cores.
Eu costumo comprar portáteis assim leves, que me forçam a optimizar o código o mais possível.
Na realidade costumo fazer exemplos a 60 FPS e com chuva de 10.000 gotas no ecrã para ficar super pesado, e pode parecer sluggish, mas aqui mostro a optimização dele.
Lembrem-se que isto é C++, é a mais poderosa, mas por outro lado lembrem-se que um mau programador pode criar um programa tão mal feito em C++ que pode ficar super lento.
Ou seja, não basta ser C++, há que saber fazer as coisas. 😛
Bem, um dia partilho coisas novas, decidi partilhar isto porque estava a mostrar o poder disto a um amigo, e decidi meter na Internet.
Não tenho tido tempo para nada hoje em dia.
Assim comemorei o dia de Portugal com o meu game engine. 🙂
2022-06-10.
Partilhado no LinkedIn em 2022-06-10, em https://www.linkedin.com/posts/goncalopt_o-meu-super-optimizado-game-engine-a-correr-activity-6941139045427113984-U_DZ/?utm_source=linkedin_share&utm_medium=member_desktop_web:
«O meu super-optimizado game engine, a correr num portátil I5 8GB memória sem aceleradora, usando só um core. Espreitem o vídeo inteiro com platformer e shooter que aqui neste gif vê-se mal a velocidade disto, o vídeo no site tem 3 partes (link abaixo), ele tem stats de objectos no ecrã, FPS, etc.
E com 640×480 16 milhões (RGBA, com transparências), e com geração de fogo em tempo real, milhares de gotas de água em tempo real (ver os stats), muitos inimigos, colisão entre tudo calculada a nível de píxel, muitas layers como parallaxes, etc, e muitas outras coisas, tudo isto a correr em cada frame, totalizando uns 900/1000 FPS, mas na realidade aqui meti só a uns 300 FPS no platformer e uns 400 ou 500 no shooter, para verem alguma coisa, senão ficaria demasiado rápido.
Isto é feito na linguagem mais poderosa, C++, mas lembrem-se que há programadores tão maus que geram código que corre à mesma velocidade que algo em Python, linguagem 20 a 400 vezes mais lenta.
Ou seja, não basta usar C++, há que saber usá-lo. 😛
Mas isto é mais poderoso do que imaginam, só tirei as gostas de chuva, que costumo ter umas 10.000 no ecrã, porque os 2000 ou 3000 objectos que tenho aliados às 10.000 gotas de chuva, tornariam isto menos rápido.
Mas pronto, é o meu super-optimizado game engine.
Como é 10 de Junho, é para comemorar. 😛
Como vocês vêem os meus exemplos a 60 FPS, ainda podem pensar que é muito lento, assim vêem que não.
Tudo num portátil I5 de só 8 GB sem aceleradora, e usando só um core, para terem ideia do quão optimizado eu meti o código.
Não tenho tido tempo para nada, um dia trarei novidades.
2022-06-10.»