AtomSmasher-ULTRASTATS icon

ULTRASTATS

Stat tracking, stat viewing, performance analysis, and run logging for ULTRAKILL. (UPDATE ID: FEATHER)

CHANGELOG

Changelog

v0.1.3

  • Improved filters window greatly by organizing stuff better, and swapping from from dropdowns with 3 options to tri state buttons.
  • Added new filter window tri state buttons for all sorts of things.
  • Added +FORCERADIANCE and +FORCESAND tracking when enabled in the console.
  • Now runs where you take 0 damage will have have an orange 0 for the entry in the deaths column.
  • Runs with +FORCERADIANCE, and/or +FORCESAND will have the date of the run be colorful depending on the buffs used.
  • Moved all of the dlls for SQLite onto a dependancy mod.

v0.1.2

  • Added Delete Run button that appears when you right click the Run ID on the chart in the stats tab.
  • Added rank colors to the filter window rank filter.
  • Added +FORCERADIANCE and +FORCESAND tracking and filtering to custom levels in the ULTRAKILL /// REPRISE bundle (I'm a big fan).
  • Added the option to sort custom bundles list in the filter window by last updated or last played as well as alphabetically.

v0.1.1

  • Added the Total time: line to the analysis window, this is the amount of time you spent on every run.
  • Removed Stored version(s): from the analysis window since custom level version storage is no longer supported in the new database format.
  • Improved look of the chart in the STATS tab.
  • Fixed the analysis and filter windows to now darken the entire screen behind it.

v0.1.0

  • Run logging now uses data from the StatsManager (tab stats display) as a backup if data from FinalRank (level end screen) is unusable. This should ensure that run logging is far more reliable.
  • Moved from storing data in a complicated filestructure with many folders and subfolders to storing data in a SQLite database. Using a SQLite is far faster, more flexible, and in the long term is much smaller when it comes to filesize.
  • Added migration from the old .jsonl filestructure to the new SQLite database. Old files are not deleted automatically.
  • Added filters, better sorting, and analysis support built around the new SQLite database.
  • Added compatibility flags for FENTOKILL and Nemesis campaign runs.
  • Added PluginConfigurator options to show or hide the FENTOKILL and Nemesis flags in the filters window.
  • Added startup popups for new users and for users who still have both the old filestructure and the new database.
  • Improved custom difficulty support and added special save slot names for modded save files like Masquerade Divinity and STRAYMODE.
  • Removed points earned from being tracked (points can be calculated from a run's style/wave and flags, so logging p earned is redundant).

v0.0.15

  • Further improved the queue-save system to ensure no runs slip through the cracks.
  • Added compatability with custom difficulties, including BananasDifficulty, BillionDifficulty, SavageDifficulty, and ULTRAPAIN.
  • Added an analysis window to the stats tab, allowing users to view stat averages, standard deviations, and best values, among other things.
  • Won Mod of the Month for March 2026! Changed the mod's icon to incorporate MotM purple and improve the icon's background.
  • Fixed the "X" button's font so now it uses VCR OCD Mono.
  • Contained "rogue" AI... I hope...

v0.0.14

  • Added flagging for Cybergrind runs.
  • Returns filepath display back into the status section of the stats tab, this time called "Source" and only displays the filepath starting from the ULTRASTATS data folder.
  • Added ID coloring in the stats tab based on whether or not the level challenge was completed that run. Runs with completed challenges will display ID as a gold color. (non-Cybergrind only)
  • Added Rank coloring for run flags, so when a run used cheats the rank will display as a white underscore on a green background. With major assists the rank will display as blue on white. (non-Cybergrind only)
  • Added ID coloring for run flags for cybergrind stats.

v0.0.13

  • No longer the name of player's user folder in the stats tab.
  • Image folder be compatable using r2modman, so now the icon and the easter egg should work properly.

v0.0.12

  • Added rank based font coloring in the stats viewer. So values will be colored according to the rank of that value.

v0.0.11

  • Added PluginConfigurator preferences for the main menu button corner, default ULTRASTATS tab, default STATS difficulty, and STATS ID sort order.
  • Added tabs to the ULTRASTATS main menu UI, currently there are tabs for INFO, STATS, and PLOTS.
  • Added new ways to close the ULTRASTATS main menu UI, including a top-right “X” button and the ESC key.
  • Added an in-game stats viewer in the STATS tab that reads saved ULTRASTATS files and converts stored values like Unix timestamps and run times into human-readable formats.
  • Added more readable STATS tab labels for difficulties, campaign layers, and custom bundle/level names.
  • Changed queued runs to save immediately after queueing when endscreen discards are disabled, reducing the chance of bad pending-state behavior if the player spam clicks through the endscreen.
  • Changed campaign and custom run capture to wait for complete endscreen data before queueing or saving, preventing incomplete run data from being logged when the endscreen is spam clicked.
  • Changed the main menu button icon to a less obnoxious version.
  • Changed the main menu button and all other buttons to ones that look identical or near identical to ULTRAKILL's official UI buttons.
  • Added an easter egg...

v0.0.10

  • Added a button in the main menu that gives info about ULTRASTATS as a project.
  • Fixed an issue where if Angry Level loader wasn't installed the other two loggers wouldn't work properly

v0.0.9

  • Improved long-term performance by moving everything possible off the main thread.
  • Reduced the chance of logging systems hurting game performance.

v0.0.8

  • Added async file saving.
  • Added support for custom level data saving through Angry Level Loader.

v0.0.7

  • Added a queue system for run logging.
  • Run data is now collected on the end screen, queued, printed to the BepInEx terminal, and appended to the .jsonl file when the scene changes.
  • Added an option to use the Delete key to discard a queued run instead of appending it to the .jsonl.

v0.0.6

  • Removed the difficulty clamp to improve compatibility with custom difficulties.
  • Added a configurable filepath for the ULTRASTATS data folder.
  • Added PluginConfigurator options to disable Cybergrind logging or Campaign logging entirely.