SolDirix wrote:
That's a lot of very good suggestions. There is one thing I haven't brought up however, which was the fear that someone could play the fixed-timestep version of the game at a slightly lower fps (think 55-59) and have an easier time than other players since the game runs slower. Because of this, I find this fix to be absolutely necessary.
That's a reasonable concern for a fixed step game - I've seen some of the Touhou titles include an 'average game speed' percent column in their high score tables as a workaround to delegitimize scores earned under significantly slower / easier conditions.
Though I'd question where such 55-59FPS users would be coming from, since a 2D game like this should be able to pull a solid 60 vsynced on an iGPU (with intermittent one-frame dips to 59 caused by the imperfections endemic to monitor vsync timing), and thus benefit from the slowdown assumptions that fixed-step lets you make. I guess UE does have its share of overhead and weird timing stuff that might throw a spanner in the works there, but it strikes me as odd that you'd see those perf numbers without some significant bottleneck.
SolDirix wrote:
Adding it has been very tedious, but even with the full game things are already stabilizing. I'm sorry for not taking your advice, but I still managed to do what marketing I had to, and I already have a backup of the fixed timestep version just in case. I still have plenty of time before I send the final builds to Steam.
Don't be - it's no skin off my back, so sharing knowledge is good enough

SolDirix wrote:
codestuff
Ayup, that's a frame accumulator alright. I guess this occurs downstream of one of the built-in pre / during / post physics tick entrypoints, and FixedUpdate is your top-level game logic tick function?
And goodness, I don't envy having to use C++! Definitely the right way to go for any proper handcrafted UE project, but the engine's rigid structure was always such a pain to wrangle that most of my aggressively-deadlined professional work ended up living inside it as blueprints.
SolDirix wrote:
I enabled UE4's smooth framerate with a range between 15 and 60, with ideal minimum at 30. I'm assuming it automatically slows the game down in case of a spiral of death when it goes below 15.
I don't think anyone beyond the original author truly knows what the smooth framerate thing does under the hood, poorly-documented as it is.
After hours of research in various UE forums both official and not, and even their (useless) paid dev support hub, the only solid conclusions I could draw were:
- It tries to smooth out the average framerate by adding variable delay to upcoming frames based on the current level of GPU performance
- Is not able to make any guarantees about minimum frame rate if the underlying code can't execute in time
- And tends to get turned off in the INI by savvy users who tweak GPU control panel settings and employ external frame-time control tools like RivaTuner.
So I always made a point of turning it off or exposing it as a menu option - having the engine arbitrarily drag down already-good frames to make them better fit the average hurts more than it helps for games designed to consistently hit their framerate target. Perhaps it has some use if you're building a high-spec game for low-spec consoles and want to hide bad framepacing / framerate that you know will happen in certain intense scenes, but I have no time for that kind of eyes-bigger-than-belly game development

That, and my view has always been that the graphics driver should be authoritative over GPU timing, since that's where the rubber meets the road for VSync / GSync / FreeSync / etc. Less stuff between your game and the driver means more chance of it working corrently when new technology inevitably gets introduced later down the line.