Bug Reports

  • No off-topic posts
  • Don't report more than 1 issue at once
  • For isolated issues or customer support visit help.vrchat.com
Thanks for your bug report!
VRChat Unity Animator Lag
The number of animation layers heavily affects performance due to unnecessary inverse kinematic calculations. Even blank animation layers with zero weight in the FX layer can trigger this behavior. The offender is seen in the profiler as Animators.IKAndTwistBoneJob. It runs as many times as the currently loaded animation controller with the largest number of layers. Although the individual run time is small, they very quickly add up. Slower CPUs seem to be more adversely affected by this. The time taken by these extraneous calculations quickly grows larger than all normal animator activity. This behavior only happens on animators that have a unity avatar/armature. When that is removed, this behavior goes away and the number of layers ceases to be a significant cause of lag. Most FX layers do not have any interaction with the armature, so it is likely that this behavior can be fixed for almost all FX layers. However from debugging the unity editor in visual studio, it appears the this happens in a native unity function named Animator::UpdateAvatars. It is likely that in most if not all cases, these calculations are completely wasted on FX layers and provide no benefit at all while consuming significant amounts of main thread time. Somehow these calculations need to be only run for layers that require them. Additionally providing a way to get parameters in sub animators would allow logic to be moved out of the main animator completely sidestepping this problem. They would not have a unity avatar associated with them, so this problem would not occur. It would also allow completely disabling animators when not in use. Please attempt to find a way to prevent this behavior or consider convincing your Unity contacts to implement a fix. This seems to be one of the largest contributors to animator lag. I have a full write-up with more profiler images and further explanations. https://docs.google.com/document/d/1SpG7O30O0Cb5tQCEgRro8BixO0lRkrlV2o9Cbq-rzJU
1
·
tracked
Fast moving synced objects stutter when close to the player
I have a racing world where AI cars are navmesh agents for the person starting a race, and synced objects for other players. There are no scripts running on them for other players, it is just their position that is being synced. When they are close to other players, they will appear to stutter back and forth. The more players in the world, the more they will stutter. When in the distance, they do not stutter at all. This is a new problem, it was not happening in prior builds of VRC. See attached movie (sorry for the dual audio, I have 2 clients open to test) https://drive.google.com/file/d/11qZxBNN0RVzjA9Z0uStS0s3DAFjuin9m/view?usp=sharing *UPDATE This appears to be tied to framerate. If I lock my FPS to 60, I do not see the problem, but if I uncap it and hit FPS much higher (120+ etc), the stuttering occurs. It appears that the objects being synced are only reporting their position at 60fps with no interpolation to account for users running at higher framerates. It is probably not noticeable when things move at slower speeds, but in instances like my racing world, the difference between 60 and 120+ will be obviously cause a stutter when objects have a velocity close to 100 and you also do while moving right next to them! *UPDATE 2 This only happens if I use my monitor with a 60Hz refresh rate, then uncap the the framerate. If I use my Valve Index at 120 or 144Hz with an uncapped framerate, I will not get any stuttering on objects that I do not own that are moving using ObjectSync as my FPS will rarely get higher than the refresh rate of my headset. So ObjectSync is tied to the Hz that your display is when the game launches, or probably FixedUpdate in some way? This is why I see stuttering when running my world FPS uncapped on my display at 60Hz.
6
·
tracked
Load More