Making a clone of your own character on a viewportframe, then changing the Cframe on renderstep to make it match your real character Cframe looks delayed. The faster your character is moving, the more noticeable the gap becomes. Using different renderpriority values doesn’t fix the issue.
This bug showed up in my game without me having updated it and player incident reports about this issue showed up starting on Sept 29th.
Maybe this is slightly off-topic, but when this is fixed you maybe can also place the viewportframe_bug.rbxl file in #resources? Since you now already made this public, I think some people would find this very helpful!
OT: I can recreate the bug without changing anything, it also happens in studio.
I don’t think it’s a bug. ViewportFrames have always taken a frame or two to update the render.
You set the character position in frame 1, and it’ll show in the ViewportFrame in frame 2.
Generally the only time it matters is the case you showed there in terms of trying to overlay them. But this is certainly not new - I had this many months ago helping someone else with a system similar.
It gets more noticeable the fewer frames are being rendered, (as the frames are longer and therefore so is the delay) so maybe that’s why some people see it more prominently than others. As you also noted, it’s more noticeable if you go faster, as you’ve travelled further from the last frame to the current one.
If ViewportFrames did do everything instantly it would be detrimental for many devices. If you’ve ever played a game on another platform with live mirrors on a low end device, it’s clear to see why. You don’t want the ViewportFrame to have the same priority as the actual world. It’s also why the Lighting is very basic in ViewportFrames. They aren’t designed to replace the world.
Oh my goodness, THIS EXACT SAME ISSUE started happening to me a few weeks ago. I know when this started happening (which is recently) because I noticed one of the effects in my game broke and reported it instantly. PLEASE PLEASE FIX! I can show a before and after video of the behavior if necessary but it’s pretty much the same thing OP has pointed out.
(sidenote: if I could make posts to Platform Feedback, this issue would have been visible to the engineers 20 days ago. I am super thankful OP was able to report this but if nobody else had this issue I had zero effective way to have this noticed and fixed. Devforums are a total mess.)