Bonjour à vous,
J’avais envie de vous communiquer le travail d’un dev d’extension (qui n’est pas moi) qui révolutionne un peu la 3D dans GDevelop.
Pourquoi suis-je allé chercher une extension pour gagner en performances ?
Dans le jeu que je développe actuellement (je vais vous joindre quelques images), je me suis retrouvé bloqué par le mur du lag.
Avec un groupe d’objets ayant environ 2 000 occurrences présentes dans la scène, je me retrouvais à avoir de sérieuses chutes d’FPS, disons 40/50 FPS avec ma config.
Autant dire qu’avec un PC beaucoup moins performant, c’était juste injouable. Chose que j’ai testée : j’ai rouvert un vieux PC qui a +10 ans, que j’ai dû forcer à passer sous Windows 11 via une clé Rufus, c’est pour dire.
Je vous joins la config en image jointe. J’étais à 10 images par seconde.
Je me suis alors dit : « Ça vient peut-être du PC, ou alors c’est tout simplement déjà un trop “gros jeu”. »
J’ai alors lancé un jeu Roblox qui me semblait « plus gros » que mon jeu actuel et là, le choc : j’avais 60 FPS sur ce PC tout naze.
J’interroge mon meilleur ami, Claude AI, pour me donner des pistes d’optimisation. Il me donne pas mal d’idées et me parle des draw calls (et de Three.js GPU).
GDevelop n’étant pas compatible avec Three.js GPU, j’ai dû me pencher sur la fusion de mesh de mes parterres de fleurs.
Voici un exemple : chaque parterre était un seul objet 3D, ce qui en fait, sur cette image, environ 1 500 objets.
J’ai donc fusionné le mesh en un seul objet 3D, ce qui ferait un seul draw call au lieu de 1 500.
Le problème
Le problème, c’est que GD ne permet pas d’agir sur un GLB (mesh d’un modèle 3D).
J’ai alors trouvé l’extension GDBench_Bridge, faite par Jiminus, qui permet d’agir sur :
-
les groupes
-
les locators
-
les meshes
Ainsi, au lieu de fonctionner en objets/groupes d’objets dans GD, je fonctionne uniquement avec des variables d’objet.
(C’est moins sexy côté dev, mais côté performances, c’est incroyable.)
Voici un exemple de construction d’un tableau de variables basé sur le GLB, fait sur Blockbench :
Et côté performances ?
Et bah, là, c’est assez incroyable.
Je suis passé, quoi qu’il arrive, à 60 FPS sur mon gros PC, mais aussi sur mon petit PC. Avec sa config très naze, je tourne a 30 FPS.
Remerciements
Merci à Jiminus d’avoir créé cette extension. Elle est bien plus complète que ce que j’ai indiqué ici.
Je sais qu’il travaille sur d’autres fonctionnalités, comme rendre une vitre ou de l’eau transparentes à la lumière. Ce qui veut dire qu’une fenêtre, dans un seul et même modèle 3D, pourrait laisser passer la lumière.
Vous pouvez retrouver son extension ici : https://jiminus-games.itch.io/gdbench-bridge
J’attends avec impatience le passage de GD à Three.js GPU pour pouvoir explorer plus loin les modèles 3D et aussi aller encore plus loin côté performances.




