Basic utilities needed for a Unreal Engine game 🎮
中文版: README.zh-CN.md
Both language versions are maintained in lockstep — update both in the same change.
An alternative timer implementation for FTimerManager — a
dedicated page explains it.
Angle utilities — FRemCircularAngleRange (shortest-angle helpers, wrapping
ranges) — curve evaluation (Rem::EvaluateCurve01) and damping helpers in
RemMath / RemMathCore.
Common-tag operations and tag↔string helpers (RemGameplayTagStatics), tag
arrays (RemGameplayTagArray), and tags paired with a category, usable as map
keys (RemGameplayTagWithCategory).
Owned storage and non-owning views without manual lifetime juggling:
RemInstancedStructContainer (owned struct storage), RemScopedStructContainer
(call-scoped heterogeneous structs), RemComponentContainer (owns components),
RemComponentViewContainer (component views over TConstStructView).
RemIteratePropertiesOfType walks UPROPERTY members by type — containers and
FInstancedStruct recursion included. RemReflectedFunctionData /
RemReflectedFunctionCallData invoke reflected functions.
RemCheck* (developer-error guards) / RemEnsure* (runtime-possible states),
RemOnScopeExitWeak, RemNotNull (non-null UObject semantics), RemCastFn,
RemBinarySearch, RemInstanceOf (compile-time instance-of trait).
Asset loading (RemAssetLoadingStatics), object statics (RemObjectStatics),
async overlap/trace helpers (RemWorldCollisionAsync), net-role filter bits
(RemNetFilterBits), typed subsystem access (Rem*Subsystem.inl), interface
statics (RemInterfaceStatics), animation statics (RemAnimationStatics),
enum utilities (RemEnumStatics, combination enums), concepts
(RemConcepts / RemCppConcepts / RemStructConcepts), core misc
(RemMisc, RemStd.inl, RemCoreStatics.inl), logging (RemCommonLog),
ALS integration macros (RemAlsMacros).
- Requires the RemStrongAlias and RemFmt plugins.
- Enable
RemCommonin your project (Category: Gameplay). The plugin ships a Runtime moduleRemCommonand an editor-only test moduleRemCommonTest.
- Tests are BDD specs (
DEFINE_SPEC+Describe/It, "should ..." names) in theRemCommonTestmodule (UncookedOnly— never packaged), grouped under theRem.Commonprefix. - Run them headless with the project's automation runner (
Automation RunTestswith aRem.Commonfilter) using the project's editor development configuration — the suite covers the whole public API (latent timers, math, tags, containers, templates, macros, subsystems).
MIT — ALS-related parts carry LICENSE-ALS-Refactored.