Skip to content

Getting Started ​

You can work in the browser or in Opal Desktop. Same editor, same games.

WhereHow
BrowserOpen https://opal-engine.com/create, sign in, and start a project. It saves to your account.
DesktopDownload Opal Desktop, then create or open a project folder on your computer. You can work offline.

Ship a playable arcade build when you're ready. Publishing needs a signed-in account in the browser editor. On Desktop, use File → Cloud Sync… to move a folder to your account first.

Using Opal ​

The core loop is small: open the editor, place something, press Play, save. Everything below builds on that.

First launch ​

  1. Open the editor: Editor in the site nav (/create), or Opal Desktop.
  2. In the browser, sign in — you'll land on the launcher. Pick a project or create a new one. On Desktop, create a local project or open an existing project folder.
  3. In the editor top bar, confirm the Project picker shows the project you want. The launcher lets you choose an existing project, start a New Project, or import one with Open Project.
  4. Open the Scenes panel in the left dock and rename the opening scene — or leave it as My Scene and keep moving. The top-bar Scene picker is a quick switch; management (create, rename, duplicate, delete, start scene ★, reorder) lives in the Scenes panel.
  5. Press Play in viewport (▶ in the transport controls, center of the top bar) to confirm the scene runs. Press Stop (■) to return to editing.

That's it. Everything from here is additive: art, variables, Flow, UI, publishing.

Your work autosaves as you edit — there's no ceremony. File → Save (⌘S / Ctrl+S) forces an immediate save if you want one, but you don't need to remember it.

Projects ​

The Project picker in the top bar shows the active game. It controls which project's scenes, GameState, assets, and publishing metadata you're editing.

ActionWhere
Switch projectProject picker → pick a project
Create projectProject picker → New project
Rename projectProject picker or launcher → rename
Delete projectLauncher / project management
Open a .opal fileFile → Open Project…
Recently openedFile → Open Recent (up to 5, with scene counts)
Ship to the arcadeFile → Publish to Arcade…

A project contains:

  • Ordered scene list and a start scene (★ — which scene players see first; list order is authoring order, Go To Scene drives the player path)
  • GameState variables — Number, True / False, Text, List, Object, with Session / Saved / Scene lifetime
  • Scripts — OpalScript classes and reusable Behavior Components (opal.component(...))
  • UI definitions
  • The shared asset library (images, sounds, prefabs, characters, .ssb bundles)
  • Art, Sound, and FX (particle) graphs (each persists on the project record)
  • Publishing metadata and optional arcade listing

Scenes, assets, and input bindings are scoped to the project. Switching projects swaps all of them together.

Scenes ​

Every project holds one or more scenes. Use the two surfaces that look similar but do different jobs:

  • Scene picker (top bar, next to the Project picker) — quick switch. Click to jump to another scene in the same project.
  • Scenes panel (left dock, the Scenes workbench) — manage. This is where you create, rename, duplicate, delete, set the start scene, reorder by drag-and-drop, search, import, and see Unassigned scenes that live in storage but aren't in any project.

Typical work in the Scenes panel:

ActionHow
New scene+ New Scene
Import a scene fileImport…
Open a sceneClick the scene name
Set start sceneClick ☆ / ★ on the row (the start scene is where players spawn)
Rename / duplicateRename / Duplicate on the row
DeleteDelete on the row (the last scene in a project can't be deleted)
ReorderDrag the row to a new position
Find a sceneType in Search scenes…
Rescue an orphanUnassigned section → Add to project

Each scene stores its own objects and hierarchy, Object Flow and Scene Flow, motion and rig data, UI references, background, and physics settings. The project owns the order; the scene owns the content.

Top-bar menus ​

Three menus matter most:

MenuWhat lives there
FileSave, Import Scene…, Open Project… (browser) / Open Folder… (Desktop), Export Scene, Export Game, Publish to Arcade… (browser), Cloud Sync… (Desktop)
AddAdd Art (drop images straight onto the stage), Library (import to the library without placing), Sounds
HelpTutorials & Guides, Keyboard Shortcuts, Customize Quick Actions…, Console, Problems, What's new, About Opal

If you're looking for a backup or a publish, it's in File. If you're bringing new art or sound into the game, it's in Add.

The top bar also holds the Project and Scene quick-switch pickers, the workspace tabs (Arrange / Flow ▾ / Animate ▾ / Create ▾ / Scripts / UI), and the play transport (Play in viewport / Fullscreen / Stop / Stats). Variables and Input are in the bottom shelf beside Saved; Agent opens the project assistant.

Adding content ​

Start from Add, then refine:

EntryWhat it does
Add ArtOpens a file picker; chosen images land on the stage immediately and are added to the library
LibraryImports images into the asset library without placing them — pick them from the left asset drawer later
SoundsOpens the Sounds manager for importing or browsing audio assets

From there:

  • Open the left asset drawer to drag in images, prefabs, character assets, audio, or .ssb sprite-sequence bundles.
  • Use Create ▾ → Art when you need to slice a sprite sheet or assemble frame animation before placing it.
  • Use Create ▾ → Sound when a clip needs trimming, layering, normalizing, or baking before you wire it in Flow.
  • Use Create ▾ → Pixels for pixel-art frames and FX for particle looks — same idea, different medium.

A useful habit: import loose art through Library, compose it in Art/Pixels/Sound, then place the baked result. Raw drops are fast but harder to reuse.

Play mode ​

The transport in the top bar is always visible:

ControlAction
Play in viewport (▶)Runs the game inside the editor canvas
Fullscreen play (⛶)Runs edge-to-edge; editor chrome hides
Stop (■)Ends the session and restores the editor (play state is discarded)
StatsToggles the runtime stats overlay (frame time, draw calls, etc.)
FlowToggles the live graph overlay while the game is running

While playing, input, physics, animation, Flow, audio, components, and UI all run exactly as they will for players. Stop tears the play world down — nothing you changed during play is saved.

Test constantly. A one-object scene with one Flow rule is easier to fix than a large, untested level. Keep Stats or Flow on while you iterate so regressions are visible, not guessed at.

Undo and redo ​

Almost every edit is undoable:

  • Undo: Ctrl+Z / ⌘Z
  • Redo: Ctrl+Y or Ctrl+Shift+Z

What participates:

  • Object transforms, inspector fields, hierarchy changes, and component edits
  • Flow graph edits (scene history — adding, wiring, or moving nodes)
  • Art, Sound, Pixels, and FX graph edits (each canvas keeps its own scoped history while it's active — Ctrl+Z there rewinds the canvas, not the scene)
  • Motion keys and related clip edits

When you're typing inside a text field or the Scripts editor, Ctrl+Z rewinds that field, not the scene history. The toolbar ↩ Undo / ↪ Redo buttons preview whether an undo is available — they disable when there's nothing to rewind.

Saving, exporting, and backups ​

You don't have to think about saving, but it helps to know where it happens:

MechanismWhat it does
Autosave (browser)Debounced writes of the active scene to your account
Save (Desktop)Writes the project into its folder on disk. File → Save Project (⌘S / Ctrl+S)
File → Save (browser)Flushes any pending autosave immediately
File → Cloud Sync… (Desktop)Upload, download latest, or sync this folder with your Opal account
File → Export SceneDownloads the active scene as opal-scene.opal
File → Export GameDownloads the whole project as a .opal backup — all its scenes, GameState, scripts, and a union asset bundle
File → Publish to Arcade…Ships the current build to the hosted arcade from the browser editor; Manage Arcade Listing… edits the store page without re-shipping

Before Export Game and Publish to Arcade, Opal runs a Problems check (missing covers, broken scene refs, orphan asset references, etc.). If something's wrong you'll get a dialog that lets you fix it or continue anyway — the check is advisory, not a trapdoor.

Keep a periodic Export Game even while the project lives on your account or in a Desktop folder — it's the milestone backup you can reimport with File → Open Project… (browser) or by opening the folder (Desktop).

Global variables ​

Open Variables in the bottom shelf to declare project-wide GameState fields. Every entry has a name, a type, a lifetime, and a default.

TypeExamples
Numberscore, coins, timeLeft
True / FalsehasKey, bossDefeated
TextplayerName, currentQuest
Listinventory, waveQueue
Objectplayer, currentTarget
LifetimeMeaning
Session (default)Resets when play starts; kept across Go To Scene
SavedRemembered between plays
SceneResets every time a scene starts

Object Flow, Scene Flow, UI Data bindings, and scripts all read and write the same GameState. For per-object state, use the Inspector Variables card. Write from Flow with Add Counter / Set Value; read with Get Value or =GameState.score. A score label is Source → GameState in that Data bindings card.

See Variables and GameState.

Learn while editing ​

Open Help → Tutorials & Guides or Help → Keyboard Shortcuts to land on the hosted learning pages (/learn and the manual section on shortcuts) in a new tab. When something's broken, Help → Problems and Help → Console open their dock panels right inside the editor, next to the Scenes and asset views — no tab switch required.

Example ​

From an empty scene to a running game in five steps:

  1. Add → Add Art — place one image on the stage.
  2. Variables — create a score number variable defaulting to 0.
  3. Select the art, open Object Flow, add On Tap → Add Counter (score, 1).
  4. Press Play in viewport and tap the art.
  5. Press Stop, then File → Export Game for a backup.

Want the number on screen? Add a Text label and bind it with Data bindings → GameState → score. UI and HUD walks that picker.

Build your first game expands this into the full coin collector.

See also ​