sirjofri - Scalem - Unreal Scalability Editor

Gotta Scal'em All - Optimize Unreal Scalability the Smart Way

Balancing Unreal's DefaultScalability.ini is often a grind: endless numbers, trial & error, spreadsheets, and lots of guesswork.

Scalem changes that. It's a dedicated editor window that lets you visualize, compare, and fine-tune scalability settings—based on real data from your target machines.

No black magic. No AI buzzwords. Just clarity and control for your game's performance.

Why Scalem?

  • Save hours of trial & error – adjust values with intuitive sliders instead of juggling numbers.

  • Work with reality, not assumptions – fetch real performance data from the PCs that matter.

  • Experiment without risk – create and compare multiple scalability presets instantly.

  • Keep your pipeline clean – Scalem uses Unreal's native scalability system, nothing proprietary.

  • Get team alignment – no more subjective debates, just shared visual data.

Looking at the screenshots, by “performance data” do you mean the LastCPUBenchmarkResult and LastGPUBenchmarkResult values returned by RunHardwareBenchmark()? Because these are already pretty easy to collect from GameUserSettings.ini and are related more to the hardware, than to your game (or its scalability).

I’m asking, because when I read this part on the Fab page, my first intuition / expectation from such a plugin was that it would help collect FRAMERATE data from various machines. E.g. machine X is a bit weaker, so I target 60 FPS on “High” settings on that machine, but I only get 55 FPS, so I know that I need to tweak my “High” scalability, then retest, and so on.

From a quick glance, your plugin still does ease this process, in that you can tweak CVars via console on that specific machine, see how it affects performance in realtime, and then quickly dump these tweaked settings into a scalability config, correct?

If so, that’s cool, but still, I wonder if advertising it as being capable of “fetching performance data from PCs” won’t make some users disappointed.

Oh and BTW, when tweaking CVars in console like you suggest in the doc, bear in mind that Game Thread (CPU usage) is much less optimized in Development builds compared to Shipping builds, so you could be CPU-bound and tweaking CVars or even lowering scalability can do nothing for framerate if your perf (in said Development build) is limited by game logic, animations etc. :slight_smile:

1 Like

Hi, thanks for bringing that up!

“Real performance data” refers to the benchmark results and more data. The benchmark results are obviously important to calculate which quality level is applied to the various scalability groups. And you are right, this data is easy to get already, and in fact, Scalem uses the same mechanisms to get the benchmark results.

The other data that Scalem collects is the current scalability settings on that machine. This not only includes the quality level per scalability group, but also all CVars that are flagged as Scalability CVars.

This is important for the process that Scalem provides:

  • Build the game
  • Run the game on the target machine
  • Tune the game by adjusting the quality levels and CVars until it matches the wanted goal (visual and framerate). These settings are considered the “optimum settings” for that machine.
  • Use the Scalem runtime component to export this data
  • Copy over this data to the project’s Scalem folder
  • Use the Scalem editor to tune the Scalability.ini so that the “optimum settings” are applied automatically for all machines.

Especially for that last step, Scalem allows you to focus on the machines that currently don’t meet their goal. It provides visual widgets to adjust the PerfIndexThresholds using the benchmark values and the defined goals as a context for editing (“visual tools” slide, top left). It further gives you a visualization of the current settings in the bar plot.

For the visualizations, all the captured data is used, which is the benchmark results, the target quality levels, and detailed deviations using CVars.

I hope my documentation makes this process clear enough. I also plan to make a video that shows the process in action.

sirjofri

I’m aware of that fact, and I’ll put that into my documentation, thanks for mentioning it.

It is up to the developer if they want to adjust the CVars for Scalem or not. Some projects also have detailed CVar adjustments in the menu, which is a use case I also want to support. I hope that developers who want to go into that detail also know what they’re doing. In general, Scalem won’t help with the actual optimization and profiling.

Btw, to export the scalability data on the target machine, you’d also need to issue a console command, which would also only work in a Development build this way. You can however include a button in a menu, or use a shortcut or something. In that sense, Scalem is just a puzzle piece and the developers have to decide if and how they want to use it. That’s why I try to provide as much info as possible so you can decide if you want to buy it or not.

sirjofri

Roughly, yes. I hope I made it clear in one of my responses :slight_smile:

I’ll think about how to rephrase that part of the page.