AlphaLists, overlays, gamepad focus and translations

The game UI editor for Godot and the web

Design menus, HUDs and inventories on one canvas. The same file runs natively in Godot 4 and in the browser, and your programmers get a short contract instead of a folder of screenshots.

Envy is in alpha. We're building it on our own games first and opening it to a small group from the waitlist.

The Envy editor with The Last Hunt's main menu open. The New hunt menu item is selected, its states preview on the canvas, and the Intro animation plays on the timeline.

664 × 66
Menu item
DefaultFocusPressed

Draw it. Components, states and anchors on one canvas.

Shown: the editor's v2 design, now in development. Everything on its canvas works in the current editor; screen statuses, comments and team pages are Planned.

One .envy.json file, read natively wherever your game ships

  • Godot 4 Native Controls
  • Web 28 KB runtime
  • Playable HTML Any browser
  • JSON Schema + CLI
  • Unity Planned
  • Unreal Planned

Most game UI gets built twice. Once in a design tool, then again by hand in the engine. Envy skips the second time: layout, states, data and animation live in one document that Godot and the browser both read, so what you draw is what players get.

FIG 0.1

Native controls

In Godot, Envy builds real Control nodes from the document. Focus, gamepad input and theming stay the engine's own.

FIG 0.2

One document

Layout, states, bindings and keyframes sit in one JSON file. The web and Godot runtimes both read it as is.

FIG 0.3

Game code stays put

Your code only knows event names and data paths. Restyle and re-export as often as you like and it never changes.

Lay out every screen on one canvas. Anchors and auto layout work like Godot's own containers, so nothing gets translated on export.

Root 1920 × 1080Live runtime
The Last Hunt main menu at 16:9
  • Auto layout

    Rows and columns with gap, padding and wrap. In Godot they become VBox, HBox and Flow containers.

    VBoxContainer · gap 6 · padding 0
  • Anchors

    Pin a layer to an edge, a corner or the center. One layout covers 16:9, 21:9, 16:10 and 4:3.

    Main menu · Right · Middle
  • Text styles

    The Last Hunt uses 21 shared styles, from Display to Lore. Change one and every screen follows.

    Menu · Archivo 87.5 · 30 px
  • Tokens

    Every color is a token. Change $ember and every meter, map marker and accent follows.

    $ember #f2a24e · 27 tokens
2.0ComponentsComponents docs

Build a button once. Variants, states and properties keep every copy on every screen in step.

  • Variants

    The Last Hunt's Button is one set: 4 styles, 4 states and 3 sizes. Swap an instance between them in one click.

    Button / Primary / Default / Medium
  • States

    Hover, pressed and disabled are small patches on the component, and you preview them right on the canvas.

    hover · pressed · disabled
  • Properties

    Expose a label, a toggle or a nested swap. An instance changes in one field instead of a dig through layers.

    Label · Glyph · Show glyph
  • A real library

    180 components in 30 sets ship with The Last Hunt, from glyphs and prompts to tooltips and toasts.

    180 components · 30 sets · 286 instances
3.0States & dataData docs

Bind it to the game and watch it react. Preview every state with sample data and named scenarios before a line of game code exists.

The Last Hunt boss fight HUD
  • Bindings

    Bind text, value, max, visibility, opacity and disabled to paths like player.hp.

    HP {player.hp}/{player.hpMax}
  • Scenarios

    Save named states like Low health or Boss enraged, and check each one before the game sends real data.

    Hunt start · Low health · Boss enraged
  • Events

    Buttons emit named events. Game code listens for new_hunt, never for a particular button.

    12 events in The Last Hunt
  • Actions

    Go to a screen, open an overlay, set or toggle data, or play an animation, all without code.

    goto · push · pop · set · toggle · play

Animate on a timeline that ships. Keyframes, easing and screen transitions run on the same math in Godot and the browser.

  • Record mode

    Move a layer while recording and the timeline writes the keyframe for you.

    REC · x 36 → 0 at 0.28 s
  • Seven eases

    Linear, in, out, in-out, back, elastic and step, with the same curves in GDScript and TypeScript.

    ease out · 1.4 s · Intro
  • Autoplay and loops

    Play on screen open, loop idle effects like the breathing prompt, or start one from a button.

    Breathe · loop · Press any button
  • Screen transitions

    Fade, slide or scale between screens, set per screen or per button, with reduced motion respected.

    fade · 0.3 s · every screen

Hand programmers a short contract. Export lists the events your screens emit and the data they read. Re-exporting never touches game code.

  • Godot package

    A zip with the addon, your document and a demo scene. Open it in Godot and press F6.

    addons/envy_ui/ · F6
  • Playable HTML

    One file anyone can click through in a browser. Good for playtests and for the person who signs off.

    the_last_hunt.html
  • AI handoff

    AGENTS.md, the contract, screenshots and typed Godot and TypeScript code, ready for a coding agent.

    AGENTS.md · contract · screenshots
  • Schema and CLI

    Check documents in CI with envy validate and print the contract with envy contract.

    0 errors · 0 warnings
LiveWeb runtime

Go on, press a button. This is the web runtime running The Last Hunt in your browser. Click, use the arrow keys, plug in a controller or switch the language.

Live runtime
The Last Hunt title screen
6.0RuntimesRuntime API

One file, native on both sides. Godot builds Control nodes from it. The browser builds elements from it. Neither one needs generated UI code.

Godot addon
GDScript
Nothing to compile. Godot 4.3 or newer.
Web runtime
28 KB
Gzipped, with no dependencies.
Easing curves
7
Identical in TypeScript and GDScript, so motion matches.
Validation
0
Errors in The Last Hunt's 6,087 layers, checked at every build.
7.0Craft

Fast where you spend your day. Keyboard first, with the details a game UI needs built in.

Keyboard first

One key per tool, Shift A for auto layout, and ? for the rest.

Rulers, guides and grids

Drag guides off the rulers, add layout grids and hold Alt to measure.

Every Google Font

Search the full catalog, preview it on your own title, then embed it in the document.

One token, every screen

Pick another player color and the runtime redraws every meter, marker and accent that uses it, on all 20 screens.

Document checks

Missing tokens, screens, assets and focus targets are caught before export.

Pen tool and vector paths

Draw custom shapes with bezier points. Both runtimes draw them, with fills, strokes and shadows.

8.0New in v0.3Roadmap

Shipped this month. Lists, overlays, gamepad focus, translations, component properties and live reload in Godot. Each demo below runs on The Last Hunt UI Kit.

Next, from v0.4
  • MCP server for coding agents Planned
  • Project files with external assets Planned
  • Desktop app Planned
  • Cloud projects and comments Planned
  • Unity and Unreal runtimes Planned

The Last Hunt UI Kit. 20 screens, 180 components and 6,087 layers in one file. Every frame below was drawn by the web runtime.

See all 20 screens
“The canvas is the web runtime in design mode, so it can’t drift from what ships.”
Design principle · from the Envy README
“Re-exporting a UI never touches game code.”
Design principle · from the Envy README

In alpha, opening in waves.

We use Envy on our own games today and invite people from the waitlist as it gets ready. Pricing comes later, and we'll say what it costs before it does.

Pricing

Built for games. In alpha now.

Join the waitlist for alpha access. We'll write when your spot opens.

An email when your alpha spot opens, and news when big things ship. Not much else. How we keep your email.