Welcome to Super-Shiritori!
Please remember:
- No vandalism – Do not add nonsense, false info, spam, or blank pages.
- Respect others – Be polite and assume good faith.
- Use reliable information – Make sure edits are accurate and IMPORTANT.
- Stay constructive – Help us grow the wiki with content, especially with the Word compendium.
⚠️ Repeated vandalism or rule-breaking may result in warnings or blocks. If you see vandalism, please revert it and notify an admin.
imported>BlankEntity No edit summary |
No edit summary |
||
| Line 187: | Line 187: | ||
Saving a game's state used to be a direct, synchronous disk write performed on every single turn, right on the bot's one shared event loop — since every other game mode, in every server, runs on that same loop, a large Protori game (achievement thresholds go up to 25,000 points, implying a lot of turns) could measurably stall every other concurrent game across the entire bot on every word played. That save now happens on a background thread instead. | Saving a game's state used to be a direct, synchronous disk write performed on every single turn, right on the bot's one shared event loop — since every other game mode, in every server, runs on that same loop, a large Protori game (achievement thresholds go up to 25,000 points, implying a lot of turns) could measurably stall every other concurrent game across the entire bot on every word played. That save now happens on a background thread instead. | ||
The background scan behind the Protori Role described above used to re-check every eligible member on every single pass with no memory of the outcome between passes — a member who had reached level 12 and then left the server (or was simply never cached) got re-fetched from Discord's API every single minute, forever, with no pacing between consecutive lookups in the same pass. Since the underlying level data only ever grows over a bot's lifetime, this got slower and more prone to tripping Discord's rate limits over time, and was found to be a real contributing factor during an investigation into a live outage. It now remembers which users are confirmed to no longer be members (skipping them for the rest of that session) and pauses briefly between lookups, so the scan can no longer grow into a rate-limit problem the way it previously could. | |||
<code>/start_protori</code> and <code>/end_protori</code> could previously fail outright with a generic Discord "Unknown interaction" error if their own background setup or teardown work took longer than Discord's 3-second initial-response window. Both commands now acknowledge the interaction immediately and send their actual response afterward, removing the crash. | |||
== See also == | == See also == | ||
Revision as of 01:59, 24 August 2026
Protori
Protori is a scoring-based variant of multiplayer Shiritori, played in a shared text channel. Rather than simply extending a word chain for its own sake, every accepted word earns points, and the game is built around chasing a high score rather than outlasting other players.
Starting a Game
A server member with the Manage Messages permission, the bot owner, or a word curator can start a game with /start_protori [#channel]. A Protori game and a multiplayer Shiritori game cannot both run in the same channel at once; starting either is rejected if the other is already active there. The bot posts the rules along with a random starting word, and a "Point System Explained?" button that shows a private, detailed breakdown of the scoring formula (including a worked example) to whoever clicks it.
Rules
- A word must match some ending portion of the previous word — anywhere from just its final letter up to every letter but the first. A word with no such overlap at all is rejected.
- Words must be between 2 and 80 characters long, contain only letters, hyphens, and apostrophes, and be found in the dictionary.
- A player cannot play twice in a row; someone else must play before the same player can go again.
- Unlike regular multiplayer Shiritori, there is no fixed turn order beyond that rule — any eligible player in the channel may play the next word whenever they're ready.
- Playing a word that has already been used in the game ends it immediately (see Ending a Game below).
A server's /toggle_corrections setting (the same one used by regular multiplayer Shiritori) also applies to Protori: with it off, an invalid word gets an explanatory message alongside its ❌ reaction; with it on, invalid words are only ever marked with a reaction.
Scoring
Every accepted word earns points from two parts: a base score and a chain bonus.
Base Score
A word's base score is the sum of its letters' point values, using a flat table calibrated to how rare each letter actually is across the dictionary rather than a standard Scrabble tile distribution:
| Letter/Symbol | Points | Letter | Points | Letter | Points | Letter | Points |
|---|---|---|---|---|---|---|---|
| ' | 8 | h | 3 | o | 1 | v | 4 |
| - | 1 | i | 1 | p | 3 | w | 4 |
| a | 1 | j | 4 | q | 10 | x | 8 |
| b | 3 | k | 4 | r | 1 | y | 4 |
| c | 1 | l | 1 | s | 1 | z | 5 |
| d | 2 | m | 3 | t | 1 | ||
| e | 1 | n | 1 | u | 2 | ||
| f | 4 | ||||||
| g | 3 |
An apostrophe is worth as much as any of the rarest letters (8 points), and a hyphen is worth as little as the most common ones (1 point).
Comparison to Scrabble
Protori's letter values are explicitly not the standard tile-point distribution used in Scrabble, despite drawing on the same basic idea (rarer letters are worth more). Laid side by side:
| Letter | Protori | Scrabble | Difference |
|---|---|---|---|
| A | 1 | 1 | — |
| B | 3 | 3 | — |
| C | 1 | 3 | Protori −2 |
| D | 2 | 2 | — |
| E | 1 | 1 | — |
| F | 4 | 4 | — |
| G | 3 | 2 | Protori +1 |
| H | 3 | 4 | Protori −1 |
| I | 1 | 1 | — |
| J | 4 | 8 | Protori −4 |
| K | 4 | 5 | Protori −1 |
| L | 1 | 1 | — |
| M | 3 | 3 | — |
| N | 1 | 1 | — |
| O | 1 | 1 | — |
| P | 3 | 3 | — |
| Q | 10 | 10 | — |
| R | 1 | 1 | — |
| S | 1 | 1 | — |
| T | 1 | 1 | — |
| U | 2 | 1 | Protori +1 |
| V | 4 | 4 | — |
| W | 4 | 4 | — |
| X | 8 | 8 | — |
| Y | 4 | 4 | — |
| Z | 5 | 10 | Protori −5 |
Neither the apostrophe nor the hyphen has a Scrabble equivalent at all — Scrabble's physical tile set has no punctuation.
Nineteen of the twenty-six letters carry identical values in both systems; only seven diverge, and every divergence is Protori valuing the letter lower than Scrabble except for G and U. The two biggest gaps are both letters Protori considers far more common than Scrabble does: Z (5 vs. 10) and J (4 vs. 8). That tracks with how the two point systems were actually built — Scrabble's values reflect letter frequency across general English text, while Protori's are calibrated against its own roughly 1.67-million-word dictionary, which leans heavily on scientific, technical, and foreign-derived vocabulary where Z and J show up far more often than they would in ordinary English writing.
Chain Bonus
Matching more of the previous word's ending — beyond just its last letter — adds a bonus of roughly +1% of the word's base score per matched character. A word that only matches the previous word's final letter gets no bonus at all; one that matches deep into a long previous word can gain up to roughly +79%.
Example: the word quiz has a base score of Q(10) + U(2) + I(1) + Z(5) = 18. If it matched 5 characters of the ending of the previous word, its final score would be round(18 × 1.05) = 19 points.
There are no attack mechanics, penalties for other players, or bonus-emoji reactions in the current version of Protori — score is purely base score plus chain bonus.
Notable High-Scoring Words
Checking the dictionary directly against the letter-point table above (base score only, no chain bonus) turns up some of the highest-scoring legitimate entries a player could actually play:
| Word | Base Score | Length |
|---|---|---|
| Expression error: Unrecognized punctuation character "{". | 290 | 58 |
| Expression error: Unrecognized punctuation character "{". | 234 | 29 |
| Expression error: Unrecognized punctuation character "{". | 225 | 24 |
| Expression error: Unrecognized punctuation character "{". | 220 | 79 |
| Expression error: Unrecognized punctuation character "{". | 187 | 45 |
| Expression error: Unrecognized punctuation character "{". | 181 | 50 |
| Expression error: Unrecognized punctuation character "{". | 175 | 75 |
| Expression error: Unrecognized punctuation character "{". | 171 | 44 |
| Expression error: Unrecognized punctuation character "{". | 164 | 41 |
| Expression error: Unrecognized punctuation character "{". | 163 | 70 |
| Expression error: Unrecognized punctuation character "{". | 163 | 77 |
| Expression error: Unrecognized punctuation character "{". | 159 | 41 |
| Expression error: Unrecognized punctuation character "{". | 159 | 66 |
| Expression error: Unrecognized punctuation character "{". | 157 | 39 |
| Expression error: Unrecognized punctuation character "{". | 156 | 58 |
| Expression error: Unrecognized punctuation character "{". | 155 | 66 |
| Expression error: Unrecognized punctuation character "{". | 155 | 51 |
| Expression error: Unrecognized punctuation character "{". | 155 | 52 |
| Expression error: Unrecognized punctuation character "{". | 155 | 77 |
| Expression error: Unrecognized punctuation character "{". | 154 | 80 |
| Expression error: Unrecognized punctuation character "{". | 153 | 79 |
| Expression error: Unrecognized punctuation character "{". | 153 | 76 |
| Expression error: Unrecognized punctuation character "{". | 153 | 50 |
| Expression error: Unrecognized punctuation character "{". | 152 | 19 |
| Expression error: Unrecognized punctuation character "{". | 151 | 65 |
all within Protori's 80-character limit, computed against the exact letter-value table above with no chain bonus applied.
Ending a Game
Playing an already-used word ends the game immediately and costs that player a 250-point penalty, with a pointed message calling them out for it. When the game ends — whether by a repeat, or manually via /end_protori — the bot posts a final leaderboard (up to the top 20 scores), the number of unique words played, and the dictionary-coverage percentage that represents.
Unless the game was ended by an admin (/end_protori stops it permanently, with no restart), a new Protori game starts automatically in the same channel after a 2-minute cooldown, mirroring how multiplayer Shiritori's own auto-restart behaves.
Statistics
Protori tracks its own stats per player, separate from multiplayer Shiritori's: total points, turns played, hyphens and apostrophes used, longest word, unique words played, and how many games ended because that player repeated a word. These can be viewed with /protori_stats (global totals plus a per-server breakdown, Public/Private) and compared with /protori_leaderboard (server or global).
Protori also has its own set of achievements — see the "Shiritoris" category on Achievements — covering score milestones (from a game-ending negative score up to reaching 25,000 points), single-word scoring feats, and related Timed Shiritori and solo-AI achievements grouped alongside it.
Unlike multiplayer Shiritori and Solo Shiritori, Protori has no AI opponent support at all — there is no equivalent of /invite_ai here. Attempting it during an active Protori match is rejected outright, and the first player to try it unlocks the "Ghosted" achievement.
The Protori Role
Separately from gameplay, any member of the bot's home server who reaches overall level 12 (through any game mode, not Protori specifically) is automatically granted a dedicated Protori-themed Discord role, checked by a background scan roughly once a minute. This role is a cosmetic reward tied to general progress — it does not gate who is allowed to actually play Protori.
History
Protori originally restricted both which server could run the mode at all and who could participate in it to holders of the level-12 role described above, scoped to the bot's home server specifically. That restriction has since been removed: any server can now start and fully play a Protori game through /start_protori, and the level-12 role is purely the cosmetic reward described above rather than a gameplay gate.
Saving a game's state used to be a direct, synchronous disk write performed on every single turn, right on the bot's one shared event loop — since every other game mode, in every server, runs on that same loop, a large Protori game (achievement thresholds go up to 25,000 points, implying a lot of turns) could measurably stall every other concurrent game across the entire bot on every word played. That save now happens on a background thread instead.
The background scan behind the Protori Role described above used to re-check every eligible member on every single pass with no memory of the outcome between passes — a member who had reached level 12 and then left the server (or was simply never cached) got re-fetched from Discord's API every single minute, forever, with no pacing between consecutive lookups in the same pass. Since the underlying level data only ever grows over a bot's lifetime, this got slower and more prone to tripping Discord's rate limits over time, and was found to be a real contributing factor during an investigation into a live outage. It now remembers which users are confirmed to no longer be members (skipping them for the rest of that session) and pauses briefly between lookups, so the scan can no longer grow into a rate-limit problem the way it previously could.
/start_protori and /end_protori could previously fail outright with a generic Discord "Unknown interaction" error if their own background setup or teardown work took longer than Discord's 3-second initial-response window. Both commands now acknowledge the interaction immediately and send their actual response afterward, removing the crash.
