Game UI should be something developers can assemble, not something they have to reinvent before they can test the game itself. Game UI Kit is an open-source Godot package for common interface primitives that are easy to theme, skin, and extend.
Why another UI kit?
Every small game eventually needs the same family of interface elements: a start button, a panel, a health or progress bar, a settings control, a pause surface, and a handful of status indicators. The details change from game to game, but the underlying work repeats.
I want a reusable starting point for that work. The kit should make it possible to drop a component into a Godot project, give it a theme, and get a sensible result immediately. It should also stay out of the way when a game needs something more specific.
The important word is kit, not template. This is not intended to dictate what a game looks like. It should provide the structure and states that are easy to get wrong, while leaving the visual identity to the project using it.
Live catalogue
The UI is built once in Godot and exported for the web.
The browser export is coming next.
Run scenes/Showcase.tscn in Godot to explore the current kit while the first web build is prepared.
The first component set
The initial showcase is deliberately small. It demonstrates the primitives that help establish a usable game UI quickly:
- Themed buttons with primary, secondary, hover, pressed, focus, and disabled states
- Panel surfaces for cards, modal windows, HUD containers, and menu sections
- Progress bars for health, XP, stamina, loading, and match progress
- Toggle controls for settings and binary game options
- Shared theme tokens for colors, spacing, padding, and corner radii
These are not meant to be the final component list. They are the first test of the design rule: can a single visual vocabulary make several different controls feel like they belong to the same game?
Theme once, skin everywhere
The kit uses a central GameUITheme resource for its first set of visual tokens. A consuming game should be able to replace the palette without opening every component scene and hunting for hard-coded colors.
The current resource includes tokens for:
- background and surface colors;
- raised surfaces and borders;
- primary and muted text;
- accent and pressed states;
- success and warning feedback;
- corner radius, spacing, and panel padding.
That list will grow as the kit becomes more complete. Typography, iconography, focus treatments, and animation timing are all likely candidates for the next layer of the theme contract.
A new skin should be a resource change, not a scene-by-scene rewrite. If changing the theme requires editing every control, the kit has not done its job.
Built in Godot, not recreated in the website
I considered making a second set of Astro components to demonstrate the kit. That would have produced a nice-looking project page, but it would also have meant maintaining two implementations of the same idea.
Instead, the plan is to build the showcase once in Godot and export it for the browser. The project page can then embed the real catalogue rather than an approximation of it. The website describes the kit and gives it a home; the Godot export remains the source of truth for the components.
The first page currently shows a friendly fallback while the browser export is prepared. Locally, the showcase lives at:
/Users/nilssanderson/Projects/Godot/game-ui-kit/scenes/Showcase.tscnThe source project is intentionally independent of Rugby Runner. Rugby Runner is a useful example of the sort of game that needs reusable UI, but the kit should be usable for an adventure game, a puzzle game, a strategy game, or a prototype that does not have a sport theme at all.
Open-source direction
The package should be easy to understand before it is large. Each component needs a clear scene or script, a small set of documented inputs, and an example of how to override the default theme. I would rather have six components that are pleasant to reuse than thirty components with unclear ownership and hidden assumptions.
The early roadmap is:
- Make the current primitives package-ready with instantiation examples.
- Add menu, pause, settings, inventory, dialog, and notification patterns.
- Support keyboard/controller focus alongside touch-friendly layouts.
- Include dark, light, and high-contrast starter themes.
- Add a tested Godot web export for the live catalogue.
- Add visual and interaction checks so changes do not quietly break states.
Licensing is still to be decided before the first public release. The project is being structured as an open-source package from the beginning so that decision does not have to be retrofitted later.
What I am looking for in feedback
The useful feedback will not be limited to requests for more controls. I want to know whether the theme boundary feels right, whether the default states are clear, whether the components are easy to instance from another project, and where a real game would need a hook that the current kit does not expose.
The success measure is simple: start a new Godot project, bring in the kit, apply a theme, and have a coherent first menu or HUD before the game-specific systems are finished.
This is the beginning of that experiment. Build the UI once, skin it easily, and spend the saved time making the game itself.