Brackman released an overshooting widget in
this thread. He doesn't want that thread cluttered and the
widgets in MM thread is is messy enough as is, so here is a new thread.
Anyway, to maintain fairness, nobody should use it. The only reason anyone should need is latency. It's my knockdown argument against many unit AI widgets ideas, and it's demonstrably a problem here.
Here are two replays of the widget for Glaive vs. Glaive, one on the server and one in local skirmish:
https://github.com/ZeroK-RTS/Zero-K/files/7072013/OvershooterReplays.zipThe server replay can be launched easily here:
http://zero-k.info/Battles/Detail/1186151In local skirmish the retreating Glaive consistently fires at the edge of its range to kill the chasing Glaive. Here is a picture.
On the server the retreating Glaive shoots intermittently. I ran the test twice and the first one seemed to shoot less than half the time. The second one was a bit better.
The reason is latency. In local skirmish, the widget's commands arrive in the simulation 33ms after they are issued. This allows it to keep the set target command just within the retreating Glaive's range so that it always fires. On the server I have 333ms to 366ms ping. The widget exists on my computer so any commands it issues take 1/3rd of a second to reach the simulation. By this time the command is often no longer within range of the Glaive.
In short, the effectiveness of the widget increases dramatically as you go from 366ms to 33ms ping. Maybe it even works fine for
Brackman. His ping seems to range from 166ms to 233ms, lower than mine, and I presume he tweaked the range leeways and velocity predictions to work for him.
Thus nears the end of the strong part of this post. The unfairness described above seems indefensible. Zero-K isn't about drilling fibre through mountains to be ns closer to the stock exchange. Maybe some more advanced widget could take latency into account, but I am talking about this widget, the one that actually exits, not some theoretical extra. I'm about to talk about that possibility, but nothing said on that front detracts from what is above.
So, should the widget be fixed to take latency into account? In short, no.
-
Latency inherently reduces the performance of the widget, no matter how smart, because it can only predict what is going to happen and issue commands appropriately. Factors, such as changes in direction, will ruin its prediction.
-
If the widget maintains enough leeway to account for changes, then players with lower ping will require less leeway. This directly translates to the amount of damage your Glaives deal, before any input from the player, depending on their ping.
-
Writing fancy latency prediction is a waste of time when the whole thing could be a gadget.
Next question. Should the widget be a gadget, or equivalently, would it be fine if we all lived 33ms from the server? We're getting into more arguable territory, but I think the answer is still no.
As
katastrophe says:
quote: I share Randys opinion about the overshooter-widget and want to add another aspect about it: the audio. It makes it a lot harder to percieve what is going on by your ears. In https://zero-k.info/Battles/Detail/1185842 there was a moment at the beginning of the game where an enemy glaive just ran through our base shooting at nothing. I was confused because i thought an actual interaction would take place. Yes, that is maybe a minor issue and yes, it was possible to somehow do that on purpose before (ground-attack), but not to that extend. |
This is a problem I've thought about before, in the wider context of shooting at the ground being free. Having units shoot at the ground all the time is visually and audibly noisy. It's janky and annoying. Shooting at the ground being free is an unsolved problem, one with no good solutions that I've heard of.
Glaive overshoot essentially re-implements the retreat range bonus, with some differences:
-
It doesn't deal full damage, since it partially depends on spray and is shooting at the ground rather than the enemy.
-
The range is longer since some of the spray overshoots beyong even its static range.
-
It looks a lot jankier.
If we wanted the retreat range bonus, then we could just remove the physics hax that prevents it. I don't think having most units routinely shoot into the ground looks any good. I think I am going to end up hampering set target such that widgets can't make Glaive do this.
There is more of an argument to be made for Kodachi overshoot. This is what it does without the widget:
It's shooting range is increased slightly be the widget, but it is more in the realm of dealing tickly damage with its fire than hitting the chasing units directly.
The fire spawning aspect of Kodachi implies that it should be very good on retreat, so I think it makes sense for the Kodachi AI to use this more to its advantage. Remember that I'm on the weakest part of the post, the part about whether any behaviour like what the widget implements should exist. Speculation here does not change the latency argument above. Using the existing widget for Kodachi is unfair if it has anything like the latency problems of Glaive.