OCAT is our open source capture and analytics tool, designed to help game developers and performance analysts dig into the details of how the GPU presents finished frames to the display.

It runs in parallel with your game, sampling available DXGI presentation metrics (by way of Intel’s excellent PresentMon library), to give you an accurate view of frame timing, pacing and delivery that’s as lightweight and unintrusive as possible. Combined with an optional runtime overlay that lets you view the data in real-time as the game is running, OCAT is primarily for performance analysis, helping to discover and fix issues in frame pacing. Yes, I did just copy and paste that from the OCAT 1.3 release announcement. It’s pre-GDC week so you’re going to have to fight me if you want a better intro.

Changes in 1.4

We’ve added a pair of audible indicators that capturing is taking place, for situations where you either prefer to not use the visual overlay, or compatibility means the overlay can’t work. That way you can still tell that recording has started and stopped even if you can’t see that’s true.

There’s also a new rolling frame time graph rendered in the overlay to add to the textual FPS and frame time print outs, and 95th- and 99.9th-percentile performance data is dumped to the performance summary log that’s generated at the end of each OCAT capture.

If you’re not sure what graphics API is being used by the game you’re using OCAT with, say if it’s not obvious or the game supports different rendering API backends, OCAT now prints that in the overlay. If you’re using OCAT with a Vulkan game and OCAT crashes, we now deactivate the Vulkan layer we use to render the overlay to hopefully get around rare situations where it could persist after the crash.

An FCAT-style coloured bar can now be added to the display on the left or right, which is very useful if you’re using any post-process methods to analyse a video or per-frame capture of the game you’re using OCAT with. OCAT changes the colour of the bar frame-by-frame in a contrast-aware way, so you can easily tell where on the screen a new frame is being presented to help detect frame changes and on-screen tearing.

Two notable bug fixes round out the most interesting changes in 1.4: we now remeber where you want to store captured data between uses of OCAT so you don’t have to change that every time if you’re not happy with the default location, and we now use a more reliable global hotkey hooking method, in order to try and get around clashes with other software that might also have active hotkeys.

Lastly, by far the biggest change in 1.4 (not true) is the fact that we switched from major.minor.0.build to major.minor.build version numbering. Multiple person years of engineering effort (totally not true, took us less than a day) went into figuring out the fact that the old version numbering scheme was causing uninstaller problems. So now the uninstaller should work properly, should you wish to totally nuke OCAT from orbit in much the same way we nuked the rogue zero from the version.

More information

OCAT is developed out in the open on GitHub (note that most of the development activity between releases takes place on dev branches!), the documentation is visible at ReadTheDocs, we’re issue-driven as much as possible and welcome contributions in any form, from anyone that’s interested in helping improve it. Even if that’s just a bug or compatibility report where OCAT doesn’t work, please get involved!

Getting OCAT

Get the 1.4 release installer binary for Windows from the GitHub releases page!.