imo your project is so big that could be anything.
to my little experience…i would look at your object and layers, (ligh,glows,shadows fx).
I’ve found (some of them) to be very expensive in performance.
But it may be not your case
Thats the thing tho… my project isnt that big, its just a basic rpg at this point with 6 tiny levels, 1 hub and 1 boss room… is that really all GDevelop can handle?
You telling me in all these years no one really made a game bigger then my tiny rpg?
Thats kinda silly… AND BESIDES THE POINT.
DA POINT: The performance is just random, yesterday afternoon when i made the performance update video, you can see the FPS being always around 60 and never reaching 11.00ms, staying between 8.50ms and 10.50ms… THIS MORNING with no change what so ever… its around the 14.00ms to 16.00ms… why? just because, THATS THE POINT.
Its not my project, its not my machine, its a flaw in the engine.
It just seems to me that people dont really make complete projects and then check their performance to see if its good.
Theres no reason for my fps to be low, something that the engine proves by some times, when it feels like, actually running my project buttery smooth.
I understand what @MagicBiscuit says. It’s not about simple optimization, it’s about a bit random performance. I agree 100% that the majority of those who make games do not usually finish them or they don’t make “big” games, so, they don’t face this problems, which is why they are not interested in these kind of topics. This happened to me many times and I have changed entire codes, having to redo complex mechanics just because I thought they were poorly optimized and they weren’t; the drawback was this random performance.
With these situations you can demonstrate. I was about to redo important things that would require a lot of work. Just by waiting a few days it started working as before (without any code modification or anything). And this happened for both previews and an Android build.
Exactly!
The performance just goes all over the place with no reason, then you think its because of your code, you redo a bunch of work and nothing, then out of no where it starts working well again, then back to poorly, and so on…
Im guessing more people dont have this issue since their projects are so small they never really reach the 10.00+ms where the fps starts taking a hit.
It also seems like older version of GDevelop run better… so… My second guess is that its something they did to the engine to support 3D Games, ruining what they were truely good at…
I really hope they dont keep going down this route and ignore this kind of stuff…
I love GDevelop to bits, thats why im so invested in this, it breaks my heart that something like this still exists…
I really wish i could dig more and just point at it and go “There it is! You can fix it now”, but no real testing i can do will have that result.
Iv done so many tests and all i can tell is that performance is unstable, its never the same, some times its good, some times its bad, something as small as alt tabbing out of the game can send it from good to bad.
Memory usage is also all over, but has little to nothing to do with performance, iv had good and bad performance with the exact same memory usage frrom GDevelop, so its not like its a memory leak or something.
It just feels like sometimes it overloads on start up or something and then stays that way… or it starts well, but if you do anything like tabbing out it will send it downhill…
I really dont know man, i still have no clue about the “missing” stuff from the “events” on the profiler, the “ms” thats not from any event group that a huge chunk of performance and i have no clue where from since all my events are under one big event, so it should be easy to spot…
Hopefully some of this will get to the devs and theyll spot something we didnt.
I made this video for something else, but since its a prime example of random performance for no reason what so ever, im adding it here…
It jumps from go to bad for no reason, just tabbing out or restarting the preview either makes performance go stellar and make everything buttery smooth or breaks it… the heck man
Probably in wrong but that laser event Is repeated each frame (while the character Is close)because the laser hit .and probably the sound stack
Try the collision debug action to see if It Is the case. Be wary that It Will slow down a lot the game
The RayCast does trigger every frame when the lava tile is on screen, but even when theres a bunch of them going it dosent affect performance.
The issue here is that, its NOT on screen and its NOT triggering…
The big performance increase comes from the Stop the Sound, even if it only happens once.
I made sure that the RayCasts only happened when needed, and their performance is insignificant, i know this because iv checked performance with and without the event group disabled to see their impact.
The difference was peanuts, the big one is the Stop the Sound…
This was just an experiment, i was seeing if stopping a sound from playing was better on performance then letting it loop in the back, and not only does it seem like its not, but also, that event is crazy on performance hugging.
Since this video has some more performance testing and more proof of just random performance, going from struggleing to straight up perfect FPS and then back down to crappy fps… im posting it here as well
I’ve had to remake so many projects because once they got too big, performance would dip, this is my fourth ambitious project and I’ve made note to optimise it every step of the way, and it does perform better when it performs well, but when it doesn’t it just seems like there are certain areas gdevelop hates no matter what I do, like disabling lighting, removing rotated objects, nothing works other than just reverting.
I feel you…
I dont even have that much on the project, its stilly…
I finished sorting my events last night, their at a point id call them a work of art, everything is tidy up, nothing is running that shouldnt, i check for every action, everythin is as optimized as possible…
NO CHANGE.
But you randomly alt tab to check something and then come back and now its running at twice the performance and sily smooth frames… because…?
Even tho all the evidence was that this was not a user issue, that this was not an Event problem, i still went under the assumption that it could be me.
So i tested and tested and rearranged events, did all the optimization, squeezed all i could and nothing for my work.
There plenty of videos showing the random performance in various situations and i even show the task manager in some to be perfectly clear and theres no reason for bad performance.
THIS IS AN ENGINE ISSUE 100%!
Please show me the facts to change my mind, untill then, this is a limitation of GDevelop.
Whats pissing me off is that it seems to be a recent thing, people seem to have performance dipping on the most recent versions of the engine, so im guessing its something they messed up while updating to fit 3D support or something.
There can be many reasons:
- Browsers JS engines optimize execution dynamically by better compiling the code.
- CPU and GPU can boost their clock when they are cool.
- Garbage collector gives a bit of randomness
The task manager is not a tool to measure performance, it won’t give you any good insight. GDevelop profiler is useful but a bit limited you should also use Chrome’s profiler by pressing Ctrl + Shift + I in the preview window.
It allows to:
- sort by what take the most of the time (it’s harder to guess what part of your events take times, but you can spot extensions)
- zoom on a frame to see every step
- you get the actual memory usage in a plot (JS Heap)
- and much more
I really dont think its a user issue from what iv tested.
Its like i asked you before, i know your busy and all, but can i send you my project, run it a couple times, if theres nothing wrong with performance, then its a me issue, if theres something about it, then you already have something to work with to find it and fix it.
I got rid of all troublesome extensions, im only using Smooth Camera, Gamepad, Parallax and… i think thats it, for community stuff anyways.
Then im using Tween and Platformer + Platform.
Thats all.
Recently i started doing some videos on a new project, and off screen iv been testing the performance on a completly fresh project, its the same thing, exactly the same issue, from the very start.
So could you have a look?
I really mean it when i say im blind, its hard for me to do some of this stuff, im sure ill miss something.
I think i got something!
Theres something funky going on with the window Resolution.
Changing the window size has a big impact on performance and can even fix the lag issue some times!
-
My game is running at 1280x720p.
-
I have the resolution locked, so that even when you resize the window, you just get some black bars on the side sort of thing.
-
You can still change the size of the game, you just dont see more than what i want you to.
-
Just out of curiosity, when the game was running really bad, at around 14.50ms, i cliked on the “maximize” window, and… Bang! 60FPS.
-
I checked the profiler, now it was at 6.00ms.
-
I cliked the “maximize” button again to bring it to the original size, and… Instantly back to bad FPS, ran the profiler, and… back to 14.50ms.
-
I went back and forward, testing each time, and EXACT SAME RESULT.
-
Then it got weird, it worked less often and then just started working at perfect 60FPS all the time… untill it decides to break again i cant do more testing.
-
I did do more regular performance tests… AND, making the window bigger, even tho your not changing the actual field of view or anything, increases the performance drasticly!
-
Theres something funky goinig on with window size and resolution.
-
For clrarification, so people dont jump so silly conclusions… Im NOT changing how much you can see, im NOT giving it more or less to render, that is NOT the issue.
-
It feels like something funky goes on when the window is a certain size and then it doubles the game, like it makes a double of the game or something and shoots up your “ms”.
-
Its exactly what iv been describing all this time, it feels like the game is running twice, hence the increase in performance to almost twice as much!
New here, and I have something interesting to add to this thread, I am encountering a strange issue similar to what the OP is talking about. Specifically I have an External event that handles the UI elements of the game i’m working on, and depending on what tab i’m on when I boot up a preview, I’ll get different FPS results. The difference being about 30 FPS, and 50 FPS, not quite a 2x difference, but close enough. So on top of possible weird behavior with screen resolution, I think the OP might be on to something with the engine running more than one instance of the game for some reason, not sure though.
Also on a side note, for some reason, when I preview the game on different tabs, the better performing one seems to behave like some of the events I have programed are disabled despite it not being the case (Like the UI layer doesn’t show up and some of the “Double Jump” and “Dash” logic not working like it’s suppose to)