Don't request permission from the server for client physics

I get it. Never trust the client: that’s what any good software engineer knows. But Star Conflict takes that rule of thumb way too literally. I’m not sure exactly how it works, but there’s some sort of server verification going on when players rotate and move their ship. Which population is more numerous? The total number of players of Star Conflict, or the total number of players who play with exploiters in Star Conflict? Despite the answer being the former, Star Conflict appears to prioritize the latter. The possibility of a currently non-existent exploiter should not interfere with players’ experience.

 

I have a pretty decent connection:

5310272248.png

 

but even still I can feel the client requesting permission from the server to move and rotate my ship. There’s always this overshoot, undershoot, or delay involved with attempts to move my ship, and even though – no – maybe even because these instances are minute, having the server fight with me over control over my ship is not fun. It’s actually pretty aggravating, and every time I try to get back into Star Conflict, this latency issue is pushing me away. I know I’m not the only person experiencing this, because in the first sentence Star Conflict was recommended to me, “if you don’t mind the latency issues” was included.

 

 

Obviously the server needs to do something to keep people in check, or otherwise you can have people teleporting around the map, speedhacking, etc, but all of those can be done on the server before replicating to the other clients without interfering with the original client’s controls. If the client requests their ship to move at 5x its max speed, clamp it to the max speed before replicating to the other clients, and let the original client continue thinking they’re going 5x their max speed – likewise with rotation. If hit detection is done on the server, it doesn’t matter if a client is exploiting, because their logical location and orientation on the server are clean. The server would need to be slightly lenient with clamping in order to prevent desync with clients, but if values are repeatedly unrealistic, it’s pretty obvious a client is exploiting and they can be disconnected from the server. There is no need to ensure exploiters have proper gameplay – if some feature of the game would break for an exploiting client (but not for other clients), there is no reason to put in redundancies to keep gameplay as expected for exploiters, as it’s their own fault for exploiting. Nobody expects your game to work correctly if it’s being exploited.

 

 

You are pinging your (most likely) Home server, which is almost NEXT to you, what you should be doing is pinging the Game server and show how much of a good connection it is to that. And even your home server does not reveral the quality fo your network though, so practicaly speedtest.net is almost useless for identigffying netwrok for fast speed gaming.

I know what you are saying about the “wobble” though, just arguing that you did not provide “proper data” to back your point.

Had only ‘teleporting’ once and that was with background heavy download. Else no rotation/warp/anything strange beside OS strange ship escorts.

This major problem has been mentioned several times but the devs seem to be uninterested in fixing it. You’d have better luck playing at a friends house or somewhere with better wifi if you want less ping.

You are pinging your (most likely) Home server, which is almost NEXT to you, what you should be doing is pinging the Game server and show how much of a good connection it is to that. 

It’s probably it.

 

 

This major problem has been mentioned several times but the devs seem to be uninterested in fixing it. 

We have not done it yet. It’s not an easy job to make special servers all around the world.

We have not done it yet. It’s not an easy job to make special servers all around the world.

You don’t need servers around the world to stop this problem. You can give clients control of their own ship without needing permission from the server, and then verify the client’s requests before replicating to others. That doesn’t require any sort of new hardware. It won’t make latency go away, but it’ll make it a ton more bearable where you’re no longer having to fight to get your ship to rotate the way you want it to.

The current implementation seems to be this: The client sends all commands to the server, which then controls the user’s ship, and sends the simulated result back to all connected clients.

 

The suggestion seems to be this: There is a client-side ship that is controlled by the user. The server keeps a simulation of each ship and constantly checks if any exploits have been done (checking health, position, orientation, effects, and whatever else). If the two don’t match up, the server-side simulation takes precedence.

https://forum.star-conflict.com/index.php?/topic/25740-wobble-in-ship-caused-by-ping/

https://forum.star-conflict.com/index.php?/topic/27420-fix-the-wobble/

The servers are largely irrelevant when it comes to this issue, as giving the client control over movement would fix things instantly. The only major problem that could arise from this is more rough movement on the servers for players with higher ping. As the server would be broadcasting that player’s movement as it recovers it, instead of sending it out on its own. This would cause yet another instance of “high ping players are impossible to hit” issues as they would be jumping all over the place with high ping.

It is not only that, with client controll u ou open up the door to hack the hell out of the game and then youll see something like a brave with 500 m/s speed and 200 deg/sec rotation

It is not only that, with client controll u ou open up the door to hack the hell out of the game and then youll see something like a brave with 500 m/s speed and 200 deg/sec rotation

 

The current implementation seems to be this: The client sends all commands to the server, which then controls the user’s ship, and sends the simulated result back to all connected clients.

 

The suggestion seems to be this: There is a client-side ship that is controlled by the user. The server keeps a simulation of each ship and constantly checks if any exploits have been done (checking health, position, orientation, effects, and whatever else). If the two don’t match up, the server-side simulation takes precedence.

 

As such, high ping players would instead see their ships move more smoothly, with some corrections sent from the server when the simulation does not match up with the player input. Cheaters would instead try to input a high rotation or speed, and instead have the server snap them back to the realm of legitimate play possibility.

Current way feels like they first send the input to the server and then the server response if it’s valid what you wanna do and when the message gets back you see ur movement on you client. A more responsive feeling way to do it is to make the movement directly on the client and only ask the server if it’s valid.

Current way feels like they first send the input to the server and then the server response if it’s valid what you wanna do and when the message gets back you see ur movement on you client. A more responsive feeling way to do it is to make the movement directly on the client and only ask the server if it’s valid.

Current way combines both in a pretty bad way for high ping players: your ship moves instantly in the direction you want it to (this is valid for: strafing, going back and foward), then quickly moves to the opposite direction (server compensation to “real” position?), then (when server recieves and accepts your movement) moves how it shouldve done. This is like some triple kick that gets very disrupting in strafe builds. This (“triple kick”) also happens with keybinded pitch keys, or when flying in expert mode. I think this also happens when rolling, but since the camera moves instantly you only notice the delay.

 

Star Conflict fails miserably on responsiveness. Take some pointers! Star Conflict is an amazing game – don’t let a pinprick of poor responsiveness damage that :frowning:

 

You were not the smartest in your class, were you?

The moment you “move” totally the required calculations for 3d movements from servers to clients 2 things will happens: instead of wobbling, in case you have an high ping to the server (or your enemies have it), you will see the “teleporting” effect on your opponent’s ships.

Second one: cheats. Cheats everywhere. Everytime you let the clients do “maths” without servers that “verify” those: you will see a cheat appear sooner or later.

There is no smarta** solution to wobbling in this game. It all depends on how far you are from servers and how many “jitters” happens on the road.

Now… let’s talk about the fact that there are few servers outside the eu/ru zone, but you know, since there is a low population playing from other countries: it have near no sense for the publisher to spend more money on more US or south asia servers.

“here is no smarta** solution to wobbling in this game.”

Yes there most definitely is. There are an insane amount of games that don’t suffer from this issue, and it’s not because of their server locations – it’s because of their networking code. Star Conflict’s networking code is not what it should be. That’s what causes the wobbling.

 

People who keep bringing up “exploiters! exploiters!” aren’t contributing to this thread either. Clearly you haven’t read the thread and noticed that it’s already been addressed. Servers can sanitize data they believe to be spoofed or even kick the player. Exploiters are not any more of an issue with the proposed networking change.

that video says some stuff statue already sayed related to prevent hacking. See it.

Faster server with higher tuckrate would also solve some problems (look bf3/4)

I don’t understand what you guys think you get from that video. 

They are just explaining to the plebes: how your client, the servers and the opponent’s client relate in their shooter game in particular and what they gonna implement in their upcoming patches to solve the fact that they are quite FORCED to use a low tickrate on their servers (mostly consoles faults). 

 

They didn’t invented the wheel. Aka: how to ultimately compensate for the real issue here: latency.

In fact they say: “in order to give you no lag experience we try to merge in the same instance people that have similar ping (and skill)”.

They specifically talks about the fact that with a ping higher than 200 they can only mitigate  the effects of lag. 

Why? Let’s be plain and simple:

 

There is no “netcode” or “client/server” solution on earth that can solve situations where 200+ ping is involved.  You can let the client do the “maths” or give server less “authority” on acquiring movements and shots made by the 2 clients connected… oc you can. But in the end those “maths” need to be sent from a client to another.  And the “lag” between those will always screw up somehow the controls feelings or the shots or/and the “hey I was behind a wall! How that guy can hit me!” situation. ALWAYS.

 

Indeed they will use higher tickrate (they speak about 60) on custom games (for tournaments or more competitive environments) instead of the ultra low tick they will keep using for normal matches (20). But they also say every time that for those kind of matches you need a “pretty solid connection” (and I will add: a pretty solid pc). Because the higher the tickrate, the most you need a good connection. aka low ping. Otherwise “extrapolations, buffer, interpolation”, whatever technique you use in a game to mitigate latency, will introduce some problems gameplay wise.

In Star conflict the shots acquiring technique is pretty solid (even if It’s a bit too much permissive “shooter client” side), the issue here is about controls when you have more than 150 ping. 

That can’t be solved.

Not 'cause you think that star conflict’s developers are incompetent and instead those two guys have discovered the holy grail of multiplayer games.

 

You won’t fix wobbling by doing this:

 

The suggestion seems to be this: There is a client-side ship that is controlled by the user. The server keeps a simulation of each ship and constantly checks if any exploits have been done (checking health, position, orientation, effects, and whatever else). If the two don’t match up, the server-side simulation takes precedence.

 

The answer is already there: If the two don’t match up, the server-side simulation takes precedence.

If the “server-side takes precedence”, in case of high latency all that you will get will be the: “teleporting effect” on everything you see moving on your screen.

You want that? You’re serious?

How could that be an improvement instead of wobbling that can be mitigated by having less rotation on your ships? HOW? 

 

You miss the point that somewhere, by “connecting” two guys from different places on earth: latency will hit hard. Doesn’t matter who do the “maths”: clients or servers. Different issues will jump in when you move calculations from one to another. And it’s way easy to recognize that the teleporting effect is WAY more gameplay breaking than the wobbling, that, once again: can be mitigated with  proper builds (which are less effective? Oh yeah that can happen easily, but nothing can be done about it) .

 

Now… let’s talk about what a “solid connection” means. 

Speedtest, if you select a server that is <50 mi from your location, will only show your download/upload rate and if you have ping problems between your home and your isp if the ping is above a certain value in such a small range of Km. If you really want to use speedtest to show us how good is your connection, you should select a server which is near the star conflict servers.

But, even then, there are way better tools to understand how “good” is your internet connection. 'Cause speedtest is more a way to check the download/upload rate your line have. Not the lag

It send only few “ping” command to the selected server and grant that for good. Instead measurement like those should be done for way more time than the instant ping command it gives in return. 

Download/upload rate are not related at any level to latency. That depends on the technology you use to connect (the new “so called fiber” have higher ping/latency than the old dsl, even if it have way more down/up rate), how much your home/isp connection is crowded and how good are your “net equipment”.

If you want a better tool for that: google and download winmtr, choose an host or a given ip address to test and let it do his job for a while. It will shows you where the main issues lies. But even then, you will need at least some basic knowledge to get the proper info from data it gives. Most probably the best way to solve 90% of problems is changing your isp for one that gives “gaming friendly” options. Like fasthpath for “old” dsl.

 

I’ve changed my ISP a couple of times, searching for the best compromise between low lag and decent down/up rate. Without the necessity to sell a kidney in the process. the result?

 

This is for me US ping

ipnwjm.jpg

160 stable ping to US starconflict servers (the one in Dallas, for people asking: I live in Italy)

35/45  on EU servers 

75/100 on RU servers.

 

No wobbling at all on US servers, sure the commands and the feeling is “laggy” compared to EU or RU servers but, again: no wobbling at all even on high rotation ceptors.

My down/up rate? Only 10/1, still, for playing: is better this way.

 

And just to put an end to the biggest mistake you are committing here: If you don’t have latency issues on others multiplayer games is 'cause you are playing on a server which is nearest to your location than Star conflict’s ones. 'Cause the population in those games: is enough big to merge people from same regions. Something we don’t have here where majority of players are russians. So 90% of the time you get game on Ru/Eu regions even if you select your specific preferred region in game option (anyway, after 2 minutes in que, this option will no longer be applyed and you will be leaded to “any region” que)

 

As I said, the only solution is to get more servers in the US or South Asia regions: this way ping/latency between players from those regions will be way less since there will be less physical distance between them (which apart “not solid internet connection” is the ONLY reason for lag).

But that can’t happen if there is a low population that will not spend enough to justify the expense from the publisher. This is a “free2play” game, market strategy are different from normal “pay once and play” games. You can’t easily invest in regions which already failed to acquire enough population.

 

About the “anticheat”, do you really believe that is so easy implementing a server side “anti-cheat” code that at the same time don’t impact on overall performance/costs and works 100% of the times? You can’t be that naive.

Gaming company invests tons of money in that and still sometimes you will heard about people caught using any sort of cheat even in “pro gamers” events.

If there is “something” that the servers can’t verify on the fly from the data it gets by the clients: you can be 100% sure that someone is already thinking how to cheat it. 

An easy example (not related to the reality): in case rotation speed would be delivered only by clients there would be no way for the server to verify if a given maneuver made by the ship is legit or not. NO WAY AT ALL.

In such environment, If I “tweak” my ship by giving it a faster way to turn backwards by pressing a button: there is no “algorithm” that can verify that ON THE FLY, server side. To fix that you should maintain client side data integrity with a proper software AND allow the server to verify every time if by going from A to B i did it in a proper way… Apart the fact that it’s quite impossible. But it would mean doubling the work and in the end: a complicated way to handle something that can be easily solved by letting do “the maths” on movements directly (or in an hybrid way) by the server.