Skip to content

Releases: ufna/VaCuus

VaCuus 1.0.1

Choose a tag to compare

@ufna ufna released this 16 Aug 16:48

HTML/CSS user interface for Unreal Engine, rendered off the game thread.

You author screens as .rml/.rcss documents — the web languages, not a UMG graph — and the
plugin runs them on its own UI thread: layout, styling and draw-command recording all happen
away from the game thread, which only enqueues input and reads back a snapshot. Optional
JavaScript (QuickJS) and a TypeScript/Preact workflow sit on top. Rendering goes through the
engine's RHI into a persistent render target that Slate composites, so a document can be a
full-screen HUD or a panel on a quad in the world.

What changed since 1.0

Packaging only — no runtime code changed, and a project already running 1.0 gains nothing
by updating. Fab's technical review named three things about the shape of the archive, and this
release is those three answered:

  • Every module in VaCuus.uplugin now declares its platforms (PlatformAllowList,
    identical to the plugin's SupportedTargetPlatforms).
  • The two gen_relays.sh re-vendor scripts no longer ship. They regenerate the relay
    translation units that let UBT compile vendored RmlUi and QuickJS-ng sources; they are ours,
    they run at vendoring time, and nothing in a buyer's workflow invokes them. They remain in
    the public repository.
  • Config/FilterPlugin.ini now ships, so the rules that put docs/ and Web/ in the
    archive travel with the archive that has them.

Which file do I download?

A package is stamped with the engine that built it. Take the one matching your engine
the plugin refuses to load under a descriptor it was not stamped for.

Engine Download
UE 5.6 VaCuus-1.0.1-UE5.6.zip
UE 5.7 VaCuus-1.0.1-UE5.7.zip
UE 5.8 VaCuus-1.0.1-UE5.8.zip

All three are built from this one source tree, at commit 6b601b6, which is what this tag
points at. Each archive carries a PACKAGE-MANIFEST.txt recording its commit, build time and
engine.

One disclosure about the 5.7 archive: it is the 5.6 build with the descriptor's
EngineVersion stamped to 5.7.0 — byte-identical otherwise. No 5.7 SDK exists on the
packaging host, so nothing was compiled against 5.7; 5.7 was verified separately by hand. The
archive's own manifest says this too. 5.6 and 5.8 are compiled on their own engines.

Install

The package root is the plugin folder — there is no extra directory level to strip. Drop it
so that VaCuus.uplugin lands at <YourProject>/Plugins/VaCuus/VaCuus.uplugin, then enable it
in Edit → Plugins or in your .uproject:

"Plugins": [
    { "Name": "VaCuus", "Enabled": true }
]

Your project must be a C++ project — a source install has to compile, and a Blueprint-only
project has no toolchain for it. Converting takes two minutes: Tools → New C++ Class → None.
The first editor launch compiles the modules once.

Verify it works: the console knows vacuus.M2Demo — run it and an interactive demo document
appears. Automation RunTests VaCuus runs the 227-test suite, which ships with the plugin on
purpose, fixtures and all.

docs/buyer/setup.md inside the package is the long version, including the two ways a shipped
copy differs from this repository.

What is in it

Source-only, 1027 files, no Binaries/ directory: the runtime core and its UI thread, the
record → RHI replay → Slate composite path, the JavaScript host, the editor live-reload module,
vendored RmlUi 6.x and QuickJS-ng with their licenses beside them, the shaders, the shipped
RML/RCSS documents, the optional TypeScript/Preact workspace, and the four buyer documents.

Platforms: Windows, macOS, Linux, Android and iOS. Consoles on request.

Verifying the download

cef102dc5ce65f3a1bb289b2c8efed0aacae6ceddfd23326338b0fbb6b73a159  VaCuus-1.0.1-UE5.6.zip
8cc82c63bb4ca014f555d8bf1b777db571145367ea8d64a3acf04040bbf029a6  VaCuus-1.0.1-UE5.7.zip
2ac5ff60be3e14b09561858b7f0e8037a6eaecd8881618108ad02ef6732efff8  VaCuus-1.0.1-UE5.8.zip

License

The plugin's own source is under the Business Source License 1.1 — free to read, modify and
use outside production, free in production for noncommercial purposes, and each version converts
to MIT four years after release. Commercial production use needs a purchased license; see
COMMERCIAL.md. Vendored RmlUi and QuickJS-ng are both MIT. Contributions require the CLA.

Issues and questions: https://github.com/ufna/VaCuus/issues

VaCuus 1.0

Choose a tag to compare

@ufna ufna released this 15 Aug 12:25

HTML/CSS user interface for Unreal Engine, rendered off the game thread.

You author screens as .rml/.rcss documents — the web languages, not a UMG graph — and the
plugin runs them on its own UI thread: layout, styling and draw-command recording all happen
away from the game thread, which only enqueues input and reads back a snapshot. Optional
JavaScript (QuickJS) and a TypeScript/Preact workflow sit on top. Rendering goes through the
engine's RHI into a persistent render target that Slate composites, so a document can be a
full-screen HUD or a panel on a quad in the world.

Which file do I download?

A package is stamped with the engine that built it. Take the one matching your engine
the plugin refuses to load under a descriptor it was not stamped for.

Engine Download
UE 5.6 VaCuus-1.0-UE5.6.zip
UE 5.7 VaCuus-1.0-UE5.7.zip
UE 5.8 VaCuus-1.0-UE5.8.zip

All three are built from this one source tree, at commit ac611d1, which is what this tag
points at. Each archive carries a PACKAGE-MANIFEST.txt recording its commit, build time and
engine.

One disclosure about the 5.7 archive: it is the 5.6 build with the descriptor's
EngineVersion stamped to 5.7.0 — byte-identical otherwise. No 5.7 SDK exists on the
packaging host, so nothing was compiled against 5.7; 5.7 was verified separately by hand. The
archive's own manifest says this too. 5.6 and 5.8 are compiled on their own engines.

Install

The package root is the plugin folder — there is no extra directory level to strip. Drop it
so that VaCuus.uplugin lands at <YourProject>/Plugins/VaCuus/VaCuus.uplugin, then enable it
in Edit → Plugins or in your .uproject:

"Plugins": [
    { "Name": "VaCuus", "Enabled": true }
]

Your project must be a C++ project — a source install has to compile, and a Blueprint-only
project has no toolchain for it. Converting takes two minutes: Tools → New C++ Class → None.
The first editor launch compiles the modules once.

Verify it works: the console knows vacuus.M2Demo — run it and an interactive demo document
appears. Automation RunTests VaCuus runs the 227-test suite, which ships with the plugin on
purpose, fixtures and all.

docs/buyer/setup.md inside the package is the long version, including the two ways a shipped
copy differs from this repository.

What is in it

Source-only, 1028 files, no Binaries/ directory: the runtime core and its UI thread, the
record → RHI replay → Slate composite path, the JavaScript host, the editor live-reload module,
vendored RmlUi 6.x and QuickJS-ng with their licenses beside them, the shaders, the shipped
RML/RCSS documents, the optional TypeScript/Preact workspace, and the four buyer documents.

Platforms: Windows, macOS, Linux, Android and iOS. Consoles on request.

Verifying the download

39c1bac08b7e07c6fe9f99d89089291bf574048c71eaaca8d62a01a5dcabc5c7  VaCuus-1.0-UE5.6.zip
83ebafe07ff68224898b80cb015e8db987ffbcc2bc69749f7943171866d7d59f  VaCuus-1.0-UE5.7.zip
23b4a7d5f11b2b2f1973e7b7c40990e568ddb101d11faa1bbefda060f56cd4fb  VaCuus-1.0-UE5.8.zip

License

The plugin's own source is under the Business Source License 1.1 — free to read, modify and
use outside production, free in production for noncommercial purposes, and each version converts
to MIT four years after release. Commercial production use needs a purchased license; see
COMMERCIAL.md. Vendored RmlUi and QuickJS-ng are both MIT. Contributions require the CLA.

Issues and questions: https://github.com/ufna/VaCuus/issues