Developer knowledge network · moderated exchange

UnreliableCode қауымдастығы

Әзірлеушілерді зерттеу, кері инженерия және кодтау қауымдастығы

Knowledge indexТірі
4Categories
919Threads
2.8KЖазбалар
Tutorial

Reading BaseNetworkable entity dictionary without hitching or FPS drops

ptr_arithmetic
C++ Wizard
MEMBER
Өкіл: 162
Қосылу күні: May 2018
Хабарламалар: 73
Рахмет: 42
1 ай бұрын · 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
Өкіл: 46
Қосылу күні: Jun 2020
Хабарламалар: 4
Рахмет: 15
1 ай бұрын · 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
Өкіл: 202
Қосылу күні: Apr 2019
Хабарламалар: 54
Рахмет: 28
1 ай бұрын · Jul 3, 2026 7:48 AM
#3

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