Fei-Yen movement data

Discuss the Virtual-On series.
Post Reply
User avatar
Virtual-On Positive
Posts: 571
Joined: 19 Jul 2012, 19:07

Fei-Yen movement data

Post by Porcupine » 19 Jul 2017, 22:00

Using my method to gather frame data together with various creative positionings, the distance readout allows for all types of VR speed and movement data to be gathered. I begin by analyzing Fei-Yen in great detail. This took six months to finish, but if enough patterns are found the remaining VRs can be done quicker.

Dash Speeds

The methods I used to gather dash speed data are the most accurate, with a typical error of under 0.001 meters/frame. The distance readout on the screen provides data to the nearest 0.1 meters, but I used multiple trials (twenty to forty for each measurement) to gather data to the nearest 0.01 meters. Since there are multiple frames during dashes which get averaged together, even more accuracy is acquired.

The first thing to note is that I have miraculously chosen the correct units of meters/frame to represent speed, as the numbers are quite nice. Most speeds are almost whole numbers to the nearest 0.1 or 0.05 meters/frame! There are a few speeds that are only whole to the nearest 0.01 or 0.005 meters/frame, but this is still far nicer than it could have been. If either the units of distance or speed are changed (for example to pixels or seconds) the decimals lose this pattern.

The exact speeds are up to 0.001 meters/frame faster than the nearest whole number. Although there are errors in my methods, both random and systematic, I did a variety of tests to conclude that this phenomena is not due to my own error, but is real and an actual glitch in the game. My data is not precise enough to measure this "dash speed leak" so I will likely truncate it for other VRs in the future. The data suggests that the leak value tends to be shared within a family of dashes, and often is not dependent on dash direction or length. For example all Fei's ground dash RWs have no leak.

There are no hard patterns in Fei-Yen's dash speeds, and many people may be surprised to learn how intricate the values are. There are soft patterns, like Fei's forward direction dashes tend to be faster, but the amounts for different dash families do not follow fixed ratios. Take note that although Fei's empty back dashes are slow, her empty back-diagonal dashes are still pretty fast, and good for running away. Fei tends to get slower than most VRs when doing dash attacks. I've always known these things but it's nice to see the actual numbers.

Dash Duration

The frame recoveries for Fei-Yen's dash attacks are provided, starting from the appearance of the last projectile. The listed speed applies from the moment the attack animation begins, but I only used the recovery period for measurement. All Fei-Yen's empty ground dashes have a maximum duration of 126 frames, not including the optional startup. All her empty air dashes have a maximum duration of 113 frames (the first two frames don't move). To measure speed I used zero height air dashes, which hit the ground prematurely after 68 frames of movement. The premature landing freeze lasts 27 frames and can't be canceled.

I scribbled on the side what happens when Fei-Yen does empty air dashes from various heights. After rising for 14 frames she will be high enough to finish without hitting the ground prematurely. Fei's normal landing freeze has a 12 frame animation. It turns out she must also air drift downwards then land for not less than 20 total frames (this figure varies for other VR). If she air drifts for 7 frames or less, her landing freeze becomes longer than normal. Such freezes can be canceled with standing shots as usual but their animation is correspondingly lengthened.

Fei-Yen actually cannot jump high enough with a single jump to land normally after an empty air dash, but to finish as high as possible she should rise for 22~24 frames then air dash. By dashing earlier it stays flat longer before starting to drop. Empty air dashes are flat for double the time between their input and when an empty jump would have peaked. If double jumping, ideally the first should be as high as possible, while the second can be canceled into an air dash early in order to finish higher.

Air dash attacks stay flat the whole time, so rising only two frames off the ground will produce a normal ending. A low air dash attack that is one frame off the ground will have a 6 frame descent and a 14 frame landing freeze animation, which I have reported as Fei's low air dash landing. A super low air dash attack (zero height) instead gets the premature landing. The time at which the premature landing occurs varies unpredictably with each individual attack.

Walk Speeds

Besides just speed, walking has acceleration and deceleration periods. The durations vary for each direction but are the same for all types of walking on a given VR. These periods are not equal to the durations of the startup and stopping animations. An uncommonly known phenomena is that during the startup and stopping animations, walking speed is different than normal. I called this lurching during startup and skating while stopping. Inspecting frames confirms their speed changes apply to the period of animation data.

As a hard rule, walking lurches are the same speed as dash cancel slides in each direction, however the animation lengths are not the same. I gathered frame data for all skate and dash cancel animations previously. Fei-Yen's walking lurch animations are 10 frames in all directions. Skating speed is typically almost the same in each direction, and always mirrored front to back. Skates are also related to the fastwalking glitch (done by holding crouch). When lurches or dash cancels are fastwalked the result is exactly skating speed. Fastwalking other things uses the skating speed scaled to the normal forward speed of that type of walk.

Walking attacks and crouch attacks replace the animation so any lurch speed boost is removed after the first frame. Walking from a standstill has a two frame delay but the first frame of movement gets double the acceleration, so it counts as two frames when reporting the acceleration period. The acceleration values divide evenly into the full walking speed, but the deceleration values sometimes don't, so when coming to a stop the last frame has anywhere from one to two times the normal deceleration. I fudged the reported deceleration periods accordingly.

Another side effect of the mismatched acceleration and deceleration values is what I will call unrowing. Just walk in a direction, stop walking a bit, then walk in the same direction again. Based on luck and the mismatch, the final walking speed may be faster or slower than normal by up to a frame, which is significant. Since this isn't very controllable I recommend avoiding this bug.

I have provided a few examples of complete frame-by-frame velocity data for a few strolls across the stage. You can see the lurch and acceleration periods superimpose upon each other, as well as another uncommonly known phenomena called boosting. This is similar to the "dash speed leak" except that the "walk acceleration leak" is permanent and accumulates over time. Due in part to this leak, even by using many trials the walk speeds are only accurate to 0.01 meters/frame at best.

Dashing after walking gives a moving dash. The speed increase kicks in with only a one frame delay, but the first frame has an altered speed. The left column speeds occur when dashing from a lurch, the middle column from a walk, and the right column from a skate. The speed is fixed even if you just started walking or lurching (except for side and diagonal skates). I assumed dash is input in the same direction as the walk, if not the results are even more complicated and not worth studying since this only lasts for a frame.

Rotation Speeds

For each type of manual rotation, I wrote down the number of frames it takes to rotate the enemy out of view, and to rotate 180 degrees (when achievable). These states can be identified based on the loss of lock-on, and direction of the blinking arrow. Both have no delay and are based on the direction your VR is facing, not the camera, which is slightly lagged.

Manual rotation has an acceleration and deceleration period, which appears to be shared between all types of rotation. It also has an accumulating leak which can interfere with discerning the acceleration period. To measure true speed, I removed the appropriate number of acceleration frames by pre-buffering them into a previous freeze via the imaginary rule. Alternate data sets are provided based upon what the acceleration periods are believed to be (including ignoring them completely).

Aerial rotation has fixed speed. Although the same acceleration and deceleration periods apply, it is invisible. While even the slightest amount of rotation is present it becomes the full speed. This feature is useful in performing certain techniques, including Angelan air rowing on twinsticks, and short air dashes canceled into fast drops with rotation (it makes the rotation input lenient). The leak doesn't affect aerial rotation, so we can retroactively calculate that a VR's field of view is about 30 degrees to either side.

Standing rotation gets much faster when the enemy is out of view, but the speed increase does not trigger until about 35 degrees to the side, which is an extra two to three frames for Fei-Yen. If you swing around completely, the rotation likewise slows down just before the enemy comes back into view. Turbo rotation on the ground has varying effects by VR. It boosts Fei-Yen's rotation speed very slightly, only while the enemy is in view.

Speed Modifiers

Hyper Fei-Yen has a global 25.10% speed increase from the regular Fei-Yen on all horizontal movement. While this makes the speed decimals ugly, it saves me the work of having to test a whole new VR, and also proves that the game calculates with high precision (not necessarily in units of meters/frame, which are only how the data tables are stored).

Within 200 meters, all horizontal movement on all VRs instantly slows down to 78.00% of normal. If in the air, the horizontally projected distance to the opponent is checked. I don't know why the chosen multipliers are so weird, but fortunately I tested everything in the outer region where the speed numbers are nice.

Within 100 meters, all horizontal walking movement on all VRs slows yet again, this time gradually as the distance to the opponent decreases. At zero distance the speed is about half of the speed at 100 meters. This is unrelated to a VR's close combat range, and yellow bars are not required (for example if the enemy is behind you).

With close combat active, Fei's forward, back, and diagonal walk decelerations get longer, surpassing the animation length (in such cases a VR stops abruptly after the animation is done). Her side walking animation changes completely, with a longer stopping animation that lasts 32 frames (it takes 26 frames to finish decelerating). The speed doesn't change.


User avatar
Virtual-On Positive
Posts: 571
Joined: 19 Jul 2012, 19:07

Re: Fei-Yen movement data

Post by Porcupine » 29 Jul 2017, 22:00

Jump Trajectory

The rising phase of a jump obeys ordinary, parabolic projectile motion. Fei-Yen's single jump rises for 34 frames to a maximum height of 63.7 meters on an ordinary stage, which has a gravitational value of about 0.109 meters/frame². The peak on the next frame is the last on which you can cancel or air dash. A double jump has an extra frame at the start because the startup delay on the ground is removed, and rises a bit higher. If you jump at exactly the peak, a glitch changes it into a triple jump (you must let go of jump otherwise it will stop).

An empty air dash also obeys parabolic motion (with about half the gravity) but mostly in its imagination, as it is further constrained to move between zero velocity upward, and exactly 0.625 meters/frame downward. An air dash attack continues the same vertical trajectory for the first 22 frames (regardless of the startup animation of the particular attack) then instantly levels out until the recovery ends. There is a gravitational leak of 0.001 meters/frame² in the recovery period so it drops a tiny bit. This leak applies to all vertical motion but unlike the horizontal walk leak, velocity cannot surpass the maximum.

An obscure phenomena, air dash attacks performed at the very beginning of an air dash that has been executed at the peak, experience an added delay of 5 frames to their startup animation, which also adds into the 22 initial frames of dropping. This delay quickly disappears if you wait a bit to fire, or air dash slightly away from the peak.

Jump Attacks

I ignored frame data for jump attacks in my previous frame data list as such knowledge would be quite obscure, but here they are. The animation starts at the peak. My conventions for jump and dash attack recovery are a frame less than how I defined the recovery of other attacks. I merely count the frames in which a jump attack stays approximately level (aside from the leak) or a dash attack continues to move.

Descent Speed

After jumping, Fei-Yen drifts downward at exactly 1.25 meters/frame. This speed is attained after a brief period with about double gravity. If crouch is held to fast drop, gravity roughly quadruples (the early acceleration is also nonlinear) reaching a speed of about 7 meters/frame at the end. The fast drop lasts 15 frames, the same as the crouch buffer. The slow part of a fast drop can be skipped by holding crouch early. Some speed boost is retained for one frame after a fast drop ends. If a second fast drop is input the early (nonlinear) frames can be slightly faster but the main part has exactly the same speed.

Regardless of input height, a jump cancel performs the same. The first frame has zero velocity, then Fei-Yen suddenly drops at about 4.25 meters/frame. From then on she experiences about five times gravity until she quickly reaches her full speed of exactly 6.94 meters/frame.

An advanced technique is the slow or stop drop, done by holding jump for up to 15 frames as a VR descends. The downward trajectory is quite nonlinear, but can approximately be thought of as having no effect for 10 frames, followed by complete stoppage for 5 frames. A skilled player can stack a bunch of these together and waste time but it comes with risk.


Post Reply