Opening the wizard
Everything on this page lives in one editor tab.
Prefer to point at things? The visual guide is the same material as an interactive diagram of this screen, where ticking the two switches shows you which checks they turn off. This page is the searchable reference.
Open Window → PSO Autopilot Startup Setup. The banner at the top of the tab shows the installed version, for example PSO Autopilot v1.4.2. That value is read from the plugin descriptor, so after dropping in a new build it updates on the next editor launch without any code change — which makes it the quickest way to confirm which build a project is actually running.
The same settings are also reachable through Project Settings → Plugins → PSO Autopilot. The wizard is the same data with validation attached, so prefer it for setup and use Project Settings when you already know exactly which field you are changing.
Simple and Advanced are one settings object, not two
Switching Setup Mode changes which rows are visible, not which values exist. Apply Simple Setup is what copies your Simple choices down into the Advanced fields; until you press it, the two views can legitimately disagree.
The four action buttons
They run across the top of the tab. Only one of them writes content into your project.
Apply Simple Setup
Copies your Simple Setup choices into the Advanced settings and saves Project Settings. The quality preset becomes concrete numbers — items per step, frame-time budget, memory cleanup, dependency depth — and your content folders, destination level and loading screen are merged into the Advanced fields.
The merge is additive: existing Advanced entries are preserved rather than replaced, so this is safe to press on a project that has already been tuned by hand.
The same additiveness has one consequence worth knowing. If you change your Level To Open After Warmup or a content folder and press this again, the previous entry stays in the Advanced lists alongside the new one. It only adds a harmless extra warmup entry, but if you want the old one gone, remove it in Advanced mode by hand.
Validate PSO Autopilot Setup
Runs the preflight validator and rebuilds the Preflight Results list below. It reads your project — levels on disk, cook settings, the loader actor, the asset registry — and changes nothing. Press it freely.
Fix Safe Items
Runs every automatic fix that does not require a choice from you. Anything ambiguous stays as an inline Fix button on its own result row, so you decide it deliberately.
Two fixes are deliberately excluded and never run from this button:
- Generate Demo Content
- Writes over a thousand assets and takes several seconds. Nobody should get that as a side effect of pressing a fix-everything button, so it stays opt-in on its own row.
- Clear Risky Ignored Types
- Removes entries from Content Types to Ignore. Those were added on purpose, so removing them is your call, not the wizard's.
Create/Update Startup Flow
The one button that changes your project's content. In a single press it:
- Creates or opens
- the loading level — the one named in Loading Level, or a new lightweight level at
/Game/PSOAutopilot/PSOAutopilot_Loadingif that field is empty. - Sets
- that level as the project's startup level, so a packaged build boots into it.
- Creates or updates
- the PSO Autopilot Loader actor inside it, configured from your current Simple Setup.
Press it again after changing your destination level, loading screen or content folders. The loader holds its own copy of those choices, so a loader created before your last edit is stale until you re-run this.
Setup: mode and the two escape hatches
Three rows, and two of them exist to switch validation off. Both are legitimate; both are worth understanding before you tick them.
Setup Mode Simple / Advanced
Simple shows the common startup setup: a quality preset and the handful of choices most projects need. Advanced shows the full technical controls — batch size, frame budget, dependency expansion, class filters, per-platform overrides, pipeline-cache waits.
Start in Simple. Move to Advanced when a preset is close but not right, and press Apply Simple Setup first so the Advanced fields start from your Simple choices rather than from defaults.
Allow Custom Startup Level Escape hatch
By default the wizard reports an error when the project's startup level is not the PSO Autopilot loading level, and offers a Set Startup Level fix. Ticking this replaces that error with an informational warning and leaves your startup level alone.
- Tick it when
- you deliberately boot into something else first — a language picker, a legal or age-gate screen, a platform entitlement check, a publisher splash — and open the PSO Autopilot loading level afterwards.
- What you give up
- Nothing shown before the loading level opens is protected. Whatever your custom startup map loads, compiles and renders happens outside the warmup, at whatever cost it happens to have. Keep that map genuinely lightweight.
- Leave it off when
- you are not sure. The error it silences is one of the most common reasons a packaged build shows no loading screen at all: if the startup level is still your main menu, the loader never runs.
Skip Packaging Validation Escape hatch
Bypasses the cook and packaging checks the wizard performs. Two result rows change from a real check to a line stating the check was skipped:
- Destination cooking
- Normally verifies your Level To Open After Warmup is reachable by the cook — listed under Maps to Cook, or inside an Additional Asset Directories to Cook entry — and offers an Add to Cook fix. A destination that is not cooked produces a packaged build that warms up and then cannot open the level.
- Recommended content folders
- Normally checks that the folders you are warming are actually staged, and offers Add to Packaging. Folders that are not cooked contain nothing at runtime, so warmup finds nothing in them.
Tick it when your cook is driven by something the wizard cannot read: a custom BuildCookRun invocation, wildcard or generated cook lists, chunked or DLC packaging, a build server that assembles the map list, or asset-manager rules that decide what ships. In those projects the checks produce false alarms, and silencing them is the correct answer.
It hides the symptom, not the cause
These checks fail loudly for a reason. If you tick this box to make red text go away rather than because your cook is genuinely managed elsewhere, the packaged build will still be missing exactly what the check told you about — you have only removed the warning. Verify a packaged build after enabling it.
Simple Setup, row by row
These rows appear when Setup Mode is Simple. Together they describe one startup: boot into a small level, prepare a set of content behind a loading screen, then open the real destination.
Quality Preset
Chooses how aggressively preparation runs. The preset is not a vague quality slider — it sets four concrete values, which Apply Simple Setup writes into the Advanced fields:
| Preset | Items per step | Frame budget | Clean memory between steps | Dependency depth |
|---|---|---|---|---|
| Safe Startup | 50 | 4.0 ms | Yes | 1 |
| Balanced | 100 | 6.0 ms | Yes | 2 |
| Fast Warmup | 200 | 12.0 ms | No | 1 |
- Safe Startup
- Smallest batches, tightest frame budget, memory cleaned between every step. For large or memory-sensitive projects, and for consoles and mobile.
- Balanced
- The recommended default, and the only preset that expands package dependencies two levels deep — so it discovers more content from the same folders.
- Fast Warmup
- Largest batches, most frame time, no cleanup between steps. Finishes soonest and peaks highest in memory. Best for smaller projects.
Dependency expansion, soft references and management references are enabled in every preset; only the four values above differ.
Loading Level
The lightweight level the game boots into. It holds the PSO Autopilot Loader actor and your loading screen, runs the warmup, then opens the destination. Leave it empty and Create/Update Startup Flow will create one at /Game/PSOAutopilot/PSOAutopilot_Loading.
Keep it close to empty. Anything in this level loads before the warmup starts, which is the one part of startup the warmup cannot cover.
Level To Open After Warmup
Where players land when preparation finishes — usually a main menu, sometimes a hub or the first playable map.
This field is a destination, not a scan list
The most common misreading of this screen is treating it as "the map PSO Autopilot should warm". It is not. It is registered as a warmup seed, so its references are pulled in, but the substantive warmup set comes from Content to Prepare. A project that sets only a destination and no folders will warm very little — and the preflight list says so, on its own row.
It must also be different from the loading level, and reachable by your cook. Both are checked below.
Loading Screen
The widget shown while preparation runs. Leave it empty to use the built-in screen, or point it at your own UserWidget. The wizard can generate an editable template for you from the loading-screen result row.
To drive your own progress bar and status text, implement the PSO Autopilot Loading Screen Receiver interface on the widget; the loader pushes progress, a friendly summary and a technical status string into it as the warmup advances.
Content to Prepare
The folders whose assets get discovered and warmed. This is where the actual PSO coverage comes from, and it is the row most worth spending time on.
Add folders that contain things which use materials — maps, meshes, character and weapon Blueprints, widgets, VFX — not just the material folders themselves. A material on its own does not tell the engine which mesh, vertex factory and render pass it will be drawn with, and those combinations are what a PSO actually is. The validator warns when your selection is material-heavy for exactly this reason.
Entries are package paths, and the browse button does not write one
A valid entry looks like /Game or /Game/Characters. The folder browser next to each row writes the folder's location on disk instead — something like D:/Projects/MyGame/Content/Characters.
From 1.4.2 such a path is converted for you, and editing the row stores the converted value permanently. On 1.4.1 and earlier it was accepted by the wizard but matched nothing at runtime, so the packaged build prepared none of that content while this screen still showed every check green. If you are on an older build, type the package path rather than browsing to it.
If a row still shows a drive letter after you edit it on 1.4.2, that folder is outside the project and plugin content trees and cannot be prepared at all.
Skip When Already Prepared
Fingerprints the content set after a successful warmup. On later launches, if the fingerprint still matches, preparation is skipped and the game goes straight to the destination.
Leave it on for shipping: it is what makes second and later boots fast. Turn it off when you are measuring warmup behaviour and want every launch to do the full work, otherwise your second test run measures nothing.
Prepare Textures Early
Pulls texture data in during the loading screen so the first frames of gameplay are less likely to show streamed-in pop. Costs loading time and memory during warmup in exchange for a cleaner first impression.
Editor Iteration Mode
Decides what happens when you press Play in the editor. Packaged builds ignore this setting entirely.
- Use Unreal Editor Compilation
- The default, and the right choice while working. PIE bypasses PSO Autopilot and uses Unreal's normal editor shader compilation, so you are not waiting through a warmup on every Play.
- Run PSO Autopilot Warmup
- Runs the full startup flow in PIE so you can watch it. Use it to check your loading screen and progress reporting, then switch back.
Why PIE and a packaged build disagree
These two environments are not comparable by default, and this row is only half the reason. The other half is content: PIE enumerates uncooked editor content, while a packaged build only sees what was cooked and staged. A setup that looks rich in the editor can still discover very little once packaged. Treat the packaged log as the source of truth.
Min PSO Queue To Wait Advanced, shown in Simple
How large the engine's pipeline-cache backlog must be before PSO Autopilot waits for it to drain at the end of warmup. That wait is what the final progress band from 0.95 to 1.00 represents.
Lower it to make that phase appear for smaller backlogs while validating. Raise it so already-warm boots skip a tiny tail of work and stay snappy. The default is 50.
Reading Preflight Results
The list below the settings panel. Each row is one check, with a severity and sometimes a fix.
- OK
- Checked and correct. Some OK rows are informational rather than a pass — a check skipped because you enabled Skip Packaging Validation also shows as OK, and says so in its text.
- WARN
- The setup will run, but probably not the way you intended. Material-heavy content selection, a loading level that is also the destination, or repeat-run skipping being disabled.
- ERROR
- Something is wrong that will affect a packaged build: a missing destination level, a destination that is not cooked, no usable content folders, a missing or stale loader actor, or a startup level that is not the loading level.
Rows worth reading carefully
- Discovery preview
- Reports how many warmable assets your Content to Prepare folders actually resolve to, broken down by type. This is the closest the editor gets to predicting the packaged result. If it says the preview only found the destination seed, your folders are contributing nothing.
- Loader matches Simple Setup
- The loader actor stores its own copy of your choices. This row goes red when you have changed a setting since the loader was last written — press Create/Update Startup Flow to resync it.
- Entire /Game set to always cook
- An error, not a warning. Cooking all of
/Gameinflates packaging time severely, and the fix button removes just that entry. - Demo content
- Offers to generate a sample project you can watch the warmup run in. It needs the engine's Python Editor Script Plugin enabled, and it never runs from Fix Safe Items.
A first run, in order
From an untouched project to a packaged build you have actually verified.
- Pick a destination. Set Level To Open After Warmup to your main menu or first playable map. Leave Loading Level empty and let the wizard create one.
- Choose a preset. Balanced unless your project is large or memory-constrained, in which case Safe Startup.
- Add content folders. Type package paths such as
/Game/Characters. Favour folders holding maps, meshes, Blueprints, widgets and VFX over material-only folders. - Press Apply Simple Setup. Your choices are written into the Advanced fields and saved.
- Press Create/Update Startup Flow. This creates the loading level, makes it the project startup level, and writes the loader actor.
- Press Validate. Work the list top to bottom. Use Fix Safe Items for the automatic ones, then handle each remaining row on its own merits.
- Watch it once in PIE. Set Editor Iteration Mode to Run PSO Autopilot Warmup, press Play, confirm the loading screen appears and progresses, then set it back to Use Unreal Editor Compilation.
- Package and run it. This is the only step that proves anything. Check the log for
Warmup asset discovery details:and confirm the asset count resembles what the discovery preview promised.
When the wizard is green but the game is not
Every check passing means the editor could not find a problem. It does not mean the packaged build works, and the gap between those two is worth knowing.
If a packaged build goes from black screen to your destination level with no loading screen visible, work through these in order:
- Did the loader run at all?
- If the project startup level is not the loading level, nothing starts. Check whether you have Allow Custom Startup Level ticked — that is the setting which turns this from an error into a warning you may have scrolled past.
- Did it have anything to do?
- A warmup with almost no content finishes within a frame or two, so the loading screen is created and dismissed before it can be seen. In the log,
Warmup asset discovery details:reportsscanDirsanddirectoryAssets. A non-zeroscanDirswithdirectoryAssets=0means your folders reached the runtime and contributed nothing. - Are the folders package paths?
- On 1.4.1 and earlier, a folder chosen with the browse button is stored as a filesystem path and matches nothing at runtime while still passing every check on this screen. See Content to Prepare above.
- Was the content cooked?
- Folders that were not staged are empty at runtime. If you have Skip Packaging Validation ticked, the wizard is no longer checking this for you.
- Is the loader current?
- The loader actor holds its own copy of your settings. If you changed anything after creating it, press Create/Update Startup Flow again.
The log lines to search for
In a packaged run, LogPSOAutopilot prints Warmup settings: at the start, then Warmup asset discovery details: with the full breakdown, followed by a sample of the scan folders and discovered assets. Those three lines answer almost every "why did nothing happen" question without guesswork.