Add proximity-based map record reminders
This commit is contained in:
@@ -409,14 +409,18 @@ followed by up to three bounded holder lines. Single-page records have no
|
||||
counter or footer; ties spanning multiple pages retain a page count and
|
||||
12 seconds per page. Help pauses a visible record and resumes its remaining
|
||||
page time when help ends. `.leaders` during help replaces the pending record
|
||||
with a fresh replay from page one. One service is visible at a time. Services
|
||||
remain private and work when the HUD module is omitted.
|
||||
with a fresh replay from page one. Round-start reminders use just the record
|
||||
header and one proximity or milestone line for six seconds. They skip busy
|
||||
services; opening help discards a reminder instead of resuming it later.
|
||||
One service is visible at a time. Services remain private and work when the
|
||||
HUD module is omitted.
|
||||
|
||||
Both games allocate only the active service view and release it when idle or
|
||||
before switching between help and records. Pages reuse the active view's
|
||||
elements. The core uses 10 archived elements, plus two independent elements for AFK. A nine-row help page uses 19 nonarchived elements, or 20 with a multi-page
|
||||
counter; records use four, or five with a multi-page counter. Hidden elements
|
||||
still occupy slots. The controller and pending requests are separate from
|
||||
still occupy slots. Compact reminders use two nonarchived elements.
|
||||
The controller and pending requests are separate from
|
||||
display lifetime, so an idle service holds no HUD elements.
|
||||
|
||||
HUD `1.4.2` requires matching common `1.4.0+` and
|
||||
@@ -426,7 +430,8 @@ avoiding dynamic counter strings in the text config-string pool. Numeric HP
|
||||
still uses `SetValue`. On r5334+, deploy the updated HUD script and restart
|
||||
the map; no full server-process restart is required. On older Plutonium
|
||||
revisions, update clients and server and fully restart them before deploying.
|
||||
Leaderboard `1.1.0` remains compatible. AFK `2.0.0` requires plugin `1.4.0+`,
|
||||
Leaderboard `1.2.0` requires matching common `1.5.0+` for round-start reminders.
|
||||
AFK `2.0.0` requires plugin `1.4.0+`,
|
||||
common `1.4.0+` and the EC reserve service; see the [AFK guide](docs/afk.md). Existing
|
||||
leaderboard plugin requirements still apply. Common retains its older panel
|
||||
helpers for unchanged consumers; the new layout uses fullscreen overlay helpers
|
||||
@@ -435,8 +440,9 @@ with the same integer shader-width handling.
|
||||
### HUD validation
|
||||
|
||||
Run `node tools/check_hud.mjs` for portable pagination, service arbitration,
|
||||
request replacement and cleanup checks, and `node tools/check_leaderboard.mjs`
|
||||
for record data handling. Run `node tools/check_bank.mjs`,
|
||||
reminder rendering, request replacement and cleanup checks, and
|
||||
`node tools/check_leaderboard.mjs` for record data handling and reminder cadence.
|
||||
Run `node tools/check_bank.mjs`,
|
||||
`node tools/check_join.mjs` and `node tools/check_telemetry.mjs` for unchanged
|
||||
command/lifecycle regressions. These
|
||||
checks use engine shims and do not prove GSC VM behavior. Follow the
|
||||
@@ -488,7 +494,10 @@ Before rollout, validate both engines in Plutonium:
|
||||
## Map record announcements
|
||||
|
||||
Install `tws_t5_leaderboard.gsc` for T5 or `tws_t6_leaderboard.gsc` for T6,
|
||||
**along with common `1.2.0+`** for that game when using leaderboard `1.1.0`.
|
||||
**along with common `1.5.0+`** for that game when using leaderboard `1.2.0`.
|
||||
Copy both scripts for each installed game and restart the map. This update
|
||||
adds no native-plugin or backend requirement and needs no full server-process
|
||||
restart when existing leaderboard dependencies are already installed.
|
||||
The module privately announces the current map's fleet-wide highest recorded
|
||||
round and every tied holder once per connection, including spectator newcomers.
|
||||
Type `.leaders` to replay the record privately from the latest usable cache.
|
||||
@@ -530,6 +539,32 @@ the announcement finishes. Both games release their view elements when idle or
|
||||
changing service kinds. Disconnect or game end cleans up any remaining service
|
||||
elements.
|
||||
|
||||
At round start, reminders become more frequent as the current round approaches
|
||||
the latest usable cached record. The cadence is measured back from that record:
|
||||
|
||||
| Rounds below the record | Reminder rounds |
|
||||
| --- | --- |
|
||||
| More than 20 | None |
|
||||
| 11–20 | At gaps of 20 and 15 rounds |
|
||||
| 6–10 | At gaps of 10, 8 and 6 rounds |
|
||||
| 1–5 | Every round |
|
||||
| Record reached | Matching-round milestone |
|
||||
| First round above the record | Overtake milestone, then stop for the match |
|
||||
|
||||
For a round 50 record, reminders appear on rounds 30, 35, 40, 42, 44 and
|
||||
45–49, with milestones at 50 and 51. Each uses the existing record header and
|
||||
one short proximity or milestone line for six seconds, without holder pages.
|
||||
Milestones describe the round reached; the new result is recorded only after
|
||||
the match ends. The full join announcement and `.leaders` retain all holders
|
||||
and their 12-second pages. `.leaders` remains available after the overtake.
|
||||
|
||||
Reminders require player readiness and skip players with a pending welcome,
|
||||
help or record view, or a welcome/manual record request in the last 30 seconds.
|
||||
Skipped reminders are not queued. Opening help discards an active reminder.
|
||||
Empty, unavailable and expired snapshots produce no reminders. The existing
|
||||
cache worker supplies all record data; round starts do not trigger HTTP requests.
|
||||
Both games use the same behavior, including with the optional HUD omitted.
|
||||
|
||||
One level worker fetches the map list and pages of three players, stopping when
|
||||
the highest-round tie ends. Successful snapshots refresh every five minutes.
|
||||
Failures retry after 30 seconds and retain the last complete snapshot for up to
|
||||
@@ -562,6 +597,19 @@ page: each should start one private announcement from the first page. Repeat
|
||||
while help is open, then disconnect or end the game during a replay to check
|
||||
cleanup. Disable the leaderboard module and verify `.leaders` is absent from help.
|
||||
|
||||
For reminders, use a known record on each engine and advance through all cadence
|
||||
boundaries, the matching round and the first higher round. Confirm later rounds
|
||||
remain quiet while `.leaders` still works, including after a cache refresh.
|
||||
Check a record not divisible by five to verify the cadence follows the record.
|
||||
Keep help or a full record open at an eligible round, join immediately before
|
||||
that round, and request `.leaders` within 30 seconds of it; no reminder should
|
||||
replace those views or appear later as a queued message. Open help during a
|
||||
reminder and confirm it does not resume. Verify six-second dismissal, two-element
|
||||
cleanup on disconnect/game end, and the same behavior without HUD installed.
|
||||
Repeat with an empty or expired cache and compare request logs: eligible rounds
|
||||
must add no HTTP traffic. Live T5/T6 rendering and round-transition validation
|
||||
remain required even when portable checks and T6 compilation pass.
|
||||
|
||||
## Telemetry authentication (T5 and T6)
|
||||
|
||||
Both reporters default to `https://ec.thewrightserver.net/api/telemetry` and send
|
||||
|
||||
Reference in New Issue
Block a user