Ring the squid and the urchins, and stop the aim fit flattening - #5
Merged
Merged
Conversation
Four fixes, all measured off the live game canvas over the DevTools protocol rather than off a screen recording. That distinction mattered: a recording of a session with the overlay on feeds the helper's own marks back into its detection, and the capture pipeline shifts the very saturations this is about. Both sent the first diagnosis the wrong way. isSquid: the saturation floor came off the game's legend icon and was far too high for the sprite in the lane. The live sprite is three flat tones -- body rgb(237,204,240) at s.15, shading rgb(147,89,161) at s.45, outline rgb(49,24,60) at v.24 -- and s > .22 kept only the middle one. Those 63 pixels are scattered singles through the body they outline, so nothing connected: no component reached even a 21px floor against the 63px the count screen wanted, and the squid was never ringed at all. At s > .12 it comes back as one 173px, 22x24 blob, and a whole-canvas sweep at s > .10 turned up no new component anywhere. isHazard: 315..360 does not wrap, and hsvAt returns hue 0 for pure red. The urchin's two strongest tones sit at exactly hue 0, so not one of the sprite's 456 pixels could ever match and AVOID never appeared. Now uses inH, the same wrapping helper isBobber has always used. refitAim: below eight samples the fit dropped to a straight line, sound when the seed was itself a line and wrong once v6 made the seed a curve measured over 19 casts. It fires after three casts, and a live config held aim2 = 0 from six samples spanning only p .25-.625 -- a line that reads +2.2% of the lane at half power and -6.9% at full, so far targets demand more power than they need and you release early to land. The fallback now pins the curvature to the seed and fits only slope and offset; on those same six samples that beats the line on its own data, 1.34% mean residual against 1.52%, without the collapsed top end. A migration restores the seed for configs already holding aim2 = 0. Blob search: the box stopped exactly at the lane ends, slicing a sprite in half as it swam past. Not the count floor -- at 99% of the lane the squid still had 84px against a floor of 63, but three surviving columns are not 1.2% of the canvas wide, so the width screen killed it. Padding by half a sprite holds the ring to the end of the water. Also stop ringing AVOID on a hazard with a catch sitting on it. Landing there catches the fish, which is why the aim marker already lets the catch colour outrank the hazard colour; the ring argued with itself.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Four fixes, all measured off the live game canvas over the DevTools protocol rather than off a screen recording. That distinction mattered: a recording of a session with the overlay on feeds the helper's own marks back into its detection, and the capture pipeline shifts the very saturations this is about. Both sent the first diagnosis the wrong way.
isSquid: the saturation floor came off the game's legend icon and was far too high for the sprite in the lane. The live sprite is three flat tones -- body rgb(237,204,240) at s.15, shading rgb(147,89,161) at s.45, outline rgb(49,24,60) at v.24 -- and s > .22 kept only the middle one. Those 63 pixels are scattered singles through the body they outline, so nothing connected: no component reached even a 21px floor against the 63px the count screen wanted, and the squid was never ringed at all. At s > .12 it comes back as one 173px, 22x24 blob, and a whole-canvas sweep at s > .10 turned up no new component anywhere.
isHazard: 315..360 does not wrap, and hsvAt returns hue 0 for pure red. The urchin's two strongest tones sit at exactly hue 0, so not one of the sprite's 456 pixels could ever match and AVOID never appeared. Now uses inH, the same wrapping helper isBobber has always used.
refitAim: below eight samples the fit dropped to a straight line, sound when the seed was itself a line and wrong once v6 made the seed a curve measured over 19 casts. It fires after three casts, and a live config held aim2 = 0 from six samples spanning only p .25-.625 -- a line that reads +2.2% of the lane at half power and -6.9% at full, so far targets demand more power than they need and you release early to land. The fallback now pins the curvature to the seed and fits only slope and offset; on those same six samples that beats the line on its own data, 1.34% mean residual against 1.52%, without the collapsed top end. A migration restores the seed for configs already holding aim2 = 0.
Blob search: the box stopped exactly at the lane ends, slicing a sprite in half as it swam past. Not the count floor -- at 99% of the lane the squid still had 84px against a floor of 63, but three surviving columns are not 1.2% of the canvas wide, so the width screen killed it. Padding by half a sprite holds the ring to the end of the water.
Also stop ringing AVOID on a hazard with a catch sitting on it. Landing there catches the fish, which is why the aim marker already lets the catch colour outrank the hazard colour; the ring argued with itself.