Skip to content

Movement projector fixes: 28 bundles

Latest

Choose a tag to compare

@ironsquadronfr-hub ironsquadronfr-hub released this 15 Aug 13:22
· 27 commits to isq-qol since this release

28 asset bundles. Each one is a drop-in replacement for an existing Steam UGC entry of the mod, and manifest.csv in the zip gives the exact URL each file replaces.

Everything here was measured, not guessed: eight miniatures, one per base size, moved a full move at each speed, and the resulting positions read back out of the save JSON. That measurement is what every correction below is checked against.

The Lua-side fixes are in the pull request. These bundles are the part a merge cannot deliver, because they live on Steam UGC.

Maximum move projectors — 24 files, movement_*

The white base footprint was drawn at halfBase / (_ProjectorRadius + halfBase) of the projector's extent, while that extent is _ProjectorRadius for this family. The circle therefore came out smaller than the base, and it changed with the speed, since _ProjectorRadius does. Between 1 mm too small on a trooper and 21 mm on a 100x200 base.

The same formula is correct for the range and cohesion projectors: those set their extent to _ProjectorRadius + halfBase, so it lands on the base exactly. The shared vertex function in BB_Projector.cginc is deliberately left untouched; the movement shader was given its own.

Also in these bundles:

  • _BaseSize was stuck at 70 on 15 of the 24, on every base above large. With the formula fixed it holds the real base size again.
  • The gap between the base edge and the white ring was 0.0125 of the projector extent, so it grew with the speed, 1.45 mm to 5.86 mm. Now a fixed 0.057 in.
  • The 27 mm rings gained 0.087 in: they ignored deployMod.small, which moveFull adds to every move. It is carried by both the material's _ProjectorRadius and the prefab's m_OrthographicSize, because those two have to stay equal in this family: the extent is what places the ring on the table, and raising the material value alone moves nothing. All 24 now hold to _ProjectorRadius = travel + half the base within a thousandth of a millimetre.
  • The 100x175 and 100x200 bases now get an oblong footprint, drawn as a capsule, instead of a circle. The blue maximum-distance ring stays a true circle — _ProjectorRadius already equals travel plus half the base length, the worst case whatever the heading.

Movement template A, speed 1 — 1 file

Its collider tip reached 35.62 mm towards the base, while the joint between the two template halves sits 34.5 mm from the base edge on every notched base. The two corners of the tip overlapped, and the physics engine resolved it by shoving the miniature back, every time the templates appeared. Small bases were spared: their joint sits 37.5 mm out. Speeds 2 and 3 were never in contact and are not included.

The tip is pulled back to 33.50 mm, clearing every base by 1.3 to 2.1 mm. Width and visual mesh untouched — the collider is a separate mesh. Nothing measures against it: there is no Physics.cast anywhere in the mod, the only getBoundsNormalized call reads a miniature, and highestPoint is written but never read.

Movement template shared assets — 3 files

Speeds 1 and 2 differed by only 25 % in grey and were hard to tell apart on a busy table; speed 3 was a saturated red. Now white / dark grey / light red.

These three were patched in place, not rebuilt, and only the material's _Color differs from the published file — verified object by object, field by field. A rebuild would have changed more than the colour: the published material points at a built-in Unity shader, while the Unity project assigns BB_MoveTool to it.

What we need from you

These are Steam UGC entries, so merging the PR does not bring them in, and hosting them ourselves would move control of the mod's assets off your account. The ask is to re-upload the 28 files and point the mod at the new URLs. manifest.csv gives the mapping; nothing else in the mod has to change.

The zip also carries a small unity-source/ folder: the two shaders written for this work and a table of the per-material values. You do not need it to ship these bundles — they are built and tested. It is there so the corrections are not silently lost the day one of these bundles is rebuilt from the Unity project.

If you would rather see them in play first, README.txt in the zip has a short procedure to drop them into a local TTS cache with no upload and no commitment — including how to undo it.