Client-side FPS for big bases: merges static build pieces of each 16 m cell into one mesh per material. Same picture, far fewer draw calls in every pass, point-light shadows included. No gameplay or network changes.
Within one network-sync step the game told the physics engine about every moved object separately
(Physics.SyncTransforms after each of them, ~85 times a step on a busy base). Now the moved objects are handed
over once at the end of the step, before anything can ask the physics engine about them; outside that step the
original call is left as it is. SyncBatchPhysics in the config, counters in pb sync.
1.2.0
Network sync of objects that stand still is skipped exactly: when no new data arrived from the owner, the object
is already at its target (within the game's own thresholds), its body sleeps and the sent velocity is zero, the
50 Hz sync step would change nothing, so it is not run. Anything changes (new data, the body wakes, something moves
it locally) and the sync runs as usual in the same step. SyncSkip in the config, pb sync for the counters.
Measured on a base with ~250 synced objects: about 1.3 ms per frame went into these steps.
1.1.1
The method timer is on from the moment you enter a world (MethodProfiler in the config), so pb prof prints a
report right away; pb prof off still removes it. The measurement window restarts when your character spawns, so
loading does not skew the first report.
1.1.0
Cells are now merged on a background thread: no more frame spikes while a base loads or after you hover pieces
with the hammer. The main thread only collects the pieces and uploads the finished mesh, one cell per frame.
Piece eligibility is cached per prefab and the collected parts per piece, so a rebuild touches far fewer objects.
pb loop: where the frame goes, by Unity subsystem (physics, scripts, animation, particles, render submission,
waiting for the GPU). pb prof on / pb prof / pb prof off: timing of the game's own per-frame methods
(creatures, smoke, sync, zone streaming and so on) while the measurement is on.
pb also reports garbage collections and the mod's own time per frame.
1.0.0
Static build pieces of every 16 m cell are merged into one mesh per material: same picture, far fewer draw calls
in the main pass, in the sun shadow cascades and in point-light shadow maps.
Pieces that change (wear, damage, chest lids, hammer highlight, rain) fall out of the merge at once and are merged
again after the cell goes quiet.
Console command pb with frame statistics and a live on/off switch.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.