ID:2344213
 
I'm not sure where to put this, but I've noticed a few problems with FPS in BYOND that have been driving me crazy. There is too many different issues for one bug report but not enough information on each issue for a bug report either, but I do believe these to be bugs with BYOND.

All of these issues have been tested with the latest stable version (511.1385) and the latest beta version (512.1406) on Windows 7.

My first observation is that BYOND does not run games at a stable FPS. There is always some amount of stuttering.
I've tried my own projects, blank projects specifically made for testing this out and other games on BYOND. All of them have noticeable stuttering. Strangely the stuttering only happens during movement of the clients view. Icon animations, the animate proc and other stuff moving around does not stutter, but as soon as the view moves (such as from a player moving), stuttering happens.
I do not believe view size or how much stuff is in view matters. The stuttering happens on a blank map with a view size of 6 and on a dense map with a view size of 30 with the same frequency.

My second observation is that games being hosted using Dream Daemon suffer from this stuttering much worse than normal. Exact same problem, just more frequent and more noticeable. I'm talking there can be as much as a half second where the games screen just freezes.
https://gfycat.com/MessyBrownAttwatersprairiechicken
It's kind of hard to see, but this video highlights the problem (though it can be so much worse). Games stuttering this badly are basically unplayable. Unless it's a problem with my computer I'm not sure how this has lasted so long without lots of people complaining about it.

My third observation is that client.fps does absolutely nothing. I mean this in a literal sense. Setting it to 0, 1, 10, 100 or even 1000 does nothing, the game runs exactly the same every single time. I've tested movement, icon animations with various delays and the animate proc. There is absolutely no difference I could detect.

Also for fun. If you set client.fps to a value much higher than world.fps BYONDs default movement system experiences massive input delay. Press down on an arrow key and you'll start moving a second or two later, and when you release it you'll stop moving a second or two later.

I'll do more testing, but these things are driving me insane and there appears to be no way to fix them. If you want proper bug reports I'll go and do it but these problems are seriously hampering my ability to make something I'd want to let anyone outside of BYOND play and my desire to even continue using BYOND for this project.

Has anyone else noticed any problems like this, or is it just me experiencing them?
client.fps has always baffled me.
client.fps by design only works at values higher than world.fps. If you have world.fps = 30 (or lower) and client.fps = 60, you should notice a difference compared to both being 30.

BYOND's default movement input handling is suck. Just use a loop and key-down/up button tracking. It's not just for pixel movement, it's way smoother and more responsive than the built-in key-rep, and you get two-button diagonal movement too.

Also, tile gliding doesn't play nice with client.fps due to this ongoing issue:
http://www.byond.com/forum/?post=2241289

Someone once told me that having OBS open and showing the game screen in the preview (or just recording the game) causes the framerate to stabilize. No idea what's going on, but it seems to happen on my PC too.

BYOND can't have smooth framerates because it renders on fixed intervals that tend to not match your monitor's refresh rate (could maybe be helped with Flicks?), instead of just rendering as frequently as possible/allowed, separate from the tick rate (which I try to emulate by setting client.fps to 100 even though my monitor's only 60Hz).

And yeah, playing through Dream Daemon always has more stutter than only through Dream Seeker.
I've done some more testing, using FRAPS to check FPS. This is a measure of how many frames are being drawn per second to my monitor.

I honestly have no idea what to make of the results. One thing I have found out those is there is absolutely no way to directly control FPS in BYOND. You have at best guess work because the actual FPS games run at isn't particularly related to either client or world FPS.
For example
5 world fps and 60 client fps results in about 30 actual FPS.
20 world fps and 60 client fps is about 44 fps.
30 world fps and 60 client fps is about 33 fps.
60 for both is about 30 fps.

However, this only applies to movement. If I use the animate proc then the game will always run at whatever the higher of world/client fps is set to. (Unless I'm using animate and moving, then it goes back to being all over the place).

I've also tested how stable FPS is. It's definitely most stable when the view is not moving. It's not perfect but it is hovering around 29-31.
As soon as I begin moving around, FPS becomes clearly unstable with dips to the low 20s (and occasionally dips to 0).

Hosting a game using Dream Daemon makes FPS noticeably worse.
Idling FPS drops to somewhere around 26-30. Moving results in FPS in the range of 22-31 but there is no period where it remains consistent, it jumps up and down none stop instead of just stuttering every few seconds.

This is all just cockamamie.
client/world fps needs to be renamed because it's obviously causing some confusion and is not an actual way of controlling how many frames are drawn to a screen per second.

As for BYONDs actual FPS problems, they need fixing. As This is a very noticeable and very serious problem. As it stands right now, I see no reason to even use BYOND if it cannot do something as basic as output a constant FPS.
I don't want to say stop using BYOND to anyone, but it's biggest and only advantage for me was inbuilt networking and you can't even take advantage of this anymore. Without that I'm not sure what BYOD even has to offer (yes, that was on purpose).

I've been sitting back, hoping this was an obvious issue that would get fixed, but it hasn't. I don't want to stop using BYOND and move on to something else, but if this problem isn't fixed I'm left with no other choice.
In response to The Magic Man
The fps issues has been a thing for many many years, ever since client FPS was introduced you could never get stable FPS no matter what, which in fact is what killed most projects. My issue with your statment is that this is very well known among the forums that FPS is actually really bad when a game is hosted, and there have been alot of posts about "Teams making statements of leaving all over place", i mean you should have seen this one coming. The FPS issues i don't see it ever being fixed because how tightly and closed everything is when it comes to how byond handles networks, byond pager and website.

Also if you can check your messages i've sent you something about this. Try it aswell see if you get same results.
BYOND's client-side map rendering is horrendous.
Yep, BYOND's FPS has always been pretty terrible and unless some major TLC is given in that area then it's a really bad idea to use this engine to make games.

This is taken with the server CPU at 10% or below:

https://puu.sh/zkFno/7ca42f612a.gif

You can see the massive pauses when the engine struggles to render the map.