Simulator becomes very slow when zooming or during Fullscreen mode ver 2.0

When selecting zoom x3 or fullscreen in the simulator (ver 2.0) on Windows 10; The simulator becomes unresponsive/extremely slow. Inputs are still detected but happen around 5-10 seconds after the input.

Sorry if this is already a known issue, I've just experienced it and haven't seen any posts about this yet.

Is this a new issue in 2.0 or just when you noticed it?

Making a quick note here that I've filed this in the bug tracker and assigned it to @willco who takes care of the Windows side of the SDK. Hopefully he'll have some good news for us soon. :slight_smile:

Sorry for late response. This was just when I noticed it. I hadn't attempted to zoom or go full screen before but wanted to show someone my game irl.

No worries. I've identified an optimization which helps quite a bit. Look for it in a future release.

1 Like

Great, thank you! It is a nice to have for capturing gameplay at a higher resolution.

I noticed that having debug draw enabled has an impact on fps (in my C Api game) even when i don't use any of the debug drawing things inside my code. My guess is that when debug draw is active it will always "blit" the debug bitmap onto the screen as well and that causes a slow down. So if you got debug drawing enabled try disabling it.

Also this is probably highly dependant on the cpu used in your system (i have i7 6700) but even on my pc i see FPS dip a lot when switching between fullscreen (1920x1080) & default screen resolution. I can imagine if people are using 4k or even 8k screens and run the simulator fullscreen it could be worse.

In my game i calculate the fps and the frametime myselve so i can see FPS beyond 99 FPS so i record a small video to showcase these behaviours ...

Well, I have a very beefy PC so there shouldn't be an issue with my system not being able to handle it.
Going fullscreen or 3x zoom without any of the extra features enabled (malloc log, console, memory logger, debug drawing, collision rects all off) slows the simulator down to a crawl to a point where my inputs are heavily delayed. Also going back to 1x from cancelling zoom or exiting fullscreen, results in very janky performance.

I am on a 4k laptop screen but it is a high end gaming laptop from 2022, 11th gen Intel CPU and a 3080 GPU. Like @willco said, there are optimisations that can be made. Also it really isn't a huge deal either, just something I noticed when I was having fun playing my game using a PS5 controller while showing my game to friends (some of which are going to be helping with marketing including videos).
Going fullscreen on a big screen to show a room of people while being able to pass a controller around and all talk about the game is very handy indeed.

My PC is also 4K and well spec'd and when I went full screen it was dog slow. :slight_smile: I took over the Windows Simulator a couple years ago and haven't been able to revisit all the bits of code, this being one of them. With my optimizations my CPU usage went to basically nothing; I'm optimistic it will solve most problems with full screen and also give us a minor speed boost in the other zoom modes as well.

2 Likes

Nice, I'll look forward to it in a future update. Thank you for all the work you and everyone at Panic is doing.

2 Likes

does the fix entail using hardware (video) acceleration for things like upscaling or is it an algorithmic change that improved performance ? Correct me if i'm wrong but according to task manager in windows (11) the simulator is not using hardware acceleration for its drawing and it's easily forgotten and underestimated how cpu bound graphics functions (like upscaling to high resolutions as 4k) are very taxing sometimes. So i'm kinda interested in these things and if it was a functional change (and cpu based drawing / upscaling is kept ) what the fix actually was that gave the speed improvements.

I made two improvements:

  1. It's now reusing a backing store to draw the game image frame to the screen. I'm already using context upscaling to avoid upscaling the game image to some ridiculous size but the backing store itself is the native size of the view so it was getting large and slow to create/destroy on every frame. That is a side effect of the way wxWidgets works (which is the widget kit we're using on the Windows/Linux versions of the Simulator). I considered moving it to an OpenGL plane to get it onto the GPU but since it's now using next to zero CPU it seems unnecessary and would almost guarantee compatibility issues on linux. :slight_smile:
  2. We have various container views which were implementing custom drawing handlers unnecessarily. That was impacting redraw when doing things like spinning the crank dial control quickly. Removing custom drawing also removes double buffered drawing which wasn't needed in these cases and is quite slow on Windows.
1 Like

(As far as I can tell, the Mac simulator CAN'T go to 3x, nor fullscreen. Would be nice if possible! I zoom in with Control-scroll for now.)

Yup, fullscreen only works on Windows right now. 3x zoom is a Windows/Linux thing I threw in from a feature request that was easy to add and not quite as easy on the Mac IIRC so I punted it. Would be nice to get them all sync'd up for sure. EDIT: Mac Sim does support fullscreen...Window menu -> Toggle Full Screen.

2 Likes