With keyboard controls, I’ve noticed on a few slower-turning playerships that it’s possible to turn a single frame clockwise, but turning counterclockwise will rotate a minimum of two frames. Also, turning counterclockwise, it seems like you have to hold the key down longer before it responds.
Turning left seems to have multiple issues then (See: https://ministry.kronosaur.com/record.hexm?id=59759 )
Could be due to round-off error. Need to investigate.
Can't reproduce this specific problem. I wrote some diagnostics for the rotation system, and it came up symmetric. I tried the following:
- Start at rotation 0.
- Turn left for 10 ticks.
- Set rotation speed to 0.
- Turn right for 10 ticks.
We should end up at the exact same spot, and the various diagnostics all did.
I also tried the reverse test (turn right for 10 ticks and then turn left for 10 ticks). That also ended up being symmetrical. Here is an example of a run:
: (enum (tseRotationTest 120 0.5 0.5 3.0) line (dbgOutput line))
{ currentFrameVar:31232 currentSpeedVar:0 frame:30 lastManeuver:none speed:0.0 }
{ currentFrameVar:31403 currentSpeedVar:171 frame:30 lastManeuver:right speed:0.5009765625 }
{ currentFrameVar:31574 currentSpeedVar:171 frame:30 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:31745 currentSpeedVar:171 frame:31 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:31916 currentSpeedVar:171 frame:31 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:32087 currentSpeedVar:171 frame:31 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:32258 currentSpeedVar:171 frame:31 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:32429 currentSpeedVar:171 frame:31 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:32600 currentSpeedVar:171 frame:31 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:32771 currentSpeedVar:171 frame:32 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:32942 currentSpeedVar:171 frame:32 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:32942 currentSpeedVar:0 frame:32 lastManeuver:none speed:0.0 }
{ currentFrameVar:32771 currentSpeedVar:-171 frame:32 lastManeuver:left speed:-0.5009765625 }
{ currentFrameVar:32600 currentSpeedVar:-171 frame:31 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:32429 currentSpeedVar:-171 frame:31 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:32258 currentSpeedVar:-171 frame:31 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:32087 currentSpeedVar:-171 frame:31 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:31916 currentSpeedVar:-171 frame:31 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:31745 currentSpeedVar:-171 frame:31 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:31574 currentSpeedVar:-171 frame:30 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:31403 currentSpeedVar:-171 frame:30 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:31232 currentSpeedVar:-171 frame:30 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:31232 currentSpeedVar:0 frame:30 lastManeuver:none speed:0.0 }
{ currentFrameVar:31061 currentSpeedVar:-171 frame:30 lastManeuver:left speed:-0.5009765625 }
{ currentFrameVar:30890 currentSpeedVar:-171 frame:30 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:30719 currentSpeedVar:-171 frame:29 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:30548 currentSpeedVar:-171 frame:29 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:30377 currentSpeedVar:-171 frame:29 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:30206 currentSpeedVar:-171 frame:29 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:30035 currentSpeedVar:-171 frame:29 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:29864 currentSpeedVar:-171 frame:29 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:29693 currentSpeedVar:-171 frame:28 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:29522 currentSpeedVar:-171 frame:28 lastManeuver:none speed:-0.5009765625 }
{ currentFrameVar:29522 currentSpeedVar:0 frame:28 lastManeuver:none speed:0.0 }
{ currentFrameVar:29693 currentSpeedVar:171 frame:28 lastManeuver:right speed:0.5009765625 }
{ currentFrameVar:29864 currentSpeedVar:171 frame:29 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:30035 currentSpeedVar:171 frame:29 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:30206 currentSpeedVar:171 frame:29 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:30377 currentSpeedVar:171 frame:29 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:30548 currentSpeedVar:171 frame:29 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:30719 currentSpeedVar:171 frame:29 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:30890 currentSpeedVar:171 frame:30 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:31061 currentSpeedVar:171 frame:30 lastManeuver:none speed:0.5009765625 }
{ currentFrameVar:31232 currentSpeedVar:171 frame:30 lastManeuver:none speed:0.5009765625 }
Note, however, that this doesn't apply to all the other reports about turning asymmetry, such as patrols always turning a certain direction. Those are verified bugs.