Players who join a match in progress aren't told they can use .join to play straight away #8

Open
opened 2026-10-12 11:09:04 -04:00 by goddard · 1 comment
Collaborator

A newcomer who connects while a match is running waits as a spectator until the round ends, and nothing tells them that .join would put them in straight away. Many first-time players arrive this way, and those who leave within minutes mostly arrived this way.

  • tws_t5_join.gsc:42 and tws_t6_join.gsc:47 spawn a spectating newcomer immediately when they type .join, as the T5 README describes ("Type .join in chat while spectating after joining a match in progress to spawn immediately", t5/scripts/README.md:231).
  • The only mention is the .help line "Join mid-round (newcomers only)" (tws_t5_join.gsc:12, tws_t6_join.gsc:17). The welcome on connect shows the map record and nothing else (lb_welcome, tws_t5_leaderboard.gsc:67-91).
  • In Electric Cherry's completed matches, 423 players had a first recorded day on or before 4 October. 179 of them (42%) joined their first match more than 2 minutes after it started. 56 left within 10 minutes while their match carried on, and 46 of those 56 had joined mid-match. Only 4 of the 56 came back within a week, against 11% of the 423 overall.
  • Only 8 players typed .join in chat between 7 and 12 October.

Fix

  • On T5 and T6, a newcomer who connects while a round is in progress sees "You're spectating until the round ends. Type .join to play now", on their own screen only.
  • The prompt appears only when .join would accept them: not for players who have already played this match (tws_t5_join.gsc:52-57, tws_t6_join.gsc:56-60), and not when the game isn't ready for .join.
  • The prompt repeats (for example every 30 seconds) until the player spawns or disconnects, and stops at the round change.
  • The live checks cover a newcomer connecting mid-round, a player reconnecting after they've played, and a connect between rounds.
A newcomer who connects while a match is running waits as a spectator until the round ends, and nothing tells them that `.join` would put them in straight away. Many first-time players arrive this way, and those who leave within minutes mostly arrived this way. - `tws_t5_join.gsc:42` and `tws_t6_join.gsc:47` spawn a spectating newcomer immediately when they type `.join`, as the T5 README describes ("Type `.join` in chat while spectating after joining a match in progress to spawn immediately", `t5/scripts/README.md:231`). - The only mention is the `.help` line "Join mid-round (newcomers only)" (`tws_t5_join.gsc:12`, `tws_t6_join.gsc:17`). The welcome on connect shows the map record and nothing else (`lb_welcome`, `tws_t5_leaderboard.gsc:67-91`). - In Electric Cherry's completed matches, 423 players had a first recorded day on or before 4 October. 179 of them (42%) joined their first match more than 2 minutes after it started. 56 left within 10 minutes while their match carried on, and 46 of those 56 had joined mid-match. Only 4 of the 56 came back within a week, against 11% of the 423 overall. - Only 8 players typed `.join` in chat between 7 and 12 October. **Fix** - [ ] On T5 and T6, a newcomer who connects while a round is in progress sees "You're spectating until the round ends. Type .join to play now", on their own screen only. - [ ] The prompt appears only when `.join` would accept them: not for players who have already played this match (`tws_t5_join.gsc:52-57`, `tws_t6_join.gsc:56-60`), and not when the game isn't ready for `.join`. - [ ] The prompt repeats (for example every 30 seconds) until the player spawns or disconnects, and stops at the round change. - [ ] The live checks cover a newcomer connecting mid-round, a player reconnecting after they've played, and a connect between rounds.
goddard added the
priority
medium
type/uxgame/t5game/t6
labels 2026-10-12 11:09:04 -04:00
josh was assigned by goddard 2026-10-12 11:09:04 -04:00
Author
Collaborator

Reviewed 3bb0b5178e. Unresolved; a related T6 join fix does not implement this ticket.

This review checks the current implementation against every acceptance criterion, regardless of commit references.

Checklist

  • Private newcomer prompt. Neither join module registers a connection reminder or automatically tells a waiting newcomer to use .join; messages occur only after a command.
  • Eligible-only prompt. No prompt exists to gate. Existing has-played tracking is connection-local, so the stated already-played-this-match/reconnect case also needs explicit handling.
  • Repeat and stop rules. There is no reminder loop or corresponding spawn/disconnect/round-change stop behavior.
  • Live-check coverage. The existing join lifecycle checks do not validate the requested prompt, cadence and stop rules across newcomer/reconnect/between-round connections.

Review notes

  • 664e8da81b fixes T6 setup spawns incorrectly consuming .join eligibility. It is useful adjacent work, not this discoverability feature.
  • node tools/check_join.mjs: all 17 T6 lifecycle/request checks passed. They use engine shims; this is not live gameplay validation. T5 README explicitly documents connection-local eligibility.

Next steps

  • Add the private eligibility-aware reminder on both games, define already-played reconnect handling, and validate the prompt lifecycle.
Reviewed 3bb0b5178e40ea6d322093283edb39f160542a07. Unresolved; a related T6 join fix does not implement this ticket. This review checks the current implementation against every acceptance criterion, regardless of commit references. **Checklist** - [ ] **Private newcomer prompt.** Neither join module registers a connection reminder or automatically tells a waiting newcomer to use .join; messages occur only after a command. - [ ] **Eligible-only prompt.** No prompt exists to gate. Existing has-played tracking is connection-local, so the stated already-played-this-match/reconnect case also needs explicit handling. - [ ] **Repeat and stop rules.** There is no reminder loop or corresponding spawn/disconnect/round-change stop behavior. - [ ] **Live-check coverage.** The existing join lifecycle checks do not validate the requested prompt, cadence and stop rules across newcomer/reconnect/between-round connections. **Review notes** - 664e8da81bc88ed1b7e57217d09dd28eb19cbbf7 fixes T6 setup spawns incorrectly consuming .join eligibility. It is useful adjacent work, not this discoverability feature. - node tools/check_join.mjs: all 17 T6 lifecycle/request checks passed. They use engine shims; this is not live gameplay validation. T5 README explicitly documents connection-local eligibility. **Next steps** - Add the private eligibility-aware reminder on both games, define already-played reconnect handling, and validate the prompt lifecycle.
Sign in to join this conversation.