View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0004530 | Spring engine | General | public | 2014-09-03 15:55 | 2016-02-05 00:40 |
| Reporter | Google_Frog | Assigned To | Kloot | ||
| Priority | normal | Severity | major | Reproducibility | always |
| Status | closed | Resolution | no change required | ||
| Product Version | 97.0.1+git | ||||
| Summary | 0004530: 97.0.1-360 Low turnrate units oversteer significantly | ||||
| Description | Units with high speed compared to their turnrate oversteer when given move orders while they are already moving. This is because their path is calculated when the order is given but continue moving and miss their waypoint. They then turn around to try to reach the start of their path. Their attempt to reach the start of their path causes them to turn too far such that they then need to turn back in order to face their goal. This problem is obvious when units already in motion are given short move orders through a pathable area. This is an important case because common unit control consists of giving short move orders. Players want their units to move towards the move order as soon as they turn to face it. Noticeable overshoot has caused reports of units being very hard to control and not listening to orders properly. To fix this units need to consider part of their red pathfinder path reached if they are facing it and there is nothing in the way. In terms of the debug view the red arrow which reaches out and destroys the end of the red line needs to be longer. There is less of a problem in 91.0 and the required distance to destroy the red path seems to be larger. The effect can be seen with fast turning units such as Glaive (armpw). It is still annoying in this case that the Glaive wastes time turning too far. | ||||
| Steps To Reproduce | The attached replay has examples of Dart (corfav) and Skeeter (shipscout) oversteering when told to move around a flat area. Skeeter is quite an extreme example and can oversteer twice in one move order. Game: Zero-K v1.2.9.0 | ||||
| Additional Information | Skeeters throughout this game do a lot of unnecessary turning while trying to follow their path. They are configured to never turn in place so acts as a good example. http://zero-k.info/Battles/Detail/291396 0:36 - Skeeter in the middle of the map ducks into the middle island. A Skeeter in the South is told to move slightly South West and first turns to face in the opposite direction. 1:04 - Skeeter in North West. | ||||
| Tags | No tags attached. | ||||
| Attached Files | |||||
| Checked infolog.txt for Errors | |||||
|
|
I bisected the issue to between 96.0.1-300 and 96.0.1-342. The cause seems to be this commit: https://github.com/spring/spring/commit/7d1154b47dfdb34c9b43e250d34351e248d09c09 * model rotational inertia for ground units; make a call to MoveCtrl.SetGroundMoveTypeData with key "turnAccel" to change per-unit behavior turnAccel defaults to 0.333*turnRate for all ground units except ships which use a more realistic default of 0.0333*turnRate The special multiplier for ships explains why sea behaviour was particularly bad. I do not want to look into using this new feature yet so I set turn inertia to a larger value with this gadget: https://github.com/ZeroK-RTS/Zero-K/blob/master/LuaRules/Gadgets/unit_turn_without_interia.lua Units with increased turnAccel seem to avoid oversteering as well as they did before the change (which is not perfect but matches 91.0 and nobody complains there). I will have to test it on people to be sure but I think that this ticket can be closed. If there is a bug it is that path following does not take turnAccel into account properly. I do not intend to use low turnAccel so I do not mind. |
|
|
not so much "bug" as "missing feature"; proper inertia-aware pathfinding will (probably) never happen |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2014-09-03 15:55 | Google_Frog | New Issue | |
| 2014-09-03 15:55 | Google_Frog | File Added: 20140903_231939_ScorpioBattleground_97.0.1-360-ge3d46de develop.sdf | |
| 2014-09-06 18:34 | Google_Frog | Note Added: 0013610 | |
| 2016-02-05 00:40 | Kloot | Note Added: 0015620 | |
| 2016-02-05 00:40 | Kloot | Status | new => closed |
| 2016-02-05 00:40 | Kloot | Assigned To | => Kloot |
| 2016-02-05 00:40 | Kloot | Resolution | open => no change required |