Repository navigation
Conversation
Season 3 is 2v2 with both teammates in the base game (April 2024, before the DLC), and its round robin is scored on points rather than lockout. - Layout: the broadcast cuts between a team view and a one-player focus view, each with the grid and timer elsewhere. LAYOUT_SEASON_3 is the pair (Layout.scenes); board.scene_for picks the scene per frame, and a game's square text, names and commentators come from one scene. Neither scene shows claim counts or names, so a scene is recognized by its timer reading. Calibrated on Jo W Bush vs Monkey Ballers, with a redacted fixture per scene. - Teams: a team can list two members without base/DLC roles, and every claim is both players'. Season 5 files are written as before. - Scoring: a round robin game runs a full hour and a line doesn't end it; when the clock stops each side scores a point per square plus 2 per completed line, and the higher total wins (WinType.POINTS, equal is a tie). Games carry Scoring (lockout by default) set from the season's format, and a points game stores red_points/blue_points. Its game_end is the segment's last reading. New rules: season_scoring and points_mismatch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first VODs show play stopping seconds after a team reaches 13 points (squares + 2 per line); one game ended six minutes after that team's line. A points game is now won on reaching winner.POINTS_TO_WIN, with its game_end on that claim, and only a game nobody won that way is decided on points at time up. mark_after_win covers points games won at 13. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fourth VOD's game ran to 1:03:25 and ended when a team reached 13 points, so the docs no longer say a game runs to its hour. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adri0
added a commit
that referenced
this pull request
Oct 22, 2026
Main moved scoring to _settle_game, which runs once the match's season is known. The time limit now fits that: _game_events returns the game's events and the sample where the clock reached two hours, and _settle_game adds the GAME_END there and calls the count, as it does for a points game that ran out of time. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Season 3 (April 2024) is 2v2 with both teammates in the base game, and every game, round robin and playoffs, is scored on points rather than lockout. This adds what extraction and validation need for it.
Layout: two scenes, picked per frame
The broadcast cuts between a team view (grid bottom center, timer to its right) and a one-player focus view (grid on the right, timer above it), often every minute or two. One layout per video would miss most of the claims, so
LAYOUT_SEASON_3is the pair (Layout.scenes):board.scene_forpicks the scene for each frame, and a game's square text, names and commentators are read from one scene (extract._text_scene, the larger grid when it's seen long enough).score_box_*/name_box_*are now optional), so a scene is recognized by its timer box reading as a clock. Team names stay "unknown" for the contributor to fill in.redact_fixture.pykeeps only the grid box (not the whole column) for these layouts, since the column holds players' webcams.Teams without roles
In Season 3 the overlay can't tell which teammate completed a square, so a
teams.yamlteam can list twomembersinstead ofbase_player/dlc_player, and every claim is both players'. Season 5 files are written exactly as before.Points scoring
A Season 3 round robin game is a race to 13 points: each side scores a point per square plus 2 per completed line, a line alone doesn't win, and the first side to 13 points wins. A game stopped by the clock before either side gets there goes to the higher total. There's no one-hour limit: one game ran to 1:03:25 and ended at 13. I worked this out from the VODs, since the archive has no Season 3 rules: in the first four games play stopped 13–38 s after a team reached 13. In one of them, play stopped six minutes after that team had already completed a line. Points = squares + 2 × lines also fits all six teams' totals on the archived bingobrawlers.com leaderboard.
Scoring(lockoutby default,points) per game, set at extraction fromSEASON_FORMATS[season].scoring(validation.scoring_for). Points for every Season 3 game: the semi-final VOD shows both playoff games going on after a line (a179804).WinType.POINTS, pluswinner.points,winner.LINE_POINTS(2) andwinner.POINTS_TO_WIN(13). Equal totals at time up are atie.game_endis the claim that reached 13, found the same way as for a line. If nobody got to 13 (a game stopped by the clock), it's the segment's last reading, where the game screen gives way to the "TIME FINISHED" end screen. The JSON getsscoring,red_pointsandblue_points; a lockout game's JSON doesn't change.season_scoringandpoints_mismatch.last_event_not_game_endandmark_after_winalso cover points games.The first match (site #139) extracts with no hand-added events: 23 claims, and the final board matches the end screen (blue reaches 13 at 59:20).
Tests: 560 unit tests pass, plus new tests for the scenes, points, teams, validation and settling. A release is needed before the site's validate check can pass on Season 3 matches.
🤖 Generated with Claude Code