BallOrcs Battle: the orcs stop walking into walls
Orcs now find their way around walls of fire and barricades instead of getting stuck, plus a skirmish menu and health bars for hurt units.
In plain words
Until now, if you sent an orc somewhere and a wall of fire or a barricade stood in the way, it walked straight at the goal, stopped at the obstacle and stayed there forever. Now units find their way around. They follow a shared "map of arrows" pointing toward the destination, so a whole army heading to the same spot reads one map instead of each working out its own route. Both players' armies must take mirror-image routes on a mirrored map, which took some care. Elsewhere: there is a skirmish menu as a front door, matches know when they are over, hurt units show health bars, and the weekly build now writes its own release notes.
Under the hood
- Front door and readability (#40 C5, #41 C6, #42 C7):
SimServerknows when a match is over, a skirmish menu, hp bars on hurt units plus Hollow and channel marks. - Flow field, slice 1 (
6d7f115): breadth-first sweep from the destination over a dense odd-r array, neighbours inHEX_DIRSorder. Every step costs 1 (elevation and slope cost nothing, per the recorded decision).STEP_GOALandSTEP_NONEare kept distinct. Wired to nothing, so no hash moved. - Cache, slice 1.5 (
dfc050e): at most 32 fields keyed by (destination, faction, domain), evicted by lowestlast_usedtick then lowest slot. Stale fields are returned, not rebuilt;refresh()rebuilds in place. - Path following, slice 2 (
5b2d111): units route via the field; per-unit state ispath_epochandpath_next. The first sweep failedmirrored_worlds_stay_mirrored_exactlybecause first-arrival tie-breaking is not mirror-equivariant; steps are now ranked bydotthencrossagainst the goal.SNAPSHOT_VERSION13 → 14, the eight golden pairs re-recorded. - Corpus re-record (
0271cd3): five trace anchors changedsim_hashonly; unit counts and per-ability rows held, andsim-testsstayed green on both maps at 1,024 seeds. - CI: the weekly release creates its release page (curl, no python3 in that image);
godot-androidre-pinned after registry garbage collection removed the old digest, with dated tags so pinned digests stay tagged.
This is pathfinding work in the sim; it is not a claim about any numbered rendering or multiplayer phase.