Make tanks and cars turning controls the same

Ideas that are too old (too many things have changed since) and ones which won't be implemented for certain reasons or if there are obviously better suggestions.

Moderator: ickputzdirwech

User avatar
MEOWMI
Filter Inserter
Filter Inserter
Posts: 334
Joined: Wed May 22, 2019 12:21 pm
Contact:

Make tanks and cars turning controls the same

Post by MEOWMI »

TL;DR
Turning controls are different for tanks and cars. Make them be the same so muscle memory doesn't suffer.
What ?
Currently, cars and tanks turn differently when reversing. The proposal is to make them both be the same (favoring the cars functionality I guess?).

If you don't follow, do the following: Keep one side key held down. Then alternate between driving forward and backward. A car keeps within the same curve, whereas a tank will always turn in a single direction.
Why ?
It is an inconsistency in controls, terrible for muscle memory and not even a useful nor good abstraction for the game.

Yes, tanks and cars have different mechanisms for turning in reality: tanks change speed of their tracks to turn whereas cars pivot the wheels, but keeping this behavior in-game is not at all reflected in how game control peripherals work nor is it a needed realism. Games are not reality, and the controls should primarily serve the game and the player. This bit of realism isn't even reflected in the game's own keybindings, as there is only one turn left and turn right, further proof that it is an unnecessary complication.

I think virtually everyone will expect behavior like in the car intuitively, so it would be a sensible choice to unify them.

Lastly, trains already turn like the car as well, so it is even more sensible to follow that logic.
User avatar
boskid
Factorio Staff
Factorio Staff
Posts: 2964
Joined: Thu Dec 14, 2017 6:56 pm
Contact:

Re: Make tanks and cars turning controls the same

Post by boskid »

Car's control (CarPrototype::tank_driving = false) and Tank's control (CarPrototype::tank_driving = true) are 2 different control schemes and they cannot be merged because they are inherently different.

Tanks are able to rotate in place without moving. That means rotation is as following:
- when v > 0 and right is pressed, rotate CW
- when v = 0 and right is pressed, rotate CW
- when v < 0 and right is pressed, rotate CW

With cars, the rotation is as following:
- when v > 0 and right is pressed, rotate CW (rotation speed may be affected by travel speed)
- when v = 0 and right is pressed, do not rotate
- when v < 0 and right is pressed, rotate CCW (rotation speed may be affected by travel speed)

Those control schemes are indeed different when speed is negative, but that is intended to make the steering be simple for tank control while keeping it able to rotate in place without moving forward.

If the rotate direction of a tank moving backward would be to rotate CCW when right is pressed, the tank control scheme would look something like this:
- when v > 0 and right is pressed, rotate CW
- when v = 0 and right is pressed, rotate CW (to be able to rotate in place)
- when v < 0 and right is pressed, rotate CCW (to be somehow consistent with car control)

Now my question is, why should there be this annoying artifact where a rotation direction changes when tank stops moving backward? (transition from v<0 to v=0). Maybe there should be a different speed at which the turn direction would change? How would that be notified to a player? Why a player slowing down in tank when moving in reverse should be punished by switching the turn direction? Maybe there should be some state that keeps the turn direction until the left/right keys are released and then it would again choose the direction based on current tank movement speed to decide what is left and what is right. All of those weird corner cases of merging those two control schemes would make it absurdly unusable to have tanks being able to turn in place and be able to move backward and the only reasonable option after merge of those 2 control schemes would be to disallow tank from moving backward in which case you would not be able to notice that current behavior has this behavior change and the topic itself would never be asked again.

Wont implement.

-- edit:
Trains are not able to rotate in place so they are using car's controls.
aka13
Filter Inserter
Filter Inserter
Posts: 793
Joined: Sun Sep 29, 2013 1:18 pm
Contact:

Re: Make tanks and cars turning controls the same

Post by aka13 »

I find the trains controls counterintuitive somehow.
It makes total sense, that when you press backwards, you are driving backwards, and so turning right needs a right input, and it totally makes sense in a car, and translates from IRL experience.
But when I drive a train backwards, usually it is for a "long" time, 5-20 ingame seconds, and I tend to start to think of the movement as going "forward" and have to spend a split second making sure I am pressing the button of the opposite direction that I am going.
(Not asking for a train control change, that would propably be even more confusing, than the current behaviour)
What I find really uncool about train controls though, is that there is no cruise control. I have to hold W for the whole duration of my ride, and I can go full speed or no speed.
Cruise control for the tank would be pretty rad as well, but that is a whole different topic
Pony/Furfag avatar? Opinion discarded.
User avatar
ssilk
Global Moderator
Global Moderator
Posts: 12889
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: Make tanks and cars turning controls the same

Post by ssilk »

aka13 wrote: Wed Nov 16, 2022 9:55 am What I find really uncool about train controls though, is that there is no cruise control. I have to hold W for the whole duration of my ride, and I can go full speed or no speed.
Cruise control for the tank would be pretty rad as well, but that is a whole different topic
Please do it so. :)
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Post Reply

Return to “Outdated/Not implemented”