Skip to content
unreal · ui

Shared Slate UI libraryKBVEUI

A shared Slate UI component library for KBVE Unreal games — game-agnostic Core + Slate visual primitives like movable frames, settings rows, hotbar, slots, tooltips, info panels, an equipment paper-doll, a loading panel, and a dev overlay HUD.

Core + Slate, dependency-light

The base module stays Core + Slate so the primitives are game-agnostic. Domain-aware UI — Supabase auth, irc chat — composes on top via KBVEUIAuth and KBVEUIChat, pulling in Engine, HTTP, and KBVESupabase only when a game links them.

  • StateFKBVEUIState panel-flag masks.
  • Dev HUDSKBVEDevOverlay FPS/ms.
KBVEUIPlugin
3Modules
UE 5.4Min engine
KBVELicense

What it gives you

Features

Visual primitives

Movable frames, settings rows (toggle / slider / combo), hotbar, slots, tooltips, and info panels.

Equipment & loading panels

SKBVEEquipmentPanel paper-doll (11 generic equip slots) and SKBVELoadingPanel full-screen loader.

UI state helpers

FKBVEUIState tracks open panels and derives cursor / movement / camera policy without re-rolling the bitfield.

Composable auth & chat

KBVEUIAuth (Supabase login / account) and KBVEUIChat (irc-gateway window) layer on the pure base.

What it ships

Overview

Shared Slate UI component library for KBVE Unreal games — game-agnostic visual primitives (Core + Slate only): movable frames, the settings frame + reusable settings rows (toggle / slider / combo), hotbar, slots, tooltips, info panels, the SKBVEEquipmentPanel paper-doll (11 generic equip slots via EKBVEEquipSlot), the SKBVELoadingPanel full-screen loader (InitialMessage + UnitLabel args, SetProgress/SetMessage), and the SKBVEDevOverlay debug HUD (self-computed FPS/ms; entity-count and ping fed via FKBVEDevOverlayIntProvider delegates so the widget needs no Engine or Mass dep — the game supplies the numbers).

Also holds UI stateFKBVEUIState (panel-flag set + cursor/movement/camera policy masks + Has/Set/Diff/NeedsCursor/BlocksMovement helpers) and KBVEUIFlag common flag bits — so a controller tracks which panels are open and derives input/cursor mode without re-rolling the bitfield. Stays Core+Slate; domain-aware UI (item-aware inventory, Supabase auth/chat) composes on top.

Layering

Modules

  • KBVEUI — base library, Core + Slate only. The agnostic visual primitives and UI state above.
  • KBVEUIAuth — Supabase auth surface (SKBVELoginWidget email/password + Discord/GitHub/Google OAuth + guest, SKBVEAccountPanel nick/avatar/sign-out). Drives UKBVESupabaseSubsystem; status/profile pushed in via setters so the game owns the auth event wiring. Login title is a SLATE_ARGUMENT. This module pulls in Engine + HTTP + KBVESupabase, so the base KBVEUI module stays pure — link KBVEUIAuth only when a game wants the Supabase UI. Hence dependency_plugins: packages/unreal/KBVESupabase.
  • KBVEUIChat — irc-gateway chat window (SKBVEChatPanel): movable frame, channel tabs, scrollback, slash commands, input history. Dispatches through UKBVESupabaseSubsystem’s chat object; inbound lines/state are pushed in via OnChatLine(FKBVEChatLineView) / OnChatStateChanged(bool) so the game owns the event-bus wiring, and geometry persistence is delegated out (OnSaveGeometry/OnLoadGeometry) — no game settings type leaks in. Shares the same KBVESupabase dependency as KBVEUIAuth.

Plugin source ships via its own PR; this entry wires it into the build/release pipeline alongside the other UE plugins.

Questions

Frequently asked

What is KBVEUI?

KBVEUI is a shared Slate UI component library for KBVE Unreal games, providing game-agnostic Core + Slate visual primitives — movable frames, settings frame and rows, hotbar, slots, tooltips, info panels, an equipment paper-doll, a loading panel, and a dev overlay HUD.

What modules does KBVEUI ship?

It ships KBVEUI (the pure Core + Slate base library and UI state), KBVEUIAuth (a Supabase auth surface with login and account widgets), and KBVEUIChat (an irc-gateway chat window), keeping the base module free of Engine and HTTP dependencies.

Why is KBVEUI kept to Core and Slate only?

Keeping the base module Core + Slate makes the primitives game-agnostic and dependency-light. Domain-aware UI such as Supabase auth or chat composes on top via KBVEUIAuth and KBVEUIChat, which pull in Engine, HTTP, and KBVESupabase only when a game links them.