Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Important

🔀 This repo has moved to Codeberg

The active copy now lives at codeberg.org/Heathen-Engineering/Unreal-DataLens-Foundation — please point your git remote, UPM manifest, or Gem reference there going forward. That's where new commits, releases, and issues actually happen now.

This GitHub copy is preserved as-is and still works for anyone already pointing at it, but it isn't receiving new updates. It will be archived (read-only) once every downstream package that depends on it has finished migrating too, not immediately.

Questions? Discord.

DataLens Foundation

License Maintained Unreal Native

A cache-aware, column-oriented in-memory simulation store for Unreal Engine. Entities are rows, attributes are bit-packed columns, and updates run as branchless passes over native memory — a UGameInstanceSubsystem binding straight onto the DataLens Core C ABI, no P/Invoke marshalling layer in the way.


🛠 Also Available For

Unity


⚙ Built on the DataLens Core

This plugin is the Unreal binding over the engine-agnostic native DataLens Core (C++17, Linux/Windows), vendored as a git submodule at Archive/extern/DataLens. The Core is where portability lives; each engine ships its own thin Foundation over it. Same substrate powers DataLens Foundation (Unity) and HATE on top.


Become a GitHub Sponsor

Prefer a one-time purchase? Heathen's own storefront is live, direct source access at heathen.group/pricing, no sponsorship required.

Discord GitHub followers
Support Heathen by becoming a GitHub Sponsor. Sponsorship directly funds the development and maintenance of free tools like this, as well as our game development Knowledge Base and community on Discord.

Sponsors also get access to our private SourceRepo, which includes developer tools for O3DE, Unreal, Unity, and Godot.
Learn more or explore other ways to support @ heathen.group/kb


What it does

DataLens is a data-oriented simulation database. Instead of one UObject per entity, state lives in column-major native tables (GameplayTag-addressed), and a consumer works entirely through UDataLensSubsystem — a UGameInstanceSubsystem wrapping the Core's dl_store/dl_lens C ABI directly, no vendored prebuilt binary. The public surface:

Member Purpose
CreateStore(Columns, PreallocRows) Declare the database — a set of typed columns (FDataLensColumn, built via OfFloat/OfInt32).
AllocRow / FreeRow / SetValid / IsValid Row lifecycle within the store.
SetFloat / GetFloat / SetInt32 / GetInt32 Per-cell reads/writes, by raw uint64 column id or by FGameplayTag convenience overload.
CreateView(ColumnIds) Opens a read-only multi-column FDataLensView snapshot.
RunSystemFloat(If) / RunSystemInt32(If) / RunSystemColumnFloat(If) / RunSystemCurvedFloat(If) Parallel column-wide Set/Add/Sub/Mul/Min/Max ops, unconditional, predicated, cross-column, or curve-transformed.
GetRevision / SetRevision / BumpRevision / MarkColumnDirty Per-store replication revision tracking.
Snapshot / CollectDelta(SinceRevision) / ApplyPayload Replication provider: a full baseline, a since-revision delta, and applying either as an authoritative commit — the wire primitives a netcode stack consumes; this plugin opens no socket and dictates no topology.

No wrapper tag type — raw uint64 is the one true column/tag identity throughout the API. FGameplayTag stays the only real tag concept in Unreal (hierarchy, picker, authoring); every tag-taking method also has a canonical uint64 overload, with HashDataLensTag(FGameplayTag) -> uint64 as the one-line stateless derivation (XXH3_64bits_withSeed(..., 0) over FGameplayTag::ToString() — bit-identical to Unreal's own native FXxHash64, and to every other engine's GameplayTags/Lexicon hash).

Blueprint surface

UDataLensBlueprintLibrary mirrors nearly all of the above as UFUNCTION(BlueprintCallable) static wrappers, taking FGameplayTag directly (already Blueprint-native) and reinterpreting every uint64 as int64 at the boundary (UHT can't reflect uint64 in a function signature at all). UDataLensSubsystem itself carries UCLASS(BlueprintType) so Blueprint can hold a reference obtained from "Get Game Instance Subsystem," but has no UFUNCTIONs of its own — all Blueprint-callable boundary conversion lives in the library, not the subsystem class. Not wrapped: CreateView/FDataLensView — move-only with a template GetRows<TRow>() zero-copy accessor, no Blueprint equivalent without a separate copying/marshalling design; SetFloat/GetFloat already cover single-cell Blueprint access.


Requirements

  • Unreal Engine 5.8 or compatible
  • Linux or Win64, x86_64
  • No plugin dependencies — links directly against the vendored Archive/extern/DataLens submodule

Installation

  1. Clone with submodules (the Core is vendored as a git submodule, not a prebuilt binary):
    git clone --recurse-submodules https://github.com/heathen-engineering/Unreal-DataLens-Foundation.git
    
    Already cloned without --recurse-submodules? Run git submodule update --init from the repo root.
  2. Copy (or symlink) the repo into your project's Plugins/ folder, or reference it as an engine plugin.
  3. Enable DataLens Foundation in Edit > Plugins, restart the editor.
  4. Get UDataLensSubsystem via GetGameInstance()->GetSubsystem<UDataLensSubsystem>() (C++) or "Get Game Instance Subsystem" (Blueprint).

Enums

Type Values
EDataLensSystemOp Set, Add, Sub, Mul, Min, Max
EDataLensCompareOp matches Core's comparison set for predicated Systems
EDataLensCurveType Linear, Power, Smoothstep, Threshold
EDataLensColumnType the typed column kinds FDataLensColumn can declare

Each has a ...BP (UENUM(BlueprintType)) twin in DataLensBlueprintLibrary.h, positionally mirroring the core enum via static_cast at the boundary — the same convention the Core's own c_api.h uses.


License

Apache 2.0 — see LICENSE. Heathen Engineering Limited, Irish Registered Company #556277.

About

DataLens Foundation for Unreal Engine — wraps DataLens Core behind a UGameInstanceSubsystem.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages