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.

the_shrike 24 Mar 2017:

Turning left seems to have multiple issues then (See: https://ministry.kronosaur.com/record.hexm?id=59759 )

george moromisato 24 Apr 2017:

Could be due to round-off error. Need to investigate.

george moromisato 2 Feb 2021:

Can't reproduce this specific problem. I wrote some diagnostics for the rotation system, and it came up symmetric. I tried the following:

  1. Start at rotation 0.
  2. Turn left for 10 ticks.
  3. Set rotation speed to 0.
  4. 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.