The interface
Native, not a browser in a box
Many programs draw their menus with an embedded web browser: HTML, CSS and JavaScript running inside a copy of Chromium. That is convenient for the programmers. For the player it means more memory, a second process, a slower start and an interface that can lag when the game is busy.
Warcraft III: Reforged builds its menus on embedded web technology, and the Battle.net client around it does too. W4 avoids that. The menu is drawn by the game's own renderer, on the GPU, in the same frame as the world.
- In the game, every panel (minimap, unit panel, command card, chat, quest panel, settings) is W4 UI, native Rust, drawn with the rest of the frame. There is no page to load and no second process.
- In the editor, the interface is GPUI, the GPU-drawn UI toolkit that the Zed editor is built with. It is retained-mode, runs at the display's refresh rate, and handles a list of tens of thousands of rows without a stutter because lists are virtual: only the visible rows exist.
In practice the editor's command palette opens at once, panels move at full frame rate, and in the game the interface does not take frames from the world.
One style
The editor, the game and the documentation share one look: the same colours, radii and spacing, the same kinds of widget (cards, rows, chips, floating panels), the same dark and light themes. A list looks and behaves the same wherever it appears, because it is one widget called from everywhere. That is a rule of the project.
The command palette
Ctrl K in the editor opens a palette with the modules, the main commands (undo, redo, export, play, settings) and your recent maps. The goal is that every action and setting ends up in it; today it holds the main ones. The documentation uses the same shortcut to find pages, headings and API symbols.
A map's own interface
Warcraft III's custom interface means editing frame definition files or using a script API on top of them. In W4 a script calls ui.Text, ui.Button and ui.Panel from Go. Elements are anchored to a corner, an edge or the centre of the screen, drawn in the game's style, for one player or for everyone. Clicks come back to the script as function calls. See Commands and interface and the tutorial.
Built for every screen size
The game's interface is laid out in 1080-pixel design units and scaled, so the same layout works at 1080p, 1440p and 4K. It was checked on a 3840 by 2160 display during development.