Skip to content

Project & Editor Settings ​

Project Settings holds the values that belong to the whole project and ship with the game: the fixed clock, physics mode, quality levels and render layer names. Editor Settings holds the one setting that belongs to this browser instead.

The two dialogs are split on purpose. Project Settings is saved in the .awaken file and every edit in it is an undo step; Editor Settings lives in this machine's browser storage and never reaches the project.

Opening Project Settings ​

Open it from File ▸ Project Settings… in the Toolbar. Every render-layer mask popup (the Scene view's Layers menu, a Camera's cullingMask, a MeshRenderer's renderLayers) also ends in an Edit layer names… button that opens it.

The dialog is one scrolling page with four sections, in this order: Time, Physics, Quality, Render layers. Close it with Done, a click on the backdrop, or Esc (when the cursor is not in a text box). Nothing needs confirming: each change is applied and recorded as it is made, and ⌘Z undoes it like a scene edit (Edit Time settings, Edit Quality settings, or a layer rename).

The Project Settings dialog scrolled to the top: the Time section (Fixed rate 60 Hz, Max steps 5, Probe delay 2) and the Physics section's two checkboxes, with the start of the Quality section below.

Time ​

The fixed clock that Simulations always step on and that onFixedUpdate(api, dt) runs on, once per step. A frame owes the steps its real time covers; past the per-frame cap the extra time is dropped from the clock rather than from the game, so a slow frame slows the game down instead of skipping steps. See Time & the fixed clock.

FieldDefaultRangeWhat it does
Fixed rate60 Hz1–240Fixed steps per second. A step's dt is always 1 / this.
Max steps5 a frame1–20The most fixed steps one frame runs. A frame owed more slows the game.
Probe delay2 steps0–16Fixed steps between a Texture Probe's copy and a script reading it with api.probe(entity). 0 waits for every step's readback, so the game runs at most one step a frame.

Values are rounded to whole numbers and clamped to the range when you commit them (normalizeTimeSettings in packages/runtime/src/fixedClock.ts). A project whose Time settings are all at their defaults saves nothing for them.

Physics ​

Two switches, stored with the Time settings.

FieldDefaultWhat it does
Fixed clockoffOn: physics steps on the fixed clock (dt = 1 / Fixed rate), right after that step's onFixedUpdate. Off: physics steps once a frame on the frame's time, as every project made before the switch existed did.
2DoffDynamic bodies move in X and Y only and turn about Z only. See 2D Games.

Quality ​

Quality levels are named sets of cheaper settings a device can run, so a phone that cannot keep up runs the same project with less work. A level changes three things over the project's own values:

  • Render scale - the canvas resolution, over Render Settings' own (0.25 to 1). Blank shows "(the project's)".
  • Each render texture's size, as a fraction of its own width and height (0.05 to 1). The row shows the result, for example of 512x512: 256x256.
  • Each Simulation update step's passes per fixed step (1 to 256), one row per update step of every Simulation asset.

A project starts with no levels: the dialog says "No levels: the project runs as authored." Add quality levels creates two: High (the project as authored) and Low, a copy to make cheaper. After that the button reads Add a level (a copy of the one selected) and names the copy <name> copy.

Each level row has:

  • a radio button on the left that picks which level the editing card below shows;
  • the level's name, committed on blur or Enter and put back on Esc (a name another level already has is refused);
  • a default radio: the level a device runs until the game chooses one;
  • Remove.

Preview picks which level the editor's Scene and Game views run: "the default (High)" or any level by name. It is a session value and is never saved. Changing it resets every Simulation to step 0, and a script calling api.quality.set(name) in the editor changes it too.

A device runs, in order of precedence: the URL's #awaken-quality=<name> (for testing on a device), else the level the game chose with api.quality.set (saved), else the project's default. Lowering a Simulation's resolution or passes changes what it computes, not only how it looks, so check a game's outcomes at each level it ships.

The Quality section after Add quality levels: two levels, High (default) and Low, Low selected for editing with its Render scale row, the Add a level button and the Preview dropdown.

Render layers ​

The 32 render layers a Camera's cullingMask and a MeshRenderer's renderLayers choose between. A camera draws the objects whose render layers share at least one layer with its culling mask; the Scene view's Layers menu does the same for the editor camera. See Render textures & layers.

  • Layer 0 is always Default and cannot be renamed.
  • Layers 1–31 start unnamed (shown as "(unnamed)"). Type a name and commit it on blur or Enter; Esc puts the old name back. Each rename is one undo step.

Names are labels for you. The project stores the layer number, so renaming a layer never changes what any camera draws. A mask popup lists every named layer, plus any unnamed layer whose bit is set (as Layer N), and summarises the mask on its button as Everything, Nothing, up to three names, or Mixed (N).

Editor Settings ​

File ▸ Editor Settings… opens this machine's settings. The menu item, and the dialog's only setting, exist only in an editor build that sends usage stats (built with VITE_USAGE_STATS_URL); in any other build the menu item is not there.

FieldDefaultWhat it does
Usage statsonSends usage counts and error reports to Raiblin with a random install ID not linked to you: no projects, file names or personal details. Turning it off deletes the install ID and anything waiting to send. A Privacy link opens https://awaken3d.dev/privacy.

The setting is stored in this browser, not in the project, so opening the same project on another machine does not carry it. Close the dialog with Done, the backdrop or Esc.

See also ​

Awaken: browser-native WebGPU game engine.