Performance Issue: ALevelSequenceActor Construction Reads Large EditorPerProjectUserSettings.ini File Causing Frame Drops

Questions:

1. Is reading this configuration file necessary for runtime gameplay? Since this appears to be editor-specific settings (BurnIn options for Sequencer preview), is it required during packaged game execution?

2. Is there a way to prevent this file from being loaded without modifying the engine source code? We’ve explored options like:

- Creating a custom `ALevelSequenceActor` subclass

- Deleting/clearing the configuration file

- Using command-line parameters

However, the `ULevelSequenceBurnInOptions` class is marked with `UCLASS(config=EditorPerProjectUserSettings)`, and the `LoadConfig()` is automatically called by the engine during `CreateDefaultSubobject()`, making it difficult to bypass without engine modifications.

3. If reading this file is necessary, what is the recommended approach to optimize this? Should we:

- Reduce the file size by cleaning up unnecessary settings?

- Preload/cache the configuration at startup instead of on-demand?

- Use a different approach for managing BurnIn options in packaged builds?

4. Are there any best practices or alternative solutions besides modifying the engine source?

Thank you for your assistance!

Attachments Description:

- Screenshot 1: Unreal Insights showing frame drop during LevelSequenceActor creation

- Screenshot 2: Call stack showing `ALevelSequenceActor` constructor creating `BurnInOptions`

- Screenshot 3: ALevelSequenceActor creates a ULevelSequenceBurnInOptions object in its constructor.

重现步骤

We are experiencing a performance issue when playing Level Sequences in our Unreal Engine project. Using Unreal Insights, we have identified that creating `ALevelSequenceActor` instances causes noticeable frame drops/hitches.

Root Cause Analysis:

Through profiling, we discovered the following call chain:

1. `ALevelSequenceActor::ALevelSequenceActor()` constructor creates a `ULevelSequenceBurnInOptions` subobject

2. During `ULevelSequenceBurnInOptions` initialization, the engine automatically loads configuration from `EditorPerProjectUserSettings.ini`

3. In our Windows build, this file is located at: E:/unrealidols/Saved/Config/WindowsEditor/EditorPerProjectUserSettings.ini

4. The file size is several hundred KB, and reading it causes the observed hitch

Hey there,

The short answer is that this will most likely be removed in future versions of the engine, so if you can do that it will help your issue.

Is reading this configuration file necessary for runtime gameplay? Since this appears to be editor-specific settings (BurnIn options for Sequencer preview), is it required during packaged game execution?

Not necessarily, but it is possible to use burn in to capture during cooked execution. This was for the old Media Render Queue implementation.

Is there a way to prevent this file from being loaded without modifying the engine source code?

There are no options to exclude this without modifying code.

If reading this file is necessary, what is the recommended approach to optimize this?

Like we’ve mentioned above, we recommend removing the code, but if that is not possible for you loading it ahead of time can help mitigate the issue.

We do have a question, have you made further modifications and changes to the EditorPerUser file that it has gotten so large?

Thanks,

Dustin