Bots can possess angular momentum I.e. spinning inertia that is not necessarily a consequence of the bot's own actions but due rather to external torque forces acting upon the bot. The primary source of this (today) is torque due to external forces acting upon fixed and hardened ties, forces such as the bot on the other end of the tie moving or impacting something, or drag on the tied bot or the tie itself. All of these result in torque today. It's important to realize that having to deal with angular momentum is an unavoidable consequence of allowing ties to have fixed angles.
The surface of a bot is also presumedly somewhat deformable and not frictionless. I say deformable because the cyclic nature of the phsycis simualtion allows for bots to interpenetrate to some degree even when the coeffecient of elasticity is maxed.
Off center bot-bot collisions, bot-shape collisions, collisions with the edges of the field and so on should also result in torque being applied to a bot and result in rotational movement. Since bots have mass, this means angular momentum and inertia. That the code doesn't do this today is a shortcoming of the physics simulation. It should. It will not be too hard to add.
Even without the collision code, it is possible today for bots without ties to possess and maintain angular momentum. Bots have mass. When a tie breaks, the bots keep any angular momentum they had when tied, as they should.
But since there is no code to deal with roational momentum due to collisions or to reduce this rotation momentum as a fuction of surface or fluid friction, bots today that have some angular momentum will keep it forever until they get tied again. To address this, I've added some fricitonal degredation for rotational inertia for 2.42.9, but it will need tweaking. We will also really need to add collision-based rotational momentum to make this whole thing work well.
But the delimma I refer to is in regard to the way .aimsx and .aimdx behave. They do not take into account a bot's mass and rotational inertia. They accelerate and decelerate the bot instantly, in a single cycle, turning it a specified amount and then stopping it again without regard to mass or more preciesly, without regard to rotational momentum and inertia.
What should the result be if a bot that is already spinning clockwise due to roational inertia stores a value into one of the .aim sysvars? Should all the rotational momentum just go away or should the bot keep it? Having it just disappear isn't realistic. Keeping it has results bots don't expect - they keep turning.... What if the bot is spinning in the same direction as it wants to turn only it's spinning at a rate faster than the turn the bot requested? Whoa.
Bascially, the way .aimsx and .aimdx work today is incompatable with realistic physcis. They should be torque impulse forces that take into consideration bot mass and angular inertia, not absolute degree operations. Turning a more massive bot should take more nrg and result in more angular inertia. Storing a low value into .aimsx should mean "apply a low amount of counter-clockwise torque". If the bot is stationary, this will start it turning slowly counterclockwise and keep it turning slowly counter-clockwise until friction or an impact or a hardened tie's torque or a .aimdx operation stop it. If the bot has some clockwise rotational momentum, the torque should serve to slow the rotation. If it has counter-clockwise momentum, this should speed it up some. You see where I'm going with this?
I'm interested in whether people see a way out of this without changing the behaviour of .aimsx and .aimdx...