Prototype spatial GPS edge weights

This commit is contained in:
2026-06-26 21:24:24 -05:00
parent 55f4087458
commit 56ef79d14a
6 changed files with 982 additions and 37 deletions
+21 -8
View File
@@ -66,14 +66,23 @@ Current behavior:
Active build note:
- The currently installed build is read-only. It disables provider class
multiplier overrides and enables GPS query lifecycle tracing plus local GPS
search tracing.
- The currently installed build is disabled on disk:
`EdgeWeightGPS.dll.disabled`. There is no active `EdgeWeightGPS.dll` in the
game plugin directory.
- Source defaults are still read-only for route behavior. They disable provider
class multiplier overrides and the spatial edge-cost patch, while keeping GPS
query lifecycle tracing available for probe builds.
- The async route-job hooks are split behind `kEnableGpsRouteJobLifecycleHooks`
and are disabled in the active probe; this keeps the log focused on
`0x70a42c` submissions, `0x7094b8` result records, and local
search/provider-cost stats.
- It hooks `GPSSearch` (`0x44f054`), `GPSRouteProducer` (`0x44cc7c`),
- `kEnableGpsSpatialEdgeWeightPatch` is a disabled-by-default implementation
path. When enabled, it hooks `GPSRouteProducer` (`0x44cc7c`) and
`GPSEdgeCost` (`0x44f838`), samples a generated traffic-lane spatial grid
using the search-state coordinates, and applies highway/road/pavement
multipliers to returned edge costs.
- The old verbose local-search probe is still available behind
`kEnableGpsLocalSearchHooks`. It hooks `GPSSearch` (`0x44f054`),
`GPSResolveHandle` (`0x44e1a8`), `GPSEdgeCost` (`0x44f838`), and the two
cost-provider filters `0x44ff68`/`0x450b08`.
- The filter probe records pass/fail counts by point class and by the
@@ -345,10 +354,14 @@ Current static producer lead:
`(*(routePoint + 0x13) & 0x3f)`. The GPS planner is therefore weighted, but
by a compact baked road-class table, not by traffic `maxSpeed` or lane
connection probabilities.
- The active probe now hooks `0x44f054` and `0x44f838` read-only. It logs the
live provider vtable, the 64 class multipliers, start/target handles, and a
capped sample of edge-cost calls with point class IDs, masks, handles, and
returned costs.
- The read-only local-search probe can still hook `0x44f054` and `0x44f838` to
log the live provider vtable, the 64 class multipliers, start/target handles,
and a capped sample of edge-cost calls with point class IDs, masks, handles,
and returned costs.
- The new spatial edge-cost path is implemented but disabled by default. Its
generated grid is built from traffic lane polygons/flags, not from VAND point
classes, so it can bias the search toward highway cells without rewriting
VAND metadata that later materialization code branches on.
Autodrive finding: