Undocumented Microprofiler Tags Causing Frametime Spikes

I’ve been doing a great deal of cleanup on some old systems of mine and I’ve encountered something strange. In the microprofiler, equally spaced “heartbeats” of frametime spikes have made the gameplay a tad bit jittery.

image

Inspecting the source of this issue results in the following tags, which are marked under a category I’ve never personally seen before, $Event:

RibbonMainWindow: :77 and qt_scrollarea_viewport: :12 are the tags in question causing 33ms of extra lag. QOgreWidget: :1008 and 1 : : are tags present during every frame and seem to encompass the usual processes. All of these tags fall into the “Qt” tag group as well.

Upon further inspection of these tags leads us to the following links:
https://www.devmachines.com/documentation/QtitanComponents/html/ribbonmainwindow.html
https://doc.qt.io/qt-6/qscrollarea.html

These are obviously off-platform documentation websites, with both seemingly referencing products made by the Qt Group. Qt is a GUI making software. I can’t find anything directly stating Roblox uses Qt anywhere, but it’s not unordinary. Despite the benign nature, a GUI backend process causing 33ms frametime spikes seems odd, and with a distinct lack of any documentation on Roblox’s end as to what’s going on here, I can’t really stop this issue.

Furthermore, seeing QOgreWidget piqued my interest, considering that Ogre3D is a rendering engine that hasn’t been used in Roblox for nearly a decade. QOgreWidget in particular is a widget that embeds Ogre3D into Qt, and according to the documentation, only runs on Linux and Windows 7 (my machine is neither). Despite these oddities, it makes sense to see the rendering processes fall under it if Roblox was using QOgreWidget to embed Ogre3D into the Roblox application (?).

These confusing tags have suddenly popped up alongside a number of more minor and less confusing microprofiler changes. I have no clue what the $Event timer is, why it only includes tags under the group “Qt”, and why they are causing gargantuan lag spikes in my game. There’s an even more confusing lack of documentation on any of these in relation to Roblox’s usecase. I’m completely unfamiliar with Qt and Ogre3D, and so I don’t really know how I should handle this situation, and how it should change my current understanding of Roblox’s engine and render pipeline. If there’s anyone with more knowledge on any of this please help me diagnose the issue here.

TL;DR: Third party backend apps are creating microprofiler tags that describe processes seemingly taking up 30 or so milliseconds of frametime. There is no Roblox documentation on any of this.

3 Likes

There is the word viewport and I see a gun viewmodel, are you using viewport frames for your guns?

Roblox uses fmod for its audio this could be a similar situation.

No, I am not using viewports for my gun viewmodel.

I’m 99.99% sure those are related to the Roblox Studio emulator. For example, printing a lot of stuff and having it show in the output window will cause lag, and that gets recorded in the microprofiler. But since it’s not representative of the game’s actual performance, it’s highlighted in gray with no gradients (while all the other flame graphs do) to indicate its irrelevancy.

1 Like

That’s plausible, but print() gets its own microprofiler tag.

Yes, but notice how the gray bar occupies the same frametime as the print statements. When you print a lot of stuff it obviously will expand the scrolling window of the output, which explains the “qt_scrollarea_viewport” in the following frame:


Furthermore, using the microprofiler in edit mode shows that rendering is a subtask of the mysterious gray tag:

Ah, that makes a lot more sense. What isn’t explained is the remarkable drop in frametime afterwards. I really wonder what could be causing that heartbeat-esque pattern. My guess for the QOgreWidget is that QOgreWidget was modified for Roblox’s rendering engine without its name ever changed. If they used Qt for Studio’s UI, then it’d make sense to use QOgreWidget so that the rendered world could be treated as an aspect of the UI.


I have this issue but it occurs every frame when the studio is focused while in viewport mode
this is also after I reinstalled the studio so idk what to do

I am also seeing this when I focus the window

Extra Images

Focusing and unfocusing the window

There are a few 3D aspects inside of the roblox UI for example the view selector, they are not a priority and are merely there as tools so it would make sense to have a modified 20 yr old software render them into the UI

This seems to have starting to happen again, for some reason. I noticed an unexplained terrible performance happening, checked microprofiler and saw this
image

Not only happens on playtesting, but on normal studio use happens too

Why? I dont know, but its getting annoying. Studio performance is more than halved from what it previously was

This should probably be elevated to an engine bug

1 Like