Built a Pure C++ Interaction System for UE5 — Press, Hold, LOS Detection, and Zero Tick

Built a Pure C++ Interaction System for UE5 — Press, Hold, LOS Detection, and Zero Tick

Hi everyone,

I recently finished an Interaction System built entirely in C++ and wanted to share some implementation details.

The goal was to avoid per-frame polling and keep everything event-driven. Detection uses Sphere Overlap events combined with Line-of-Sight checks, while interaction updates run on a lightweight timer instead of Tick.

Features:

- Press interactions

- Hold interactions with progress callbacks

- Line-of-Sight validation (ignores objects behind walls)

- Priority-based target selection

- CustomDepth outline highlighting

- IInteractable interface for doors, chests, levers, NPCs, or any custom actor

I'm curious how others handle interaction priority when multiple objects overlap.

Do you prefer:

- Distance only?

- Explicit priority values?

- Camera direction weighting?

- Something else?

I'd love to hear different approaches.

Demo video: https://www.youtube.com/watch?v=mgm3DgOgP7k

u/kkamal_ — 24 hours ago

Built an Inventory & Crafting System in Pure C++ for UE5

Recently finished an Inventory & Crafting System built entirely in C++.

Features:

  • Equipment Slots
  • Inventory Grid
  • Probability-Based Crafting
  • Batch Crafting
  • DataTable-Driven Items
  • Event-Driven UI Updates
  • Zero Tick Architecture

The goal was to keep everything modular and easy to integrate into existing UE5 projects.

Feedback is always welcome.

reddit.com
u/kkamal_ — 14 days ago

Building a Crafting Probability System in C++ for UE5

Hi everyone,

I recently finished an Inventory & Crafting system and wanted to share one design decision that generated a lot of iteration: crafting probability.

Instead of using a single batch roll, every crafting attempt performs an independent probability check driven by DataTable values. Batch crafting simply executes multiple rolls and reports the final success/failure counts.

The inventory and crafting UI are fully event-driven, with no Tick and no widget bindings.

I'm curious how others handle crafting RNG systems:

  • Flat probability?
  • Pity systems?
  • Guaranteed success after N attempts?
  • Something else?

I'd love to hear different approaches.

For reference, here's a short video showing the inventory and crafting workflow: https://youtu.be/RWveAym48F0?si=NrZU7sYO8oCSjbRU

u/kkamal_ — 14 days ago

How I implemented real-time key conflict detection for key remapping in UE5

Hey r/unrealengine,

While working on a key remapping system with Enhanced Input, I ran into a UX issue that surprisingly isn't handled automatically.

A player can assign a key that's already bound to another action, which can easily lead to confusing input setups if you don't catch it.

To solve it, I implemented a simple conflict detection flow:

  • When a player selects a new key, existing mappings are checked immediately
  • If the key is already in use, a warning appears in the UI
  • The conflicting action is highlighted
  • The player can't confirm the change until the conflict is resolved

One thing I wanted to avoid was continuously checking for conflicts every frame. Instead, validation only runs when a remapping event occurs, so the UI stays completely event-driven.

It ended up being a lot cleaner than I expected once everything was wired into Enhanced Input.

Curious how everyone else handles key remapping in UE5.

  • Do you block duplicate bindings?
  • Automatically replace the old binding?
  • Allow conflicts and let players decide?
reddit.com
u/kkamal_ — 25 days ago

I removed every Tick from my HUD system in UE5

Hey r/unrealengine,

One thing I've become obsessed with lately is eliminating unnecessary Tick usage.

While rebuilding my HUD framework, I realized almost every UI example I found was still polling values every frame:

  • Health bars
  • Mana bars
  • XP bars
  • Status indicators

Even when nothing had changed.

So I removed every Tick from the entire HUD system.

Instead, gameplay components broadcast Dynamic Multicast Delegates whenever data changes, and widgets simply react to those events.

DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(
    FOnHPChanged,
    float, CurrentValue,
    float, MaxValue
);

Result:

  • Zero HUD Tick functions
  • No timer-based polling
  • Cleaner UI architecture
  • Better separation between gameplay logic and presentation

Curious how others approach HUD updates in UE5.

Do you still poll values, use bindings, or go fully event-driven?

reddit.com
u/kkamal_ — 29 days ago

How I built a 100% Pure C++ UI & Settings Framework in UE5 to achieve Zero CPU Overhead (No Tick Architecture)

Hi r/gamedev,

I wanted to share a quick architectural breakdown of my recent hobby project. Like many of you, I always had performance concerns regarding heavy UI blueprints and unnecessary Ticking components cluttering the game thread.

To solve this, I decoupled everything and built a native C++ framework for HUD and Settings using a 100% event-driven pattern.

Key features I focused on:

- Zero Tick: Absolutely no CPU overhead on the game thread.

- DataAsset Integration: Easily customizable layout configs without touching the backend code.

- Gamepad Friendly: Fully responsive input layout ready out of the box.

If you have any questions about optimizing UE5 UI logic, setting up thread-safe architecture, or how this system works, feel free to drop a comment below. I'd love to answer them!

reddit.com
u/kkamal_ — 29 days ago

ListView update pattern in UE5 — SetListItems vs OnListItemObjectSet with delegate. Which do you prefer?

When updating a ListView in UE5, which approach do you prefer?

A) Handle everything in code — rebuild the array, reassign items, and call SetListItems to refresh the entire list.

😎 Let each entry handle its own update — use OnListItemObjectSet and broadcast changes via delegate from the entry (child) side.

I've been going back and forth on this.

A feels safer and more predictable, but there's a concern about GC pressure when the item count gets large, since SetListItems triggers entry pool recycling and UObject references may not get cleaned up at the right time.

B seems cleaner for complex entry states, but requires careful delegate management — you need to make sure RemoveDynamic is called properly before rebinding on each OnListItemObjectSet, otherwise you risk memory leaks from stale bindings.

Curious what the community prefers and why. Is there a cleaner pattern I'm missing?

reddit.com
u/kkamal_ — 1 month ago

What's your preferred way to manage UI in UE5 — UMG Blueprints or C++? And why?

Curious what the community thinks about this. Which do you prefer and why?

reddit.com
u/kkamal_ — 1 month ago

[Asset Release] Complete Native Settings System for UE 5.4/5.5 — Pure C++ Backend, Enhanced Input Remapping, Graphics/Audio Sync, & Runtime Save/Load

Hey devs! Just released my second FAB plugin — **Native Settings System for UE5**, built entirely in C++ from scratch.

If you are tired of setting up custom options menus and saving/loading logic for every project, this is a drop-in framework that handles everything out of the box.

👉 **Get it on FAB: https://fab.com/s/95490b32c01f

👉 **Full Showcase Video: https://www.youtube.com/watch?v=IDXSfl0UzBk

### 🛠️ Key Features:

* **Graphics Settings** — Resolution, window mode, quality presets (Anti-aliasing, Shadows, View Distance, etc.) with Apply/Revert logic.

* **Audio Settings** — Master, BGM, SFX, and Voice volume sliders (fully SoundMix / SoundClass-driven).

* **Key Remapping** — Full Enhanced Input rebinding system with UI support and runtime save/load.

* **Auto Save & Load** — All settings automatically persist across game sessions via custom SaveGame.

* **DataAsset-driven Workflow** — Extremely easy setup. Just assign your Input Mapping Context (IMC) and SoundClasses to `DA_NativeSettingsConfig` and you're good to go.

### 💻 Technical Specifications:

* **Pure C++ Backend** powered by `UGameInstanceSubsystem` & `USaveGame`.

* **Zero Tick**, fully event-driven architecture for maximum performance.

* **UE 5.4 / 5.5** officially supported.

*P.S. If you already grabbed my MMORPG HUD System, this plugin pairs perfectly with it as a complete UI/UX package.*

Let me know what you think or if you have any feature requests! Feedback is always welcome.

u/kkamal_ — 1 month ago

I released an MMORPG HUD System plugin for UE5 - C++ component-based with Minimap, Ability Bar, Target Frame and more

Hey guys! I just released my first FAB plugin - MMORPG HUD System built entirely in C++.

👉 Check it out on FAB: https://fab.com/s/69b1933bc34b

Features:

- Status Bar (HP/MP/Stamina)

- Ability Bar with cooldown sweep material

- Minimap with circular mask and zoom

- Target Frame with tab targeting

- Buff Panel with stack/duration

- Damage Text, XP Bar, Enemy HP Bar

- HUD Toggle (H key)

It's a DataTable-driven, modular component architecture. You can easily drop components onto any character and get it running instantly. Let me know what you think!

u/kkamal_ — 1 month ago