A solution to FPS 'fairness'?


#1

Regarding the dicussion on Takyon’s recent agtricks.bsp run:

After these comments, me, exec, quadrazid and Takyon (aswell as some others) discussed it in the skype chat and we all agreed that there needs to be some sort of solution to this.

So what exactly am I talking about?

As most, if not all of you will know, the higher the fps_max value is in GoldSRC, the more acceleration you can get whilst bunnyhopping (up to 1000fps). So what’s the problem with this? Well, this means that if two players are on a similar skill level to eachother and one has a low-end machine and the other a high-end machine, they simply cannot compete due to one player being able to reach a much higher FPS than the other.

For competitive purposes, this is obviously not fair and currently it basically means that speedruns using scripts (generally a cap of 100 is used for scriptless runs to replicate the effect of developer 0/fps_override 0) are ‘pay2win’.

More info on the effects of FPS | FPS Comparison Sheet (by Arianon)

No matter how small the gap becomes the higher up the chart you go, **it is a fact that you are getting a competitive edge over someone by being able to use a higher FPS than them. **This applies to segment competition + jump map competition as well as re-runs of games/mods.

The current fps_physics_fix command included in RCD is not a solution, as this only fixes the slow-mo effect caused by unstable FPS, so even if you set your fps_max to 1000, you’re not ever going to reach that if you can’t ever reach it in the first place.

What are your thoughts? This is obviously a pretty important matter and so everyone’s input is valued.


#2
I don't see any reason why Takyon should be slowing himself down by using 250fps, but I DO agree that it's pretty unfair in competition.

This doesn’t mean that his run should be considered as cheated/not legit. He didn’t use any cheats and just pushed the game engine to the limits/exploited it which is pretty much the whole point in speedrunning.

We just have to accept the fact that HL1 speedrunning scene is evolving to a whole new level, where people are forced to use 1000fps in order to compete. People with low-end machines are left out as they can’t run that high framerate, and for now I’m not really sure what to do in a situation like this.

Anyway, limiting FPS should not be the solution as this is speedrunning and as long as higher fps makes you go faster, it shouldn’t be rejected. Let’s hope we can come up with some reasonable solution in order to make competition available for everyone.

e: I can’t even reach 250fps myself in most of places throughout the game, I’m just trying to be reasonable here without having to hurt one side or another.


My thoughts expressed in the comments section on the video mentioned above. Included here for context/archive purposes.

While the higher FPS usage is pretty unfair in competitive speedrunning, it would also be sad to see the FPS manipulation go, it’s a pretty sweet thing as long as it doesnt enter competitive scene.

Right now I don’t see any other way to solve it so I guess it would be best to introduce the FPS cap for segmented/scripted speedruns if we don’t want to go too far from the original engine/game “features”. I’d say keep the limit on 250fps and only have higher values in order to do some certain tricks that depend on high fps (such as Infinite Health Door).

Actually, there’s a similar issue in GTA speedrunning scene too. All of the runners run with the Frame Limiter on (limits fps to 30), thought not because it’d be unfair to others (well it does have some advantages, too), but to make the game more playable/less broken. Not going to go into details here, if you really want to know, read this: http://lerppu.net/framelimiter.txt

So yeah, FPS manipulation is really cool and I didn’t really have any problems with it but it certainly requires to take some action in order to keep the competitive speedrunning under control, sadly.


#3

I propose the solution of hacking the game into NOT depending directly on the FPS, but this is might be a very difficult task considering how tightly GoldSrc depends on frame rate.

It’s not just an issue about strafing acceleration, which is the first and only thing I have documented in the doc thus far, it’s an issue that affects duckrolling, the Infinite Health Door, NPC manipulation, slope surfing, avoiding fall damage by landing on a slope, wallstrafing and what not, so it’s not just the movement.

I understand that in Quake 3 Arena’s engine, id Tech 3, a solution was made by making the engine call the movement code in fixed intervals instead of frames, using the pmove_fixed and pmove_msec configurable variables, so you basically could get a certain FPS’ effects on an arbitrary FPS value, except that I reckon their case wasn’t as serious as ours, since they don’t have our kind of bunnyhopping, but nonetheless some tricks could be manipulated by changing the FPS (overbouncing height, I think?). Takyon understands the Q3A situation better than I do though, so I might be missing some stuff.

But apparently, our reality is really complex. See this section in HL TAS Team’s documentation to see for yourself.

To be honest, removing the engine’s FPS dependency would be the best solution, by far.


#4

Using a mod to fix the physics was one of the first solutions we brought up. However, it would just feel like going too far from the original game/engine, it wouldn’t be the same GoldSrc anymore.

As I mentioned, FPS manipulation is a really neat trick and it would suck to have it eliminated. This issue could probably be solved easier by just limiting the FPS to 250fps in competitive scene, unless stated otherwise in a segmented team run or something. At least until most of us find a way to get 1000fps without having to pay for expensive computer parts, or until an average computer can do it without struggle (dont expect that happening very soon).

In the end, the difference isn’t that big between 250fps and 1000fps anyway, and would lead to atleast a second timeloss from the final time of a completed run. Competing is the fun part and shouldn’t be eliminated by fps values that only a few people can reach.

Remember that 250fps only increases the possibility of segment optimization by allowing more competition, while 1000fps just takes the increased airaccel into use and pretty much 0 optimization/competition.


#5

I think that making a feature that will successfully replicate Source’s tick system and work without modifying the engine’s internals will take way too much time and the only difference from just setting your fps_max would be a slight decrease of stuttering. Besides, you won’t be able to reach 1000 “ticks” / second anyway. So I don’t really see a point in doing that.


#6

Setting the max fps at 250 at all times would just be stupid, maybe if it was set in stone when HL running started it would of worked but now it’d just separate new and old runs as mentioned. To force any run to 250 would just be a straight disadvantage to pre ~“2014” runs.

Setting a rule to force all autojump scripts to “fps_max 250” or less would solve this issue. It would also not cause any issues with old runs since most are done on 250fps.

It would be arbitrary, nothing in speedrunning says that using 1000fps while bunnyhopping shouldn’t be allowed, but it is the most workable solution I can think of to provide an even ground between all players regardless of computer setups.

Sometimes the simplest solutions are the best.


#7

Anyone tried a host_framerate value that gives you a constant 250 FPS? I know its really different than just running at 250 normally but, its a start right?

Also, hardware problems exist in other speedruns as well. Dishonored’s elevator trick needs 200+ FPS to work, Darksiders is dominated by Aftermath because he has a free scroll mouse, and as a result he automatically gains at least a minute advantage over any other run. There will be no definite answer, it might be best to leave it as is. Just my thoughts on it.


#8

host_framerate 0.004 (1/250) makes the game run at 250FPS but in a very different way. host_framerate will accelerate or de-accelerate your game depending on how many frames per second your PC can handle, for example running the game on host_framerate 0.001 will make it run at 1000FPS but if your PC can’t handle refreshing the screen at 1000FPS and just manages to push some 200FPS, you get a 5x slow-motion in the process, which is obviously an advantage in favour of those with low-end PCs.

I might be missing some info because the frame-rate stuff hasn’t been documented yet in TasTools’ documentation.


#9

That’s pretty much how it works.


#10

So what’s the verdict?
Limiting the frame rate to an arbitrary value such as 250 is fine in my opinion, but only if it unconditionally stays that way, always. This means that we aren’t allowed to use anything above 250 in any circumstance, whether it be for tricks such as the IHD, for TASs, for 501 fps slowdowns or anything else that benefits from a higher frame rate. This would also mean that we can’t push the limit to anything above 250 in a couple of years when everyone has gotten a decent PC.

Another alternative could be to limit the frame rate to 250 in custom maps (bunnyrace_beta2, agtricks etc.) where people seems to be more competitive and the main way of saving time is through air-accel, and let normal runs of games use any frame rate. In the end, glitches that depends on high FPS, whether it be bhop or IHD, is about saving time. It doesn’t make sense to limit the FPS in one circumstance and have it unlimited for another.

Other alternatives that makes sense to me is developer 0 (cap at 100 FPS) or developer 1 (the present “rules”) and wait it out.

I would like to hear Airstrafers’ thoughts on the subject, since he/she/they seem to have a very clear view of what’s legit and what isn’t.


#11

Unfortunately, no, I don’t have a clear idea of what is fair and what should be allowed in non-TAS runs. Yalter and I might be able to tell you what happens to the physics if you change the frame rate, but I can’t really offer any substantial arguments on how to make speedrunning fairer with regards to frame rate.

This is the only thing I can offer though:

Theta is related to how fast your mouse moves when strafing.

Here’s what I think: it is true that the maximum acceleration increases as frame rate increases. However, the difficulty of strafing optimally also increases. Look at graphs for 250 fps and 1000 fps. Notice that, at 1000 fps,

[ul][li]You must move your mouse at within a very narrow range of speed to gain any advantage over 250 fps[/li]
[li]If your mouse moves just a little bit slower, you won’t gain speed at all[/li]
[li]If it moves a little bit faster, your acceleration is just as good as if you strafe at 250 fps[/li]
[li]Given a fixed value of theta, the acceleration at 1000 fps is actually lower than that at 250 fps from about 87.8 degrees onwards[/li][/ul]

Therefore, it ultimately may not make a lot of difference whether a human is strafing at 250 fps or 1000 fps. A highly precise strafer might be able to exploit the advantage of 1000 fps, but then again, despite quadrazid being a very skilled player, his airstrafing produces less acceleration than his wallstrafing at the same frame rate, when in fact, wallstrafing is supposed to be less optimal than normal airstrafing.


#12

Been giving this stuff some thought over the past week or so. quad and rayvex enlightened me to something which I never thought about before.

In RCD/Bunnymod we’re given a combination of uncapped FPS, as well as uncapped bhop. This combination was never there in the WON or Steam versions of the game, meaning that to use such a combination is not staying true to the original HL game. In Steam there is uncapped FPS but capped bhop, in WON there is uncapped bhop but capped FPS (100 in HL1 + OP4, 72 in Bshift); quad has said he regrets using Bunnymod for HL21 because of this. If you’re using a mod which gives you this combination and you make use of it, you’re running on modded mechanics. This doesn’t mean I’m saying we should all be running on WON, but basically it means you’re automatically running on a different category if you make use of this combination. (I’m not one for bitching about categories, but this separation is important).

As for fairness, it all seems very simple now. If you’re running using AG or Bunnymod and making use of the uncapped combination, currently there’s nothing wrong with that because both those mods are independent from the original game. Solution-wise, IMO if the community want to use Bunnymod for runs whilst protecting legitimacy, there should be a feature added to it that caps FPS to 100 when recording demos (if not possible, either make a rule or remove uncapped FPS altogether). If this was to be added, I’d then recommend that if people want to access the uncapped combination whilst playing jump maps that they use AG, but the most important thing here would be not to compare a run done on AG with a run that stays true to the original traits. If the community decides they don’t want uncapped FPS even in AG, I’d suggest using the 125fps cap that is used in AG competitions such as EHLL, meaning that using AG for jump maps would pretty much be a standard.


#13

It’s funny that I was going to point out this major inconsistency within our community, back in this thread, though I eventually decided against it because of HL21 and so many jump maps that were done with this inconsistency. I remember discussing this with a friend long time ago and we realised this is a grey area that everybody seems to ignore. I even recall reading posts objecting to using frame rate > 100 with uncapped bhop many years ago in some SDA thread when the mod mechanics became fashionable, and then everyone ignored and forgot about such objections when everyone witnessed how spectacular runs with uncapped bhop and frame rate can be.

I hate to say it, but all these imply that coolkid’s run is still the world record in the steam Half-Life while SW’s run in the WON Half-Life.

As for fairness, it all seems very simple now.

No, you forgot to address one thing: what about unmodded steam HL? Then the FPS thing becomes an issue again. Remember that coolkid used frame rates > 100 in his SDA submission, and probably greater than 125 fps. I don’t think some arbitrary limitations set by some AG competition should automatically apply to the unmodded game.


#14

coolkid’s run is the WR in Steam HL (unmodded), that’s why it’s important to realise the difference between versions. I personally never understood why SDA accepted uncapped FPS as a rule since they capped it in Quake. I also never understood why you would use Steam over WON, but that’s personal preference. Generally it’s a standard within the scriptless community (who the majority of don’t actually post here at all) not to go above 100fps anyway, which is why I think it makes sense to use Bunnymod to replicate the traits of WON. As for SW’s run, technically he still has the WR if you look at it like that, but a re-run would be pointless and the run itself is still incredibly entertaining to watch regardless of FPS (almost everything in it is possible with 100fps anyway).

I didn’t forget, just didn’t feel it was worth mentioning since it’s pretty irrelevant considering that WON is faster, I mean apart from coolkid I’ve never heard of anyone running on capped bhop since I joined here almost a year ago. As for AG I think you misunderstood my point. In terms of speedrunning, AG is only used for jump maps (is it even possible to run SP properly on it?). Using uncapped bhop as well as uncapped framerate on it should not be compared with runs that stay true to the original traits of either Steam or WON versions (only using one of these features). Regarding the limitation, it’s a standard for the AG community when playing competitively, last I heard the only reason they didn’t decide to use 100 is because of screen tearing; my point is that if you really want competition to be that big of a thing in jump map runs done with the uncapped combination then you may aswell use what is a competitive standard of the mod anyway, just a suggestion (personally I don’t see anything wrong with using uncapped FPS in AG since it’s true to the mod itself).


#15

I guess I have too much nuance in my language that needs to be more explicit. It’s my fault :stuck_out_tongue:

I am targeting this mainly towards people who think that HL21 is the world record in the Half-Life category.

I didn’t forget, just didn’t feel it was worth mentioning since it’s pretty irrelevant considering that WON is faster, I mean apart from coolkid I’ve never heard of anyone running on capped bhop since I joined here almost a year ago.

What I was trying to say: someone might want to compete with coolkid’s run so as to set new legitimate records in steam HL, with or without scripts. The issue with frame rates remains.

As for AG I think you misunderstood my point. In terms of speedrunning, AG is only used for jump maps (is it even possible to run SP properly on it?), and because it is a mod, using uncapped bhop as well as uncapped framerate on it should not be compared with runs that stay true to the original traits of either Steam or WON versions (only using one of these features). Regarding the limitation, it's a standard for the AG community when playing competitively, last I heard the only reason they didn't decide to use 100 is because of screen tearing; my point is that if you really want competition to be that big of a thing in jump map runs done with the uncapped combination then you may aswell use what is a competitive standard of the mod anyway, just a suggestion (personally I don't see anything wrong with using uncapped FPS in AG since it's true to the mod itself).

I didn’t misunderstand you. I was actually just saying that in case someone suggested putting the 125 fps limit on steam HL just because the AG community used it. I am not disagreeing with the AG competition’s rules.


#16

I understand you now :slight_smile:

Yeah I see what you mean about the issue of fairness remaining, but unless somebody can convince SDA to follow what the majority of scriptless community are sticking to nowadays (developer 0/fps_override 0) then I guess nothing can be done with regards to SDA submissions.


#17

^ This. Besides, people have already been running agtricks for ages using 250fps and if you told them that it’s not legit, the rest of the community probably wouldn’t even give a shit. The AG community is simply too big to make people aware of this limitation/force them to use limited fps.


#18

Steam version at 1000fps will most likely be faster than WON at 100fps, so the FPS fairness question still remains if we were to remove NGHL/Bunnymod from the equation.


#19

That’s my point though, I honestly don’t think there is a way to solve the issue for games/mods that originally had uncapped FPS unless you were to just place a developer 0/fps_override 0 rule on all runs which is slightly arbitrary anyway because the command is there to be used in that version.

If people want to compete fairly, they should use WON or RCD/Bunnymod (providing that a 100fps cap is added to Bunnymod).

EDIT: A good feature for Bunnymod might be to have some sort of system that caps bhop when going over 100fps and vice versa, that way you cannot make use of the non-legit combination, also meaning that Steam traits runs cannot be compared with WON traits runs.


#20

Actually that’s an interesting idea. But the thing is, as mentioned before in this thread, people might want to use Bunnymod to run/practise AG maps like agtricks, which means that a cvar should be added to forcibly disable the bhop cap. But in this case I find it useless to even add such a feature since you can already limit your fps with fps_max and you can enable the bhopcap with cl_/sv_bhopcap.