Achievements
This commit is contained in:
@@ -37,7 +37,7 @@ The goal is to make waiting social and consequential without rewarding button sp
|
||||
|
||||
1. **Optional live presence — implemented.** Show participating players watching the clock and who is viewing Chat. Off by default; ephemeral heartbeats, automatic expiry, and no activity history. See the details below.
|
||||
2. **Personal bests and rivalries — implemented.** Your score shows closest call, highest-scoring press, leaderboard position, and the player immediately ahead with points needed to catch up. Existing history is credited automatically; no data migration is needed.
|
||||
3. **Achievements.** Start with Close call (under a minute remaining), Full spectrum (every zone), and Keeping us alive (a meaningful quiet stretch; threshold to be decided). Credit existing history where possible. Avoid rewards for raw press volume or repeated resets.
|
||||
3. **Achievements — implemented.** Close call, Full spectrum, and Keeping us alive appear under Your score with unlock dates and progress. Existing press history counts, with no bonus points or press-volume rewards.
|
||||
4. **Infrequent community milestones.** Announce survival milestones, notable press totals, and new closest-call records in chat. Deduplicate announcements and keep them rare. Define thresholds and historic backfill behavior before implementation.
|
||||
5. **Optional zone alerts.** Let players choose a zone and opt into sound or browser notifications. Request permissions only after an explicit action, alert on transitions rather than polls, and handle resets and denied permissions. Closed-browser delivery is separate work, not promised by basic tab notifications.
|
||||
6. **Separate one-life mode — exploratory.** Allow one press per player per round in a separate mode with its own rounds and leaderboard. Never silently change the current game or reset its data.
|
||||
@@ -48,7 +48,26 @@ Keep new features consistent with the Catppuccin Mocha styling and selectable-se
|
||||
|
||||
Your score includes private personal records derived from your existing press history. Closest call means the least time remaining; highest-scoring press means the most points in a single press. Ties prefer the lower remaining time, then the earlier press. A zero-point press is still a valid record; new players see placeholders until their first press.
|
||||
|
||||
Leaderboard positions match the public ordering (points descending, then name alphabetically), not shared competition ranks. The rival is the player immediately above you, including alphabetical ties. The score card shows the gap to match their total and the minimum additional whole-number points to exceed it; actual presses still award fixed zone values, so you may jump past that threshold. Equal top scores are described as a shared lead; solo players and outright leaders receive their own messages. These cards refresh every five seconds while Your score is open and after pressing. Rival information exposes only public names and totals, never another player's records or press history. Achievements are the next roadmap step.
|
||||
Leaderboard positions match the public ordering (points descending, then name alphabetically), not shared competition ranks. The rival is the player immediately above you, including alphabetical ties. The score card shows the gap to match their total and the minimum additional whole-number points to exceed it; actual presses still award fixed zone values, so you may jump past that threshold. Equal top scores are described as a shared lead; solo players and outright leaders receive their own messages. These cards refresh every five seconds while Your score is open and after pressing. Rival information exposes only public names and totals, never another player's records or press history.
|
||||
|
||||
### Achievements
|
||||
|
||||
Your score includes eight private achievements, derived from the game's existing press history:
|
||||
|
||||
| Achievement | Requirement |
|
||||
|-------------|-------------|
|
||||
| Close call | A successful press with strictly less than 60 seconds remaining (and more than zero). |
|
||||
| Full spectrum | At least one press in each of the six scoring zones; repeated presses in one zone do not advance it. |
|
||||
| Red alert | Press in the red zone. |
|
||||
| Into the dark | Press in the black zone. |
|
||||
| White knuckle | Press in the white zone. |
|
||||
| Photo finish | Press with strictly less than ten seconds remaining, and more than zero. |
|
||||
| Last second | Press with strictly less than one second remaining, and more than zero. |
|
||||
| Keeping us alive | Press after a global quiet stretch of at least half the saved game countdown: 12 hours for the standard 24-hour game. Scales with shorter test games. |
|
||||
|
||||
Quiet time is measured from the previous press by **any** player, or from game start if there was no previous press. It is not the time since your own last press. The earliest qualifying press determines each unlock date. Progress is based on completed presses, not idle time accumulating while the page is open. These are badges only: they do not change scores, publish chat announcements, or reward repeated resets.
|
||||
|
||||
Historical JSON imports and existing SQLite history are credited automatically. No new table or manual migration is required; badges are recomputed from history after restart. They remain available after game over and refresh with Your score. Personal achievements are returned only by authenticated `GET /api/me`, not by the public leaderboard or final leaderboard. Community milestones are next on the roadmap.
|
||||
|
||||
### Live presence
|
||||
|
||||
|
||||
Reference in New Issue
Block a user