Developer knowledge network ยท moderated exchange

UnreliableCode Community

Developer Research, Reverse Engineering & Coding Community

Knowledge indexLive
4Categories
919Threads
2.8KPosts
Tutorial

Reading BaseNetworkable entity dictionary without hitching or FPS drops

ptr_arithmetic
C++ Wizard
MEMBER
Rep: 162
Join Date: May 2018
Posts: 73
Thanks: 42
1 months ago ยท Jul 2, 2026 10:32 AM
#1

In Rust, BaseNetworkable.clientEntities contains thousands of world objects (trees, ores, barrels, animals, players).

If you iterate all 15,000 entities every frame, your external overlay will drop to 20 FPS.

Multi-Threaded Entity Caching Solution:

  1. Spawn a dedicated background worker thread that iterates clientEntities once every 200ms.
  2. Filter and store active players (BasePlayer) and relevant loot in an atomic thread-safe double buffer.
  3. The main render thread only reads the small cached array of ~30 nearby players at 144Hz.

Zero frame hitching, render overlay runs at solid 240 FPS!

unity_il2cpp_dan
IL2CPP Reverser
MEMBER
Rep: 46
Join Date: Jun 2020
Posts: 4
Thanks: 15
1 months ago ยท Jul 2, 2026 12:33 PM
#2

Double buffering entity lists with std::atomic<bool> flip flag is the best architectural pattern for external game overlays.

imgui_artisan
UI Designer
MEMBER
Rep: 202
Join Date: Apr 2019
Posts: 54
Thanks: 28
1 months ago ยท Jul 3, 2026 7:48 AM
#3

Implemented this and CPU usage dropped from 28% down to 1.2%.