Suggestions for features or improvements
#71825 by hugojmaia Thu Jun 15, 2017 12:00 pm
Ever since I started playing a couple months ago I've had a problem with how the game handles mouse steering. First let me explain how I think the game handles it before showing the suggestion.

As far as I've been able to experiment, mouse steering is just an extension of keyboard steering, you put your mouse somewhere on the screen and your game sends turn left/right commands over to the server until your ship faces where the mouse is.
The Problems I've had so far with this are:
1 - "Ship Wobbling": As I try to make rapid minor adjustments on my ship it will visually wobble as the connection lags a bit and the ship's direction desyncs between me and the server.
2 - "Ship refuses to turn one way": Sometimes when I try make rapid sharp turns the game will lag in such a way that the server will believe I'm still sending the command to turn left while my client is telling the server my ship should turn right, effectively preventing me from turning the ship until I move the mouse to make it turn the other way and correct it.
3 - "Can't fire straight": Every time I am firing my weapon while turning the ship my shots go way left or way right for 2 seconds before the client and server finally sync and allow me to shoot straight. This is present every time I kill skirmirshers as my strategy relies on luring, gaining some distance, doing a 180º, debufing with VT and then killing. The VT will often miss 2 to 3 times during the desync while my mouse is direcly above the skirmirsher.
4 - "Ship didn't turn enough": This one often happens when I use the speed boost right after turning my ship, getting a desync and having my ship go the wrong way.
5 - "Imprecise turning": This one has been reported in a post before, because mouse steering is an extension of keyboard steering it lacks the ability to deliver precise turning info. This can be easily shown by firing the beamer and seeing as the ship never aligns with the mouse. Having a slower turn speed allows for a more precise aiming, but the disadvantages of taking nearly 2x as long to turn is so big that most players will take imprecision over slower turning any time.

They are all atributted to a poor connection, I live in Brazil, the best ping I can get with an US connection is 100, my average in the game is about 130. It isn't too bad and I've learned to cope with it over the years. This is the situation of a large portion of the player base though and I'm sure several people have had at least one of these 4 problems at some point.

Here's how I suggest this can be fixed:
Rather than having the client send to the server the turn left or right command, have it send to the server the ship's desired angle. The formula for this has been posted before, it's tan^(-1) ((y2-y1)/(x2-x1)). Where (x1,y1) is the ship's position on the screen and (x2,y2) is the mouse position. A few conditionals will be needed here to handle when x1 == x2 and whether the ship should be facing upwards or downwards. Then simply have the ship turn to that angle on both the client and server side.
The desired effect is that it'll be considerably harder for the client and the server to desync the ship's direction, since when turning it'll only require a single succesful input, once the mouse is at the desired location, to have client and server with the same ship direction regardless of how spotty the client's connection is.
It'll also allow people to get precision with the ship's direction, since now instead of using the current left or right discrete increments, one final fraction of an increment can be added to make the ship face the mouse on the pixel.

Let me know what you guys think of this and how much it'd change the game for you.

- Hugo
Last edited by hugojmaia on Sun Jun 18, 2017 11:15 pm, edited 1 time in total.
#71838 by traf Fri Jun 16, 2017 1:19 pm
This actually doesn't sound too bad. When I read the title my initial reaction was "no way Jose", but it would really help.

I don't know how you play with 100ms ping, you have my sympathies.

I have an open door policy. Please feel free to private message me!

“Don't write so that you can be understood, write so that you can't be misunderstood.”
― William Howard Taft
#71841 by hugojmaia Fri Jun 16, 2017 5:51 pm
I consider any ping below 200 to be perfecly playable.
The problems arise when the ping fluctuates. That means some of the input data was lost which means that, even if your game reports a ping of 20 on tool provided in the options menu, you're getting spikes in the ping that means events are being randomly delayed by way more time than 20ms. Or worse, quick input isn't being registered.
What has caused a great many deaths in the system with death lines is that the server requires the client to send "no input" before discarding the previous input, ever had a bit of lag spike where you though you were stopping but your ship continued a bit forward? That's the system we have in place. If the "no input" isn't sent because of a bit of lag your ship might continue forward/firing/turning, usually crashing into a death line or using up all the power meter.
It's part of the netcode, changing that might be impossible, or it might worsen the connection for everyone.
What I suggested is a compromise that should work with the current system, rather than sending a -1, 0 or 1 flag for turning we'd just send something on the [0, 2*pi] range. A bit extra data, but nothing too serious.

Maybe one day I'll be able to move to the US or Canada and then I'll get a ping below 100.

- Hugo

Who is online

Users browsing this forum: No registered users and 1 guest

About

Welcome to the AstroFlux forum! This forum is here to provide you with a friendly environment where you can ask questions and receive helpful information from experienced players. Please Join the discussions in the Astroflux forums. The game developers are active here and are happy to hear what you think!

AstroFlux is a MMO space shooter with numerous weapons, upgrades and abilities. Explore the galaxy and collect space junk to gain resources for new technologies.