User Manual¶
ShipCheck User Guide¶
This guide explains how to use ShipCheck inside Unreal Engine, how to read the results, how to create custom presets, and how to solve common problems.
Opening ShipCheck¶
Open the dashboard from the Unreal Engine main menu:
Ecal Studios > ShipCheck - Release Checklist
ShipCheck opens as a dockable editor tab. You can place it next to the Content Browser, Output Log, Project Settings, or anywhere else in your editor layout.
Running Your First Check¶
Choose a Preset¶
At the top of the dashboard, choose the preset that best matches what you are preparing.
| Preset | Best For |
|---|---|
| Game Build | General packaged game releases |
| Steam Demo | Public demos, Next Fest builds, test demos |
| Internal QA | Builds sent to testers or collaborators |
| Fab Plugin Submission | Unreal Engine plugins prepared for Fab |
| Fab Asset Submission | Asset packs prepared for Fab |
The preset decides which checks are included in the run.
Click Run ShipCheck¶
Press Run ShipCheck.
ShipCheck scans the project and fills the results list. On most projects this only takes a short moment.
Review the Readiness Score¶
The readiness score gives you a quick overview of the current release state.
A high score usually means the project is in good shape. A lower score means there are failed checks, warnings, or unconfirmed manual tasks that should be reviewed before shipping.
Do not treat the score as the only decision. Always check the result list as well.
Read the Result List¶
Each row shows:
- Status
- Check name
- Short message
- Severity
- Manual confirmation checkbox when needed
Failed checks should usually be fixed first. Warnings are often less urgent, but still worth reviewing. Manual checks need your own confirmation.
Use the Details Panel¶
Click a check result to open the details panel.
The details panel explains:
- What was checked
- Why it matters
- What ShipCheck found
- What ShipCheck expected
- What you can do to fix or confirm it
This is the most important part of the tool when you are unsure what a result means.
Confirm Manual Checks¶
Manual checks are tasks that ShipCheck cannot safely verify by itself.
Examples include:
- Testing on a clean machine
- Confirming store page text is final
- Verifying target hardware
- Checking screenshots or trailers
- Reviewing release notes
Once you have done the task, tick the checkbox in the result row.
Export a Report¶
After a run, you can export the results.
| Button | Output |
|---|---|
| Export .md | Human-readable Markdown report |
| Export .json | Machine-readable JSON report |
| Copy Summary | Short summary for chat, issue trackers, or build notes |
By default, reports are saved to:
Saved/ShipCheck/Reports/
Understanding Result States¶
| State | Meaning |
|---|---|
| Passed | ShipCheck found no issue for this check |
| Warning | Something looks suspicious or worth reviewing |
| Failed | A clear issue was detected |
| Manual | A human needs to confirm this item |
| Skipped | The current preset did not include this check |
| Not Applicable | The check does not apply to this project |
Working With Custom Presets¶
Custom presets are one of the most useful features in ShipCheck. They let you turn your own release process into a repeatable checklist.
Creating a Custom Preset¶
- Click the + button next to the preset dropdown.
- Enter a preset name.
- Add an optional description.
- Choose the automated checks you want.
- Add custom manual checks if needed.
- Save the preset.
The preset appears in the dropdown and can be used like any built-in preset.
Editing a Custom Preset¶
- Select your custom preset in the dropdown.
- Click Edit.
- Change the selected checks or manual checks.
- Save the preset.
Built-in presets cannot be edited. This protects the default workflows from accidental changes.
Deleting a Custom Preset¶
- Select your custom preset.
- Click Del.
- Confirm the deletion.
Deleted presets are removed permanently unless you restore Saved/ShipCheck/CustomData.json from a backup.
Custom Manual Checks¶
Custom manual checks are release reminders that matter to your project but cannot be fully automated.
Each manual check can include:
| Field | Purpose |
|---|---|
| Name | The visible check title |
| Explanation | Why this check matters |
| Fix Hint | What to do if it is not ready |
| Severity | How important the check is |
Good examples of custom manual checks:
- Confirm the build was tested on Steam Deck
- Verify the store screenshots are final
- Confirm the README matches the current version
- Check that the support email is correct
- Confirm the final build number is written in release notes
- Verify save files from older versions still load
Keep custom checks short and practical. They should be easy to understand when you are tired, busy, or close to a release deadline.
Check Categories¶
Project Settings¶
Checks important project metadata such as version, company name, project name, and platform icon setup.
These details are easy to forget, but they help make a project feel finished and properly prepared.
Maps¶
Checks whether the Game Default Map is set and whether the referenced map exists.
A missing or wrong default map can cause confusing packaged build problems.
Packaging¶
Reviews packaging-related setup such as build configuration and whether important release packaging options are enabled.
Debug¶
Looks for obvious debug leftovers and reminds you to review Blueprint debug output before release.
ShipCheck uses safe scanning methods and does not load every Blueprint graph into memory just to find Print String nodes. For a full Print String review, use Unreal's Find in Blueprints tool.
Assets¶
Checks common asset cleanup issues such as redirectors, oversized textures, and broken hard dependencies.
Plugins¶
Checks enabled plugins against your configured developer plugin denylist.
This is useful for catching tools or experimental plugins that should not be enabled for a release build.
Localization¶
Checks whether localization targets and culture folders are present.
This does not replace a full localization review, but it helps catch missing setup early.
Release Notes¶
Checks whether expected documentation files, such as README and changelog files, are present.
Fab Prep¶
Reviews plugin descriptor information and other submission-related details that matter when preparing a Fab upload.
Settings¶
Open ShipCheck settings from:
Edit > Project Settings > Plugins > ShipCheck
Common settings include:
| Setting | Purpose |
|---|---|
| Default Preset | The preset selected when ShipCheck opens |
| Export Folder | Where reports are saved |
| Max Texture Resolution | Threshold for oversized texture warnings |
| Developer Plugin Denylist | Plugins that should be flagged when enabled |
| Expected README Path | Path used by documentation checks |
| Expected Changelog Path | Path used by documentation checks |
| Save History | Enables or disables run history |
Release Notes Field¶
The dashboard includes a Release Notes field.
Anything you write there is included in exported reports. This is useful for:
- Known issues
- Build notes
- Tester instructions
- Version notes
- Release reminders
Example:
Known issue: controller glyphs are still placeholder images.
QA note: please test the settings menu before approving this build.
Run History¶
ShipCheck saves a summary of each run to:
Saved/ShipCheck/History.json
The history helps you see how the project changed over time.
You can use it to track readiness improvements, compare release candidates, or keep a lightweight record of pre-release checks.
FAQ¶
Does ShipCheck add anything to my packaged game?
No. ShipCheck is editor-only. It does not add runtime code, assets, or systems to your packaged game.
Will ShipCheck automatically fix my project?
No. ShipCheck is a diagnostic tool.
It tells you what looks wrong and gives you suggested fixes, but it does not change project settings, delete files, or modify assets. This is intentional, because release preparation should stay under your control.
Can I create my own custom checks?
Yes. Click the + button next to the preset dropdown and add custom manual checks inside the preset editor.
Custom checks are manual because they are based on your own release process, but you can give them a name, explanation, severity, and fix hint.
Can I edit or delete custom presets?
Yes. Select the custom preset, then use Edit or Del.
Built-in presets are read-only and cannot be changed or deleted.
Where are custom presets saved?
Custom presets and custom manual checks are saved here:
Saved/ShipCheck/CustomData.json
They persist between editor sessions.
Why does the Print String check say manual review recommended?
A full Blueprint graph scan can be expensive because it may require loading many Blueprint assets into memory.
ShipCheck uses a safer lightweight scan and recommends using Find in Blueprints for a dedicated Print String review.
Why do redirectors come back after I fix them?
Redirectors can be recreated whenever you move or rename assets.
After reorganizing content, right-click the Content folder and choose Fix Up Redirectors in Folder. It is also a good idea to do this before packaging or submitting a project.
Can I use ShipCheck on a Blueprint-only project?
Yes, but Blueprint-only projects may need one empty C++ class so Unreal can build and load C++ plugins correctly.
The class can remain empty.
Can I use ShipCheck for plugin projects?
Yes. The Fab Plugin Submission preset is built for plugin authors and checks plugin-related release items.
How do I add a plugin to the developer denylist?
Open:
Edit > Project Settings > Plugins > ShipCheck
Then add plugin names to the developer denylist.
Examples:
PythonScriptPlugin
ChaosVehiclesPlugin
Does ShipCheck support Mac and Linux?
ShipCheck is built as a C++ Slate editor plugin and does not rely on platform-specific runtime systems. It is intended to work on Windows, macOS, and Linux editor environments supported by Unreal.
Troubleshooting¶
The ShipCheck menu does not appear¶
First, check that the plugin is enabled.
Go to:
Edit > Plugins
Search for ShipCheck, enable it, and restart the editor.
If the menu still does not appear, open the Output Log and search for:
LogShipCheck
The log usually points to the reason the plugin did not load.
The plugin fails to compile¶
Check the basics first:
- Use Unreal Engine 5.5, 5.6, or 5.7.
- Make sure the full plugin folder was copied.
- Confirm the
Sourcefolder is present. - Confirm the
Resourcesfolder is present. - Regenerate project files.
- Rebuild in
Development Editor.
The most common causes are an unsupported engine version or an incomplete plugin folder.
Run ShipCheck does nothing¶
Make sure a preset is selected.
Then check the Output Log for:
LogShipCheck
If the button is disabled or appears stuck, a previous run may still be finishing.
The oversized texture check reports nothing¶
ShipCheck reads texture metadata from the Asset Registry without loading every texture.
If assets were recently imported, the metadata may not be ready yet. Try validating assets, saving the project, and running ShipCheck again.
Also check the maximum texture resolution setting. A value of 0 disables the check.
The Plugin Descriptor check says Not Applicable¶
This is normal for projects that do not contain a .uplugin file inside the project Plugins folder.
The check only applies to plugin projects.
Markdown or JSON export fails¶
Check that Unreal has write permission to:
Saved/ShipCheck/Reports/
Also confirm that you have run ShipCheck at least once in the current session. Export buttons may be unavailable until there is a result to export.
You can change the export folder in ShipCheck settings.
A custom preset is missing after restarting¶
Custom presets are loaded from:
Saved/ShipCheck/CustomData.json
Make sure the file exists and contains valid JSON.
If the editor crashed while saving, the file may be incomplete. Restore it from a backup if possible, or delete it and recreate the presets.
A custom manual check does not appear¶
Custom manual checks only appear in the preset where they were added.
Open the preset editor for that preset and make sure the check is selected.
History is not being saved¶
Check that Save History is enabled in ShipCheck settings.
The history file is written here:
Saved/ShipCheck/History.json
If the file is not created, check folder permissions for the project Saved directory.
Copyright¶
Copyright (c) 2026 Ecal Studios. All Rights Reserved.