Open Jacob-1998 opened 4 years ago
Hello
Kickrate is a limitation that affects the gameplay. Extrapolation is not a limitation in any case, it's simply a modification of the display of the game.
Something like what you said could be done, but same as before, anyone with a little time will find the way to bypass the system. At the moment, you can hardcode the extrapolation value you want in the source code to get the extrapolation you want, and make the server believe you have a certain value for extrapolation.
For example: if the server wants a 50 extrapolation value, but I use 100, I simply add 50 extrapolation in the source code, and the server gets what it wants, and no limitation occurs.
TLDR: Don't bother, it's impossible to limit extrapolation. A fix would happen if haxball was made impossible to modify, which is definitely not the case.
So leagues can put a limit and force players to play under these limits. If you guys gonna limit, I think limit should be 100. More than 100 has not any connection with input lag because no one has 100ms device lag actually.
That's how it works abusing the extrapolation to become "good players", but they're actually headless chickens. 90% of the times is in corners, which is even funnier. No creativity, every trick in corner would work, no any misses. So easy to move to just put the ball in the corners. :D
It doesn't even remind me at least 2% how it was played on YeS league. Unfortunately.
I cant claim to know all the details about this, but this guy said he knows the solution (and explains it), he says you fix extrapolation doing this (and I can get you 2 in contact if you need to chat more with him):
'Man... He (basro) always say that these stuff we want is easy to modify by 3rd party tools. Ok, then someone tell him to do stuff just like kickrate. Show me one person that can hack kickrate? You can't. EVEN ME, as a javascript developer I tried it for days, and i end up with nothing in the hand.
Basically, kickrate is serverside. It works like that.
You put the values. Game sends code to server. Server streams the some game code based on this values. And if you have different value than server's one, you get desynchronization (means: even if u see yourself playing, others wont basically you stuck between reality and unreality, if you score its not counted because you just stay in the same position for other players, only you can see you are moving etc. its like u lost your internet connection while playing in your host. the game wont close itself but you still playing except nothing is counted etc).
Right here, we can make same thing for extrapolation too.
I set my extrapolation to 130. Game send my extrapolation value to server. And server streamed game to me based on my extrapolation value. And if you dont know, there is a function called onGameTick. Basically checks game every specific milliseconds. Game will check your current extrapolation, and the one you have sent to server. So if you somehow hacked the client codes and changed it to 160 after setting it to 120, the server will send a command to game and it will revert your extrapolation back to 120, or better you get desynchronization.
This is the only way that can he make unhackable extrapolation feature.
Just throw this to him, he will understand better and it is easy to do since he already did kickrate, its same logic at the end.
By saying server/serverside/servers words, i mean whole room. For example when u open kickrate, it applies to everyone. And if u have different kickrate code, you get desynchronization. So extrapolation values can be same like that too. When jasko sets 90 extrapolation, i will know he is playing with 90 extrapolation. And later if he sets something beyond the limit, like 250. Everyone in the room will know he has 250 extrapolation but the limit is 200 so he will get desyncronization. And it is not hackable tho. The current one is hackable, because others wont see your extrapolation value. Make it the way I say, and trust me everything will be different. Including division1 rankings.'