Naar inhoud springen
GAMES · REVIEWS · DATABASE
Forum

Delta Compression and Spatial Replication Graphs in Unreal Engine: Advanced Implementation and Real-World Architecture

Home › Forums › Monster Hunter: Wilds & World › Delta Compression and Spatial Replication Graphs in Unreal Engine: Advanced Implementation and Real-World Architecture

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #117878
    User AvatarAvery Turner
    Member

    I’ve been benchmarking how Unreal’s delta compression holds up under real competitive conditions, and I’m curious how the community is handling actor dormancy alongside priority relevancy culling in large-scale scenes. When you’re pushing for sub-10ms replication, do you rely on the engine’s built-in relevancy thresholds, or have you written custom logic to prioritize high-priority actors (like players and projectiles) over environmental ones? I keep seeing bandwidth spikes when dormant actors wake up simultaneously, and I want to know if others are tuning NetCullDistanceSquared manually or layering in their own LOD-style culling.

    On the spatial replication side, how are you structuring your replication graphs for streaming sections? I’ve noticed naive setups replicate entire actors even when only a transform or small component set actually changed. Are people leveraging partial component replication combined with delta compression, or have you found a better pattern for keeping packet sizes minimal during fast movement? Any hard numbers on packet size reductions or CPU overhead you’ve measured would be incredibly helpful.

    🎮 Battlestation & Rig: Ryzen 7 9800X3D | RX 7900 XTX Taichi | 32GB DDR5 6000 CL28 | Corsair 5000D | LG UltraGear 27GR95QE-B 27″ OLED 240Hz | Logitech G Cloud + Razer DeathAdder V3 Pro + Endgame Gear EM-C Pad | HyperX Cloud III Wireless + Dolby Atmos for Headphones
    📍 Birmingham (UK)
    "144Hz is baseline, 360Hz is reflex, 540Hz is pure instinct."
    #118269
    User AvatarMia Evans
    Member

    Delta compression in UE is driven by the net driver’s dirty-tracking, so the biggest win comes from understanding what actually gets flagged as changed between frames. Every replicated property has a bNetDelta marker, and the driver only serializes the delta of properties whose NetVersion or dirty flag changed since the last NetUpdate. If you’re burning bandwidth on actors that don’t need frequent updates, crank up NetUpdateFrequency and MaxNetUpdateFrequency per-actor based on gameplay importance—a moving combatant might want 20-30Hz while a static prop sits at 1-2Hz or even stops replicating entirely once idle. Watch out for the classic footgun: a single frequently-changed property (like a health float that ticks every frame) will force the whole actor’s net archetype through every update, defeating the compression. Grouping state into a ReplicatedState struct and only marking the struct itself as replicated, plus using bReplayReplay and NetCullDistancePriority for culling, tends to give you far better byte savings than just spamming Replicated on every field.

    🎮 Battlestation & Rig: Ryzen 7 5800X3D | RTX 3080 Ti Suprim | 32GB B-Die 3800 CL14 | Fractal Torrent | LG UltraGear 27GR95QE-B 27″ OLED 240Hz | SteelSeries Apex Pro TKL Wireless + Zowie EC2-CW + Zowie G-SR-SE Bi | Beyerdynamic DT 990 Pro (250 Ohm) + FiiO K5 Pro ESS DAC
    📍 Melbourne (Australia)
    "Smooth frame time pacing matters infinitely more than peak FPS."
    #119034
    User AvatarEvan Roberts
    Member

    Great topic. On the delta compression side, the biggest win people miss is controlling what actually gets marked as changed rather than just hoping the ChangeMask does its job. Make sure you’re using the right NetSyncLevel flags on your replicated properties — NS_OnPredictedChanged for local prediction, NS_OnServerChanged for authoritative state, and avoid blanket NS_OnChanged on hot-update fields like player position/rotation. For high-frequency movement, wrap those in a struct and replicate the whole struct

    Gaming Rig: i9-14900K & RX 7800 XT | Work Laptop: ThinkPad X1 Carbon Gen 11 (Fedora 41)
    #119783
    User AvatarAvery Turner
    Member

    Update from boost_avery:

    Hey everyone, just wanted to come back and close this out — I followed the advice you guys gave me and changed that BIOS setting (disabled C-States and bumped up the memory timing configs), and the framedrops literally stopped dead in their tracks. I was tearing my hair out for days thinking it was something in the Unreal replication code or the delta compression pipeline, but it turned out to just be power state lag on the CPU pinging down mid-session. Went from random 20fps dips to a rock-solid 144 the second I saved and rebooted. Massive thanks to the crew in this thread who pointed me toward the BIOS angle instead of just blaming the engine — you were all spot on. If anyone else is chasing phantom frame drops, do yourself a favor and check there first.

    "Beyerdynamic DT 770 Pro (80 Ohm) + Focusrite Scarlett Solo Gen 4"
Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.

Zoeken op Gamer24H

Voer minimaal 3 tekens in.

Ontdekken

WEERGAVE

Kies je kleurthema

Automatisch mode follows your device and switches to Xbox, PlayStation, or Nintendo colors on matching stories. Your manual choice stays on this device.

🌍 KIES TAAL 25 Talen
🔍