I’ve got a particle system with a bunch of particles spawned in a cylinder which are attracted to a point attractor at the origin. This attractor has a very high strength (20,000) which pulls the particles in very quickly to the center.
In the editor, it looks great and is exactly what I want, but in a standalone build or a packaged build, the particles move much much slower. They still get attracted toward the center, but at about 1/10 the speed they were in the editor. There’s only ever ~150 particles at once and the game is running at my max frame rate the entire time–not to mention I’m running this on a brand new high-end gaming rig, so that surely can’t be the issue.
Naturally I tried messing with the scalability settings, but nothing changed. If I go into the particle system in cascade and increase the point attractor strength to 200,000 (10x what it was before), the particles move at the correct speed in the packaged build, but insanely fast in the editor. Am I missing something?
But it probably is the issue, many systems are dependent on framerate. So if you have beefy rig it may be too fast processing all.
To bring even fastest PC to its knees, place some fairly big mesh in level and lit it with 4-8 dynamic lights that move. You will simulate some slower PC this way.
That’s fascinating. I capped the FPS to match my display since it was running at ~850FPS and that seems to have solved the issue. What is so strange to me though is that having a higher FPS actually makes the particles slower. I would have imagined it to be the opposite–that running at 10x the refresh rate of my display would make the particles 10x faster. Thanks for your help!
Wild guess here. But this is idea how it all can happen. There is probably some calculation in how far particle should move between frames or how much that attractor force should be compensated for framerate. All this is targeted to be most precise around 60-120fps.
So for 60-120 fps it may be tuning in range of 0.01 to 0.04 of some value. But when you get to 500+ fps it may be on edge of float digit accuracy, so for eg it can be 0.000002 or 0.000003 and cannot be anything between. While one value is too slow other too fast. Also because gravity is GmM/r^2 this calculation probably is not linear. So something somewhere is on edge of float numbers accuracy.