Configuration
Every key Ember.Configure accepts. Storage, themes, effects and window defaults, set once for the whole script.
Ember.Configure sets defaults for everything your script creates. Call it
before Ember.new.
Ember.Configure({
Storage = { Folder = "myscript" },
Themes = { Default = "Midnight" },
Window = { SaveLayout = true },
})Everything is optional; unspecified values keep their defaults.
Storage#
| Option | Type | Default | What it does |
|---|---|---|---|
Enabled | boolean | true | Set false to disable all disk writes, whatever individual controls ask for. |
Folder | string | "ember" | Folder under the executor's workspace. |
File | string | "settings" | File name inside that folder. |
Debounce | number | 0.4 | Seconds to wait before writing, so a dragged slider does not write per frame. |
Unique | boolean | false | Claim the folder, suffixing _2, _3 if another owner has it. |
Owner | string | — | Identity for that claim. Defaults to the folder name. |
Storage = false is shorthand for Storage = { Enabled = false }.
Passing Storage at all writes out anything still pending first, drops the
cached values, and reloads your saved themes from the new location.
See Saving settings.
Themes#
| Option | Type | Default | What it does |
|---|---|---|---|
Default | string | "Dark" | The theme to use when no theme has been set. A later Ember.SetTheme wins over it. |
Only | string[] | — | Restrict the selectable list to exactly these, in this order. |
Hide | string[] | — | Remove these from the selectable list. |
Custom | table | — | Name to palette. Each one is registered as the call runs. |
See Themes for the palettes and the role names.
Effects#
Covers the window dissolve and the notification animations.
| Option | Type | Default | What it does |
|---|---|---|---|
Enabled | boolean | true | Set false for no animation at all. |
RespectReducedMotion | boolean | false | Honour Roblox's ReducedMotionEnabled accessibility flag. |
Quality | string | "Balanced" | "Low", "Balanced" or "High". Scales MaxTiles and Particles by 0.6, 1 and 1.35, and shifts Samples by -1, 0 and +1. |
MaxTiles | number | 460 | Tiles the dissolve breaks the window into. Clamped to 32–460, then scaled by Quality. |
Samples | number | 3 | Colour samples per tile. Clamped to 1–3. |
Particles | number | 52 | Sparks trailing the dissolve edge. Clamped to 0–96, then scaled by Quality. |
ToastParticles | number | 14 | Sparks on a notification. Clamped to 0–24. |
MaxToasts | number | 5 | Notifications on screen before the oldest is dismissed early. Clamped to 1–12. |
RespectReducedMotion is off by default
Roblox reports that flag from an accessibility setting most players never knowingly touched. With it honoured the dissolve is gone and nothing on screen says why. Turn it on if your audience chose the setting deliberately.
The behaviour these keys tune is described in Animations.
Lowering the budget on weaker machines:
Ember.Configure({
Effects = { MaxTiles = 200, Particles = 20 },
})Or turning animation off entirely:
Ember.Configure({ Effects = { Enabled = false } })Window#
Defaults for every window created afterwards. Each can be overridden per window
on Ember.new.
| Option | Type | Default | What it does |
|---|---|---|---|
Size | Vector2 | Vector2.new(700, 452) | Starting size. |
MinSize | Vector2 | Vector2.new(560, 300) | Resize floor. |
MaxSize | Vector2 | — | Resize ceiling. Defaults to the viewport. |
Position | Vector2 | — | Where windows open. Centred if unset. |
Rail | number | 176 | Sidebar width. |
MinRail | number | 132 | Narrowest sidebar. |
MaxRail | number | 320 | Widest sidebar. |
MinContent | number | 300 | The content pane never shrinks past this. |
Search | boolean | false | Window-wide search box in the rail. |
SaveLayout | boolean | false | Remember geometry per window. |
ReapplyOnRespawn | boolean | false | Every control re-fires its callback when the character is replaced. A control can set Reapply = false to stay out. |
RevertOnClose | boolean | false | Every control is called with its off value when the window is destroyed. A control can set RevertOnClose = false to stay out. |
SafeArea | boolean | true | Keep windows inside the usable viewport. |
ReplaceExisting | boolean | true | Re-running the script replaces its window instead of stacking. |
StatusBar | boolean | table | false | Give every window a status bar. Options are listed under Status bar in the window reference. |
Reading it back#
Ember.Config.Storage.Folder --> "ember"
Ember.Config.Effects.MaxTiles --> 460
Ember.Version --> "1.0.0"
Ember.Store.available() --> whether the executor can read and write filesA typical setup#
local Ember = loadstring(game:HttpGet('https://rbx.lol/ember.lua'))()
Ember.Configure({
Storage = {
Folder = "bloxburg-helper",
Owner = "bloxburg-helper",
Unique = true,
},
Themes = {
Default = "Midnight",
Only = { "Dark", "Midnight", "Nord", "Ember" },
},
Window = {
SaveLayout = true,
Search = true,
},
})
local win = Ember.new({ Title = "Bloxburg Helper", Subtitle = "v2.1" })