Radar Development Framework

by ViVi141

1.1.11

## 1.1.11 — 2026-09-05

Patch over 1.1.10. Opt-in gameplay fidelity packs + packaged HwCalib / SitePathLut.

- `ApplyGameplayFidelity` / `ConfigureModeWithFidelity` / `Create*SettingsWithFidelity` (SHORAD / AIRBORNE / WLR / ESM). Defaults stay lean.
- Ships `RadarData/HwCalib` + `SitePathLut` (.conf/.json); load order profile → conf → packaged JSON. `rdf_pack_radar_calib.py`. UAV rotor defaults; `install_profile_calib.py` for local overrides.
Game Version
1.8.0.13
Created
Sun, 06 Sep 2026 13:13:37 GMT
Last Modified
Sun, 06 Sep 2026 13:18:13 GMT

1.1.10

## 1.1.10 — 2026-09-03

相对 1.1.9。为 ESM / SIGINT DF 暴露单向路径功率因子;实体分类器改为类名 + prefab 资源路径双匹配,覆盖 GenericEntity 机架(如 Pchela)。

> EN: Patch over 1.1.9. One-way path power factor for ESM / SIGINT DF; entity classifier matches class name then prefab resource path (covers GenericEntity airframes such as Pchela).

- **物理检测**:`EvaluateOneWayPathFactor`(LOS 双径 / NLOS 多径 + site LUT + k-Earth 地平线 + 可选单向大气损耗);`EvaluateHorizonFactor`(仅地平线软因子);`BorrowPathScratch` 复用 scratch sample。
- **分类器**:`MatchesTokens` + `GetLowerPrefabResourceName`;车辆 token 增加 `drone` / `pchela`。

## 1.1.9 — 2026-08-31

相对 1.1.8。座舱 **range–az 杂波强度面**(TODO §10):预算化 DEM 射线填充粗栅 + Sensor 只读 API;`RTTexture`→mesh `$rendertarget` 外壳与 ×R⁴ LUT/扫线内容层。默认关;不进检测链;不改角标 PPI。

> EN: Patch over 1.1.8. Cockpit **range–az clutter intensity surface** (TODO §10): budgeted DEM ray fill + Sensor read API; `RTTexture`→mesh `$rendertarget` shell and ×R⁴ LUT/sweep content. Default off; not on the detect path; corner PPI unchanged.

- **数据面**:`RDF_RadarRangeAzClutterSurface`(相对扫向 az×range,`σ⁰·A/R⁴`,扇区衰减 + `CellsPerScan` 摊销);Scanner 在 `m_EnableRangeAzClutterSurface` 下每扫更新。
- **Settings / Sensor**:`EnableClutterSurface` / `TryGetClutterSurfaceMeta` / `Peek` / `CopyClutterSurfacePowers`;`StabilizeForRegression` 强制关;状态行 `CAS …`。
- **API 增量**:`GetClutterSurfaceRevision`(每扫/改栅递增);`PeekClutterSurfacePowerDb` / `CopyClutterSurfacePowersDb`(空=-300 dB);`TryGetClutterSurfaceFill`(上扫 rays/samples + azCursor)。演示面板按 revision 跳过重量化。
- **座舱**:演示默认刷 `Computer_E_01_on_RT`(继承官方 `Computer_E_01_on`,`MaterialAssign` 屏→`Computer_Screen_RT.emat`);可换 `Monitor_on_RT` / 原版 on|off|Monitor_*;+ `RDF_RadarClutterSurfaceScreen` / Panel / Demo。
- **护栏**:`tools/dem/test_rdf_radar_range_az_clutter.py`;文档 RADAR_API / CAPABILITIES / TODO §10。
Game Version
1.8.0.13
Created
Fri, 04 Sep 2026 10:48:57 GMT
Last Modified
Fri, 04 Sep 2026 10:56:18 GMT

1.1.8

## 1.1.8 — 2026-08-31

Compared to 1.1.7. Expands the IEEE radar band table (UHF/Ku/K/Ka) and provides simulated σ⁰, vegetation attenuation, clear-sky atmospheric, and rain attenuation characteristics for each band; aligns the Python offline tool with Enforce.

> EN: Patch over 1.1.7. Adds IEEE radar bands UHF / Ku / K / Ka with per-band σ⁰, foliage attenuation, clear-air atmosphere, and rain models. Python offline tools remain parity with Enforce.

- **Band Labels**: `BandNameFromFrequencyHz` / `band_for_frequency` → VHF (<0.3) / UHF (0.3–1) / L (1–2) / S / C / X (8–12) / Ku (12–18) / K (18–27) / Ka (≥27 GHz). Previously, 0.3–1 GHz was incorrectly labeled as L; now it is UHF. ≥12 GHz is no longer consistently labeled as X.

- **σ⁰**: `SurfaceTable` contains nine tables; for Ku/K/Ka, scattering from water surfaces and hard targets increases with frequency, while scattering from vegetation in VHF/UHF remains high. - **Vegetation attenuation scale:** VHF 0.20 … X 1.0 … Ku 1.35 … Ka 2.40.

- **Atmosphere:** Clear-sky loss by band; K-band rises near the ~22 GHz water vapor line.

- **Rain attenuation:** <12 GHz maintains the original a∝f^1.2 (SHORAD ratio remains unchanged relative to 9 GHz); Ku/K/Ka coefficients become steeper.

- **Tools:** `rdf_radar_materials` / `rdf_radar_physics` / `rdf_radar_systems` / `rdf_radar_knife_lut` + `test_rdf_radar_band.py`.
Game Version
1.8.0.10
Created
Sun, 30 Aug 2026 19:28:21 GMT
Last Modified
Sun, 30 Aug 2026 19:31:16 GMT

1.1.7

1.1.7 — 2026-08-27
Patch over 1.1.6. Wind heading uses Arma world azimuth (0° = north = +Z).
RDF_RadarGlobalWind.Set: Vx/Vz from sin/cos of engine azimuth (was math 0 = +X).
AutoTest crosswind sample updated to direction 0° (+Z) with matching comment.
Game Version
1.8.0.10
Created
Thu, 27 Aug 2026 14:22:14 GMT
Last Modified
Thu, 27 Aug 2026 14:25:54 GMT

1.1.6

1.1.6 — 2026-08-25

Patch over 1.1.5. Full-project C code review fixes (P0–P4 + important) and compile fixes.

P0: MTI clutter floor (2π)^(2N) factor; Nelder–Mead 5th-vertex drag span; JPDA clutter likelihood; DEM PreloadAllTiles residency; radar network audience origin; EW range-walk-off lazy anchor; LiDAR density/isWater over net; scatterer GridKey clamp; DEM tile bake boundary sea placeholder.

P1–P2: per-frame allocation scratch/pools; lifecycle leaks (MapOverlay hooks, scatterer Unregister, Lidar pollers/AutoRunner, CFAR row hits, DEM warn budget / touch wrap).

P3–P4 + important: AutoTest isolation; LiDAR sample strategy edges; PatternLut hardware match; measurement/clutter/fusion/ECCM/lock/scanner fixes.

Dead code: remove unused GetEmittingInSphere; compile: string.Replace in-place, TryLoadProfile(hpbw, sll), unused n in ballistics.
Game Version
1.8.0.10
Created
Tue, 25 Aug 2026 07:53:19 GMT
Last Modified
Tue, 25 Aug 2026 07:56:57 GMT

1.1.4

## 1.1.4 — 2026-08-20

Patch over 1.1.2. Dedicated-server DemData fix.

- Root cause: game/DS has **no Resource loader for `.json`**
  (`Resource loader for extension not registered!`). Workbench-only
  `JSONResourceClass` cannot load DemData on servers.
- Ship DemData as **`.conf` + `CONFResourceClass`** (same pattern as
  SurfaceTable / Signatures). Profile JSON bake path unchanged.
- Tools: `rdf_dem_json_to_conf.py`, `rdf_dem_gen_guid_index.py`.
Game Version
1.8.0.10
Created
Thu, 20 Aug 2026 13:45:46 GMT
Last Modified
Thu, 20 Aug 2026 13:49:22 GMT

1.1.3

Game Version
1.8.0.10
Created
Thu, 20 Aug 2026 13:18:23 GMT
Last Modified
Thu, 20 Aug 2026 13:23:50 GMT

1.1.2

## 1.1.2 — 2026-08-20

Patch over 1.1.0 (`f4a726b` … `0f81218`).

- Dedicated server / Workshop: load packaged DemData via `$AddonId:DemData/`
  (bare `DemData/` only worked in Workbench). Fixes `DEM/SURF missing for
  GM_Eden` → LIVE. Profile `$profile:RDF/DemData/` still first.
- Sector-sweep scan (`m_SectorSweepEnabled`) for narrow azimuth search.
- WLR launch/impact: full-drag Nelder–Mead fit (fallback vacuum + prefab drag).
- Fusion IFF: keep NEUTRAL distinct from UNKNOWN when merging.
Game Version
1.8.0.10
Created
Thu, 20 Aug 2026 12:51:37 GMT
Last Modified
Thu, 20 Aug 2026 12:57:02 GMT

1.1.1

Game Version
1.8.0.10
Created
Thu, 20 Aug 2026 12:13:14 GMT
Last Modified
Thu, 20 Aug 2026 12:21:24 GMT

1.1.0

EN: Minor over 1.0.2. Range: after 194d65d … e5dab5d (inclusive). Pulse blind zone; band-aware clutter + OBB RCS; multi-band channels + Rayleigh RCS vs λ; opt-in NCTR / LPI+Friis RWR / track confidence / glint / rain-sea / duct. Defaults off. Details in the 2026-08-19 dated entries below.
Game Version
1.8.0.10
Created
Tue, 18 Aug 2026 20:18:23 GMT
Last Modified
Tue, 18 Aug 2026 20:21:01 GMT

1.0.2

## 1.0.2 — 2026-08-18

Patch over 1.0.1 (`99efd5d` … `a1292be`).

- Track birth: leftover plots already inside an existing gate are dropped
  (no parallel file for the same contact). Parked beam:
  `m_bScanAngleLocked` uses phase offset as absolute azimuth.
- Cross-frame LOS TraceMove queue + WLR solve budget; adaptive
  BudgetGovernor (denominator = one server frame via GetFPS; scan ≤ ~30%
  of the frame). Hot-path reuse (tracker / NetCodec / TruthSample) and
  integer scatterer-grid keys.
- Stress soak (24 UAZ + 3 Mi-8, DEM clutter, HUD, 60 s): tickAvg
  **9.4 → 4.4 ms**, p95 15→5, max 23→8, hitch 16/33 = 0.
- Correctness: MTD bin-centre int/int (clutter cancel was dead);
  track-fingerprint float promotion (silent skip of legal broadcasts);
  RGPO used absolute world time; LiDAR network timeout / demo gate used
  frozen world clock. Convention: `docs/TIME_HANDLING.md`.

## 1.0.1 — 2026-08-16

Maintenance after 1.0.0 (before `99efd5d`): GetWorldTime ms/s unification,
DemData resource registration, `[Attribute]` script-default cleanup,
mechanical-scan phase offset, Workshop copy.
Game Version
1.8.0.10
Created
Mon, 17 Aug 2026 16:18:34 GMT
Last Modified
Mon, 17 Aug 2026 16:21:28 GMT

1.0.1

## 2026-08-14 — Time unit fix: `GetWorldTime` millisecond/second mix-up (9 instances)

> EN: Time-unit audit — 9 sites across 6 files mixed `BaseWorld.GetWorldTime()` **ms** with **seconds** (or passed seconds into `CallLater`'s int-ms delay). All fixed; Radar side already used the correct `* 0.001` convention.

- **Root Cause**: `BaseWorld.GetWorldTime()` returns **milliseconds**; the following code treated it as seconds or passed second values ​​directly into `CallLater`'s integer millisecond parameter.
- **Radar Network**: `RDF_RadarNetworkComponent.HasSyncedTargets` expiration threshold `60.0` (ms) → `60000.0` (60 s); previously, synced plots/tracks expired after 60 ms, causing the network path to almost always fall back to local.
- **Lidar Network**: `RDF_LidarNetworkComponent`: `HasSyncedSamples` expiration threshold `60.0` → `60000.0`; packet buffer cleanup `10.0` → `10000.0` (comment already stated 10 s).
- **Sweep Phase**: `RDF_SweepSampleStrategy`: `GetWorldTime()` → `* 0.001`; previously 45°/s was effectively 45,000°/s (≈125 revolutions/second).
- **AutoRunner**: `RDF_LidarAutoRunner`: `CallLater(StaticTick, s_MinTickInterval, true)` → `(int)(s_MinTickInterval * 1000.0)` (0.2 → 200 ms; previously 0 ms, ticking every frame); scan gating `now = GetWorldTime() * 0.001` (previously compared milliseconds to seconds, causing throttling to fail).
- **DemoCycler**: `RDF_LidarDemoCycler`: `CallLater(StaticCycleTick, (int)(s_CycleInterval * 1000.0))` (10 s; previously 10 ms)
- **Network Scanner**: `RDF_LidarNetworkScanner`: deadline `+ timeoutSeconds * 1000.0` (aligned to milliseconds); poll `CallLater(StaticPollTick, 100, false)` (0.1 s; previously 0 ms / per-frame polling)
- **Behavioral Impact**: Radar/Lidar network synchronization results are now truly valid; sweep/auto-cycle/polling rhythms are normalized; AutoRunner's `m_UpdateInterval` (default 5 s) is now effectively applied, eliminating full scans every frame.
- **Conventions**: `GetWorldTime()` always returns milliseconds; convert to seconds using `* 0.001`; `CallLater` delay parameter is in milliseconds: `(int)(seconds * 1000.0)`.
- **Verification**: Confirmed all 9/9 modifications are saved; no residual floating-point second values ​​remain in the project (the 14 instances of unconverted `GetWorldTime` calls are intentional millisecond timestamps, and thresholds have been synchronized to ms); Workbench compilation verification recommended.

## 2026-08-14 — Mechanical Scan Phase Offset (Resumable Antenna Pause)

- **Settings**: `RDF_RadarSettings.m_ScanPhaseOffsetRad` (default 0 = absolute angle based on world clock; backward compatible).
- **Scanner**: `RDF_RadarScanner.GetScanForward` adds the offset to the calculation `worldTime * rpm * 2π/60`.
- **Purpose**: When the sensor is disabled (paused), the mod records the antenna's frozen orientation; upon resumption, the offset is applied so that the first scan continues rotation from the frozen position rather than jumping to the world clock angle; keeps the antenna's visual orientation synchronized with the RDF scan direction.
- **Conventions**: Offset should be stored in the Sensor... Updates to `m_ScanPhaseOffsetRad` made while disabled take effect upon re-enabling; changes made while enabled cause an instantaneous jump in the scan angle.
Game Version
1.8.0.10
Created
Sat, 15 Aug 2026 06:37:29 GMT
Last Modified
Sat, 15 Aug 2026 06:40:15 GMT

1.0.0

## 1.0.0 — 2026-08-14

System-layer depth (§9) shipped and verified end-to-end (offline golden + C
port + in-game AutoTest):

- S1 — Dwell / resource management: beam-time budget, fire-control + track
  dwells, class priority + EDF + hard budget + deadline-miss.
- S2 — JPDA soft association: gate + union-find clustering + joint-event
  enumeration + marginalization + weighted alpha-beta; GNN stays default.
- S3 — ECCM decision layer: hysteresis jam detection + sidelobe/mainlobe
  coupling selects SLB / frequency agility, deception -> PRF agility, locked ->
  burn-through; SLB wired, rest reported.

## 2026-08-07 — Radar fidelity

- Clutter-map asymmetric EMA + footprint sigma0 mix + sea-state.
- Toy FDTD vs max-fidelity game-path comparison.
- Segmented antenna-pattern LUT + fixed-site path LUT.
- Dual-dominant knife-edge diffraction + nu LUT.
- Sidelobe floor + polarization match + optional sidelobe blanking.
- Forward truth / inverse observation split (no entity leakage into tracks).

## 2026-08-06 — LOS / DEM / performance

- DEM-before-Trace LOS precheck + LOS / reuse caches + shard budgets.
- Optional HEIGHT JSON bake pack (official .ttile) into RAM.
- 2 m DEM bake grid; runtime SURF/HEIGHT RAM or GetSurfaceY fallback.

## 2026-08-01 — MTD / MTI / track coast

- MTD Doppler filter bank + rotor micro-Doppler + clutter map + track coast.
- Classic two-pulse / three-pulse MTI + PRF stagger de-blind.
- Track coast kinematics + soft-miss + blind-speed association.

## Earlier

- Search -> plots -> track -> lock/fire-control -> WLR chain.
- Measurement noise / bias, thermal fill, GO/SO-CFAR, atmosphere / rain loss.
- ESM / RWR / ARM, EW noise soft + deception, datalink Hub + fusion.
- LiDAR Sensor / showcase / rectangular FOV; DEM bake V3 + SURF publish.
- Python golden test suite + GitHub Actions CI (drift guard).
Game Version
1.8.0.10
Created
Fri, 14 Aug 2026 08:23:14 GMT
Last Modified
Fri, 14 Aug 2026 08:26:39 GMT

0.6.11

Game Version
1.7.0.54
Created
Thu, 06 Aug 2026 18:20:56 GMT
Last Modified
Thu, 06 Aug 2026 18:23:00 GMT

0.6.10

Game Version
1.7.0.54
Created
Sun, 02 Aug 2026 15:43:21 GMT
Last Modified
Sun, 02 Aug 2026 15:43:37 GMT

0.6.9

Game Version
1.7.0.54
Created
Sat, 01 Aug 2026 16:56:53 GMT
Last Modified
Sat, 01 Aug 2026 16:57:27 GMT

0.6.8

Game Version
1.7.0.54
Created
Sat, 01 Aug 2026 06:18:03 GMT
Last Modified
Sat, 01 Aug 2026 06:18:33 GMT

0.6.7

Game Version
1.7.0.54
Created
Tue, 28 Jul 2026 16:15:47 GMT
Last Modified
Tue, 28 Jul 2026 16:16:02 GMT

0.6.6

Game Version
1.7.0.54
Created
Tue, 28 Jul 2026 15:36:12 GMT
Last Modified
Tue, 28 Jul 2026 15:36:24 GMT

0.6.5

Game Version
1.7.0.54
Created
Tue, 28 Jul 2026 15:14:35 GMT
Last Modified
Tue, 28 Jul 2026 15:14:51 GMT

0.6.4

Game Version
1.7.0.54
Created
Mon, 27 Jul 2026 04:16:50 GMT
Last Modified
Mon, 27 Jul 2026 04:17:06 GMT

0.6.3

# CHANGELOG

## 2026-07-26 — Radar Physics / DEM Runtime / Documentation Cleanup

### Additions & Enhancements (Radar / DEM)

- **Physics Pipeline**: Hardware parameters, radar equation, Doppler, MTI, SNR; α-β tracking; EW additive noise hooks.
- **DEM**: Workbench baking (V3 CSV); runtime `RDF_DemRuntimeLoader` / `RDF_DemRuntimeCache` (LRU); radar clutter power integration.
- **UI / Testing**: PPI HUD; `RDF_RadarAutoTest` (DEM clutter regression); `RDF_RadarAirborneScanTest` (airborne targets).
- **Offline**: `tools/dem/` Python radar physics framework and demo.

### Documentation Cleanup

- Removed obsolete planning documents `RADAR_PLAN.md` and `FUTURE_PLAN.md` (implementation details are now defined by the code and the documents listed below).
- Rewrote [README.md](../README.md) and [TODO.md](../TODO.md); added [DEM.md](DEM.md); updated this CHANGELOG and the Developer Guide.

---
Game Version
1.7.0.54
Created
Sat, 25 Jul 2026 22:02:23 GMT
Last Modified
Sat, 25 Jul 2026 22:02:48 GMT

0.6.2

Game Version
1.6.0.119
Created
Thu, 16 Apr 2026 11:43:14 GMT
Last Modified
Thu, 16 Apr 2026 11:44:37 GMT

0.6.1

Implement Target Filtering Modes for LiDAR and Radar Systems

- Introduced the ETraceTargetMode enumeration to define target filtering options: Terrain Only, All (Terrain + Entities), and Entities Only.

- Updated RDF_LidarSettings and RDF_RadarSettings to use the new target filtering modes, which affects ray casting behavior.

- Enhanced RDF_LidarDemoConfig to include target filtering mode configuration.

- Modified the demo script to support setting and validating target filtering modes during initialization.

- Updated documentation to reflect the changes to target filtering mode functionality and its impact on scan behavior.
Game Version
1.6.0.119
Created
Sun, 22 Feb 2026 11:42:45 GMT
Last Modified
Sun, 22 Feb 2026 11:43:13 GMT

0.6.0

📡 Radar Development Framework — Update Log

Update Date: 2026-02-20

🆕 New Features

Electromagnetic Wave Radar System (First Full Release)

Complete Physical Simulation Pipeline: FSPL Propagation Loss, Atmospheric Attenuation, Rain Attenuation, Radar Equation (SNR), RCS Target Cross-Section Model

Doppler Frequency Shift Processing + MTI Moving Target Indication (Filtering Stationary Clutter)

CA-CFAR / OS-CFAR Constant False Alarm Rate Detection (Built-in Offline Lookup Table, Automatic Loading)

4 Operating Modes: Pulse / Continuous Wave (CW) / Frequency Modulated Continuous Wave (FMCW) / Phased Array

On-chip PPI Scanning Circle HUD (Pure Script CanvasWidget, Green Theme)

Target Classification System: Entity Pre-classification (Structure Hierarchy / Name Heuristic) + Target Classifier

SAR Synthetic Aperture Radar Processor (Aperture Accumulation)

ECM Electronic Countermeasures Jamming Model

PPI Display / A-Scope Range Amplitude Map / World Pillar Markers / ASCII Console Map

Complete Demo System (AutoRunner / Demo Cycler / StatsHandler)

EM Voxel Field System (Phase 1–5 Complete)

3D Electromagnetic Field Simulation Voxel Mesh, Supports Signal Descriptor and Pulse Feature Recording/Estimation

Passive Sensor (Listening to Signals in the Field)

Multi-user Network Synchronization (Server Authority)

Debugging Visualization

LiDAR HUD (New)

On-chip PPI Scan HUD (Blue Theme), can be used independently or connected to AutoRunner for automatic refresh

✨ Improvements

LiDAR

New public static APIs for HUD: IsVisible() / FeedSamples() / AttachToAutoRunner() / DetachFromAutoRunner(), supporting direct HUD driving outside the Demo system

New Networked LiDAR Configuration Example (RDF_LidarNetworkSetupExample)

Scan Sampling Extension: Rayshots now carry entity references and surface materials Information

Sweep Strategy Improvement: Highly uniform distribution, eliminating clustering.

AutoRunner Memory Optimization: Proactively releases shape and sample references to prevent leakage during long-term operation.

Radar HUD

Synchronously added 4 public static APIs, with interfaces symmetrical to LiDAR HUD.

Target color encoding updated for helicopter radar mode, making classification display more intuitive.

🐛 Bug Fixes

Fixed an error in z-value calculation for the upper hemisphere sampling strategy (RDF_HemisphereSampleStrategy), causing some rays to deviate from the upper hemisphere.

Fixed degenerate results for the scanline sampling strategy (RDF_ScanlineSampleStrategy) under extreme parameters.

Fixed an issue where m_DisplayRange was unexpectedly covered by the AutoRunner range when LiDAR HUD was called independently.

📚 Documentation
Added RADAR_API.md (complete radar API reference), RADAR_TUTORIAL.md (14-section usage tutorial), and CHANGELOG.md; cleaned up all internal planning documents, retaining only reference materials for developers.

⚠️ The radar module and demo are still under development and should not be used in production environments!!! They will remain in the early development stage for a long time and are currently completely unstable and unusable. The LiDAR module is relatively stable.

Repository: https://github.com/ViVi141/Radar-Development-Framework | Contact: [email protected]
Game Version
1.6.0.119
Created
Fri, 20 Feb 2026 05:17:36 GMT
Last Modified
Fri, 20 Feb 2026 05:18:01 GMT

0.5.3

Fixes: Fixed the occlusion behavior of background quadrilaterals in visualization, ensuring correct background rendering in "point cloud only" mode; optimized the flag settings for debugging shapes, fixing the issue where in some cases the scan was paused but the visualization remained in the last frame and had not been cleared.
Game Version
1.6.0.119
Created
Tue, 17 Feb 2026 16:57:17 GMT
Last Modified
Tue, 17 Feb 2026 16:57:32 GMT

0.5.2

## 2026-02-18 — Network: Single-chip scan payload changed to reliable RPC (minor fix)

Overview: Changed the RPC channel for single-chip scan payloads from unreliable to reliable to reduce the probability of small (unfragmented) CSV payloads being lost at the transport layer. This change only alters the transport channel; RPC signatures and fragmentation logic remain unchanged.

Major Changes:

- Fix: `RpcDo_ScanCompleteWithPayload(string csv)` changed from `RplChannel.Unreliable` to `RplChannel.Reliable`.

- File: `scripts/Game/RDF/Lidar/Network/RDF_LidarNetworkComponent.c`

- Compatibility: Signature unchanged; no impact on external callers.

Test recommendations:

- Trigger `RequestScan()` and confirm on the client that `HasSyncedSamples()` returns true; verify the improved receive rate of a single payload in a simulated packet loss environment.
Game Version
1.6.0.119
Created
Tue, 17 Feb 2026 16:21:30 GMT
Last Modified
Tue, 17 Feb 2026 16:21:50 GMT

0.5.1

## 2026-02-17 — CSV/Export and Network Transfer Improvements (Minor Performance and Robustness Enhancements)

Overview: This update focuses on server-side CSV serialization, network transfer, and export paths, aiming to reduce peak memory/CPU usage and lower network sharding failure rates when processing large point clouds. All changes are backward-compatible implementation-level optimizations (no modification to public API signatures).

Major Changes (Actual Implementation):

- Optimization: **Caches and reuses** `RDF_LidarScanner` in `RDF_LidarNetworkComponent` (replacing each `new RDF_LidarScanner()`), reducing short-lifecycle object allocation and lowering GC pressure.

- File: `scripts/Game/RDF/Lidar/Network/RDF_LidarNetworkComponent.c`

- Optimization: Introduced CSV "parts" built per sample (add `RDF_LidarExport.SamplesToCSVParts`), and sends RPC payloads **streaming/chunking** on the server side. For larger payloads, it still supports merging parts and performing RLE compression before sending (retaining the original `RLE:` protocol prefix). This change significantly reduces the memory spikes caused by building massive strings all at once for large scans.

- Files: `scripts/Game/RDF/Lidar/Util/RDF_LidarExport.c`, `scripts/Game/RDF/Lidar/Network/RDF_LidarNetworkComponent.c`

- Improvement: `ExportToFile` now uses **best-effort atomic writing** (writing to a temporary `.tmp` file first, then the target file) to reduce the probability of truncated files during export (Note: the engine script cannot guarantee completely atomic renaming).

- File: `scripts/Game/RDF/Lidar/Util/RDF_LidarExport.c`

- Robustness Enhancement: Added optional logging (controlled by `m_Verbose`) for parsing failures/empty results in the RPC receive and fragment assembly paths, facilitating the diagnosis of network corruption or compression/decompression issues.

- File: `scripts/Game/RDF/Lidar/Network/RDF_LidarNetworkComponent.c`

Compatibility Notes:

- No changes have been made to the signatures or externally visible behavior of any public methods; the string format of CSV/RLE is compatible with client-side parsing (only the serialization/sharding implementation has been changed on the server side).

Testing Recommendations:

- Trigger a large ray count scan (e.g., m_RayCount >= 4096) locally or on the server to verify that memory/GC peaks, network sharding, and client-side parsing are normal; enable `m_Verbose` to view RPC parsing warning logs.

- Use `ExportToFile` to verify that the temporary file write path matches the final target file content (note the script-level renaming/deletion restrictions).

---
Game Version
1.6.0.119
Created
Mon, 16 Feb 2026 17:30:41 GMT
Last Modified
Mon, 16 Feb 2026 17:31:04 GMT

0.5.0

A batch mesh rendering option has been added to improve performance at high ray counts. Related documentation and demo configurations have been updated to reflect this change. The default setting remains disabled to avoid impacting production mode.
Game Version
1.6.0.119
Created
Sun, 15 Feb 2026 10:39:37 GMT
Last Modified
Sun, 15 Feb 2026 10:39:45 GMT

0.4.4

The documentation has been updated, with the addition of English translations and module layout instructions to enhance the readability and maintainability of the developer guide.
Game Version
1.6.0.119
Created
Sat, 14 Feb 2026 16:57:03 GMT
Last Modified
Sat, 14 Feb 2026 16:57:31 GMT

Showing 1 to 30 of 41 results

Rows per page

Next