MAEngine

User Interface

UI systems for building game interfaces

User Interface

MAEngine provides multiple UI systems for different use cases. All UI systems integrate with the Store for reactive data binding.


Comparison

FeatureRmlUIWebUIWidget
RenderingNative SlateUltralight (Chromium)UMG
MarkupRML (HTML subset)Full HTML5Blueprint/C++
StylingRCSS (CSS subset)Full CSS3UMG Styles
ScriptingLua bindingsJavaScript + LuaBlueprint + Lua
PerformanceExcellentGoodExcellent
ComplexityLowMediumMedium
Use CaseHUDs, simple menusComplex UIs, web contentNative widgets
StatusIn ProgressStableComing Soon

Architecture

All UI systems share the same data layer through Store:

┌─────────────────────────────────────────────────────────────┐
│                        STORE                                 │
│  player.health, player.shield, weapon.ammo, settings.*, ... │
└─────────────────────────────────────────────────────────────┘
        │                    │                    │
        ▼                    ▼                    ▼
   ┌─────────┐         ┌─────────┐         ┌─────────┐
   │  RmlUI  │         │  WebUI  │         │ Widget  │
   │BindStore│         │  Store  │         │ViewModel│
   └─────────┘         └─────────┘         └─────────┘

Benefits:

  • Single source of truth for all game state
  • Update Store once, all UIs react automatically
  • Mix and match UI systems as needed

When to Use What

RmlUI

  • Game HUDs (health, ammo, minimap)
  • Simple menus (pause, settings)
  • Performance-critical overlays
  • When you want HTML/CSS without JavaScript complexity

WebUI

  • Complex interactive UIs
  • Existing web-based designs
  • When you need full JavaScript capabilities
  • Rich animations and effects

Widget (Future)

  • Native Unreal widgets
  • Designer-friendly Blueprint workflows
  • When you need UMG-specific features

On this page