Go back to : Skydrift research homepage
Do not have all my notes on fast steering as of writing this page, so this might need corerctions
Steering gets stronger depeending depending on the duration of the string, from a minimum steer (ratio 0) to a maximum steer (ratio 1).
Holding an input at more than 0.7 in a direction starts charging the steer (= increasing the turning frames).
The value resets to 0 when the horizontal input value drops below 0.7.
This means that skipping from 1 left to 1 right will not reset the value.
The turning frames increase even during drift or switches. It does not have to be inputed before the drift or switch (ex : pressing left during a switch will start charging the steer).
It takes 80 frames (= 1,6 seconds) to fully charge the steer (= get an internal ratio to 1), the 20 first frame are not doing anything (= said internal ratio is always 0 during those).
// From class Tank, method updateTank
// Soem variables were renammed by myself
// If the horizontal input is strictly supreior to 0.7 (left or right), increse turning frames, else, set them to 0
// this.mTurningFrame = this.NGDCMNIDPEG
// this.mInput.vec.x = this.HGJGCGMIKKD.GIAIOBGJILM.x
this.mTurningFrame = ((Mathf.Abs(this.mInput.vec.x) <= 0.7f) ? 0 : (++this.mTurningFrame));
// Determines the rotation based on elpased time
// cTankturningSpeedis OS stat (Clownpiece : 5.8, 6.05)
// For more precise data, read the util.GetRatio
this.mRotateY = this.mInput.vec.x * cTimeBase * Mathf.Lerp(this.cTankTurningSpeed, 10f, Util.GetRatio((float)(this.mTurningFrame - 20), 60f));
// The util.getRatio (util = CHEBABACLCD)
public static float AIKFLALIDHP(float KIMEBGMHNML, float BFMCFMGMLLI)
{
float num = KIMEBGMHNML / BFMCFMGMLLI;
if ((double) num <= 0.0)
return 0.0f;
return (double) num >= 1.0 ? 1f : num;
}
Keyboard having no analog input (left is pressed or not, it can't be 0.7 pressed), Skydrift uses a system to make those inputs "smooth".
It takes 11 frames to get an horizontal input value of 0.7 when pressing a direction and 16 frames to get to full direction (value of 1).
(First counted frame is the first one different from 0, the 11th frame is the first superior to 0.7, the 16th frame is the first at 1)
It takes 4 frames to drop below the 0.7 horizontal input value when releasing direction and 16 frames to get to full neutral (0).
(First counted frame is the first one different from 1, the 4th frame is the first inferior to 0.7, the 16th frame is the first at 0)
When changing direction, the decrease part is entirely skipped, so it takes 16 frames to fully change direction, as if the player pressed from neutral position.
For example, going from -1 to 1 will do -1 → 0.03 → [...] → 1 and not -1 → -0.90 → [...] → 0 → 0.03 → [...] → 1.
This does mean that charging a full steer takes 11 more frames (91 in total).
Pressing a direction in the pause menu and holding it while closing the menu instantly sets the direction at its maximum (-1 or 1).
The name Fast steering can (could ?) cause a bit of confusion between the western and chinese community. This is due to western community calling the fact of starting a steer at max strength Fast steer. While the chinese community called ||Don't have the name, rip|| the fact of, when steering in a direction, pressing the opposing direction, which results in a speed boost. The issue being that this would also translate to Fast steering.
Thus, when using fast steering, I'll avoid using fast steer without prefixing it by "western" or "chinese". And giving new names because that would be easier.
As seen in the basic principles, steer can be charged during a drift or switches.
An example of use would be Cirno Circuit second U-turn, where you can switch multiple times before steering.
The "Western" fast steering consists in keeping the steer charged while changing direction.
This is possible because turning frames only resets if left or right input is inferior or equal to 0.7.
It does not check if the input is in the same direction as before.
Thus, by switching, for example, from 0.87 left to 0.98 right in only 1 frame, the turning frames will not reset.
This is mostly usable with controller. MegaMia found a consistent use by using the D-pad (as emulated stick) to press the new direction.
Technically, keyboard users can use steer switch by opening the pause menu as seen in the keyboard related section.
// From class Tank, method updateTank
this.mTurningFrame = ((Mathf.Abs(this.mInput.vec.x) <= 0.7f) ? 0 : (++this.mTurningFrame));
Note : need to recheck stuff, here are my notes.
Pressing the other direction while steering will nullify the speed loss from steering.
Trying to drift in that state will have some weird effect.
Though, doing that will lock the horizontal input value, so doing it during the 10 frames before reaching the 0.7 threshold will prevent turning frames from going up
9961's comment on this :
快转 can be used in most of the corners but you don't want to abuse it since drifting well and existing with proper angles always weight more.
Fast steer, which refers to a charged input/pre-input bug, can even be more significant than 快转. Not only it is an effective way for keyboard player to optimize their angle and get best routine (e.g. ring nisc in MC1,), but also it is usually the only option to deal with certain sessions (example1: Misty first nisc: With most characters keyboard can't finish the whole nisc without max steer brought by pre-input. example2: The Z-Zag in old-cap: you also have to hold the direction button while you are switching to pass safely)