Aperture UI
Getting Started

Project Structure

The project structure of a ApertureUI Project

Typical Output Structure

When deploying your application with Aperture UI, there is a certain way your application directory needs to be setup for Aperture to find everything it needs to run.

If your application has a package-based system (e.g. .pak for Unreal Engine games, .resources for idTech, etc...), You are required to pass a inherited interface from IAPCFileSystem to the Engine Platform, so Aperture UI can read the information it needs from your package system.

A Typical Output Structure for a non-package-based system would be listed here:

myoutput/
├── resources/             # Your markdown content
   ├── icudtl.dat         # ICU data
|   |── resources.pak      # ICU data
|   |── snapshot_blob.bin      # V8 data, only required on Windows & Linux
   └── docs/            # Documentation pages
├── apertureuihtmlengine.dll # APHTML (The HTMLEngine)
├── apertureuiharrlowengine.dll # Harrlow (The Graphics Engine)
├── apertureuideveloperengine.dll # (OPTIONAL) (The Developer Engine,)

What we use in our engine (package-based):

myoutput/
├── uiresources.vresources # Package that contains all of the ICU & V8 Resources.
├── uicontent_*.vresources # Package(s) that contain the UI content (HTML/CSS/JS).
├── apertureuihtmlengine.dll # APHTML (The HTMLEngine)
├── apertureuiharrlowengine.dll # Harrlow (The Graphics Engine)
├── apertureuideveloperengine.dll # (OPTIONAL) (The Developer Engine. Hosts DevTools.)
├── apertureuideveloperengine.dll # (OPTIONAL) (Networking Engine. Required to get data from the internet, assuming you aren't passing the needed assets to ApertureUI.)
├── wdtier0.dll # Aperture UI Foundation. Required for everything. This can be made static, but will increase binary size for the rest.
Copyright © 2026