Everything OPAL Does

One desktop app, five tightly-integrated systems. Scroll through to see how each one works — or jump straight to the section that matters to you.

Built around how O3DE actually works.

OPAL isn’t a re-skin of the O3DE Project Manager. It’s a ground-up rethink of what a launcher for a modern engine should do. Every feature below exists because we hit a wall with the stock tooling — and we fixed it.

Engines

Every O3DE version, one click away

Install straight from the launcher

OPAL reads O3DE's release metadata on startup. Pick the latest stable, or any prior release, and OPAL downloads and installs it — no web scrubbing, no wrong-platform zips.

Key selling point: you don't need to visit the O3DE website once. Download OPAL, and the engine follows.

Pin to older versions

Your ship build needs 24.09. Your prototype uses main. OPAL keeps them both installed, both selectable, both working — without symlink gymnastics.

Installer or source — your call

Prefer the binary installer for speed? One click. Want to build from source so you can patch the engine? Also one click. OPAL handles the Git clone, the CMake configure, and the build, end-to-end.

Many engines, zero conflict

Each engine lives in its own directory, with its own O3DE manifest, registered independently. Projects pin to a specific engine. Switch freely — nothing else moves.

Prune without regret

Removing an engine is a guarded action with an impact preview — "this will orphan 2 projects". OPAL tells you what's at stake before you reclaim the disk space.

Projects

Command center for every game you're working on

New projects in a dialog, not a CLI

Pick a template, name it, choose an engine, pick a location. Done. The `project.json` gets written correctly, the project registers automatically, and you're looking at it in the list a moment later.

Import what you've already got

Point OPAL at any existing O3DE project folder. It reads the manifest, detects the engine pin, and adds it to your list. Works for projects you built in the stock Project Manager, too.

Custom build commands per project

Override CMake generator, toolchain, config (debug/profile/release), and any additional arguments. Save presets. Run one build command in the UI and a completely different one from CI — no copy-paste.

Choose your cores

Crank it to all-cores for a solo dev machine. Cap it at 4 so you can keep working while the CI image builds in the background. Every project remembers its own setting.

You always know the state

Project cards show status at a glance: Not built · Building · Built · Build failed · Open. Missing-engine warnings surface immediately. Logs one click away. No guessing.

Missing-engine guards

Deleted the engine a project needed? OPAL flags the project, tells you which engine is missing, and offers to reinstall it or remap to a compatible version.

Gems

Advanced asset management, per project

Find gems fast

Full-text search across name, description, and tags. Advanced filters: author:, tag:, engine:, category:. The stuff you need is never more than a few keystrokes away.

Repositories, managed

Add any gem repo by URL. OPAL indexes it, refreshes it on schedule, and keeps a local cache so you can browse offline. Private repos with auth? Supported.

Per-project gem editing

Open a project's gem list. Toggle gems on and off. OPAL updates `project.json` and the CMake gem list in sync. No more hunting through multiple files to enable one gem.

Inspect before you install

The Gem Inspector shows README, dependencies, supported engine versions, changelog, and screenshots — all before you commit disk space. Know what you're adding before you add it.

Shared gem storage

Install a gem once, use it in every project. Configure a central gem directory, keep your SSD lean, and let OPAL reference the same gem binary from multiple projects.

Queues

Interrupt-safe downloads & builds

Pause anything, any time

Every download and every build can be paused and resumed. Not cancelled — paused. The bytes you already have stay on disk. The CMake configure you already ran doesn't get thrown away.

Survives everything

Close OPAL. Reboot. Lose Wi-Fi. Your downloads pick up from the last committed byte. Your builds pick up from the last-successful incremental step. No lost hours.

Move to top in one click

Ship build needs to go first? Drag it to the top, or hit the Move to Top button. The queue respects you; it's not a conveyor belt.

How many at once? You choose

Configure max concurrent downloads and max concurrent builds independently. Ballpark: 4 downloads in parallel on good internet, 1 build at a time on a laptop, 3 on a workstation.

Throttle when you need to

Set a global speed cap on downloads so OPAL doesn't murder your Zoom call. Per-queue caps also supported.

Let it run overnight

Schedule downloads to run only during off-hours. OPAL respects the window — pauses at open, resumes at close. Your bandwidth, your schedule.

Settings

Deep customization — without the overwhelm

Override O3DE defaults, safely

Default CMake generator. Default build configuration. Default editor launch flags. OPAL stores these at the launcher level so every new project inherits sane defaults you've already dialed in.

Where things live

Configurable paths for engine installs, project workspace, gem storage, and repository cache. Move gem storage to a fast external drive. Keep engine installs on the system disk. It's your machine.

Looks the way you want

Light / dark / system theme. Accent color. Sidebar width. Compact or comfortable density. The whole app respects system preferences out of the box.

Tell me what I need to know

Native OS notifications when downloads complete, builds finish, or something fails. Configurable — toggle categories on and off. Do-not-disturb respects your OS quiet hours.

Take your config with you

Export your OPAL config to JSON. Import it on another machine. Share a team baseline. Configuration is data, not trapped state.

Resilient by design

OPAL is built on the assumption that things go wrong. Your Wi-Fi drops. Your laptop sleeps. The power flickers. The launcher crashes. Every one of these scenarios should result in no lost work.

ScenarioWhat OPAL does
Wi-Fi drops mid-downloadRetries with exponential backoff; resumes from the last committed byte
Laptop sleeps during a buildBuild picks up from the last-successful incremental step on resume
Launcher crashesQueue state and partial files persist; next launch rebuilds the queue intact
User hits Cancel by mistakeConfirmation guard; restore-from-trash for cancelled partial files
Engine folder deleted externallyProjects pinned to that engine flag the mismatch; offer one-click reinstall
Gem repo goes offlineLocal cache continues to serve gems you’ve already indexed