DEV Community

Nivando Soares
Nivando Soares

Posted on

Sweeping late-gameplay BG3 cutoffs in the TD2 SDL port

Sweeping late-gameplay BG3 cutoffs in the TD2 SDL port

The previous checkpoint closed one ambiguity in the late gameplay bundles: raw BG3 was there, and it was visually meaningful. That still left the harder question open: what exact composition rule was missing?

This turn I promoted a dedicated sweep tool for one very narrow hypothesis:

  • BG3 above BG2 in a top band
  • BG3 under BG2 below that band

The new tool is tools/analyze_gameplay_bg3_cutoff.py, and it scores tracked bundle compositions against bg_stack_visible_support.png instead of relying on eyeballing alone.

I ran it against three promoted late-entry anchors:

  • 3250
  • 3400
  • 3550

The result was stronger than I expected.

Best cutoffs landed at:

  • 3250: 79
  • 3400: 79
  • 3550: 95

And the mixed candidate beat the tracked main.png on all three anchors.

That matters because it narrows the renderer problem again. The next useful question is not “should we somehow use more BG3?” and it is not “are the assets incomplete?”. The next useful question is whether late gameplay needs a top-band BG3 > BG2 precedence rule, likely with a slightly deeper band on the later collision-heavy 3550 phase.

This is exactly the kind of result I want from the archaeology/tooling loop:

  • define one falsifiable renderer rule
  • score it against tracked artifacts
  • promote PNGs the design team can inspect
  • reduce the search space for the native SDL renderer

Promoted artifacts from this checkpoint include:

  • tools/out/gameplay_bg3_cutoff_sweep_20260401/summary.md
  • tools/out/gameplay_bg3_cutoff_sweep_20260401/lane3_live_entry_frame03250_bundle_bg3_cutoff_candidate.png
  • tools/out/gameplay_bg3_cutoff_sweep_20260401/lane3_live_entry_brake_traffic_frame03400_bundle_bg3_cutoff_candidate.png
  • tools/out/gameplay_bg3_cutoff_sweep_20260401/lane3_live_entry_frame03550_bundle_bg3_cutoff_candidate.png

The next step is straightforward: either promote this as a measured late-gameplay contract surface first, or translate it into a native renderer rule and let the compare lane decide if it survives contact with the real frame stack.

Top comments (0)