Games
Games
Meshbbs includes optional, lightweight games you can access from the public channel. They’re designed to be low‑traffic and fun without overwhelming the mesh.
🎰 Slot Machine (public channel)
- Commands (use your configured prefix; default shown):
^SLOT/^SLOTMACHINE— spin once; the BBS broadcasts the result on the public channel (best‑effort)^SLOTSTATS— show your coins, spins, wins, and jackpots
- Economy:
- Each spin costs 5 coins
- New players start with 100 coins
- If your balance reaches 0, you’ll be refilled to 100 after ~24 hours
- Payouts (multiplier × bet):
- 7️⃣7️⃣7️⃣ = JACKPOT (progressive pot, minimum 500 coins; grows by 5 coins per losing spin), 🟦🟦🟦 ×50, 🔔🔔🔔 ×20, 🍇🍇🍇 ×14, 🍊🍊🍊 ×10, 🍋🍋🍋 ×8, 🍒🍒🍒 ×5
- Two 🍒 ×3, one 🍒 ×2, otherwise ×0
- Visibility and reliability:
- Results are broadcast to the public channel for room visibility (best‑effort)
- Broadcasts may request an ACK and are considered successful when at least one ACK is received within a short window (no retries)
- Persistence: Player balances and stats are stored under
data/slotmachine/players.json
Tip: If you see “Out of coins… Next refill in ~Hh Mm”, check back later or run <prefix>SLOTSTATS (default ^SLOTSTATS) to see your current balance and stats.
🎱 Magic 8‑Ball (public channel)
- Command:
<prefix>8BALL(default^8BALL) — ask a yes/no question and receive a classic Magic 8‑Ball response
- Behavior:
- Stateless and lightweight; no persistence
- Broadcast-only on the public channel (best‑effort)
- Reliability:
- Broadcasts may request an ACK and are considered successful when at least one ACK is received within a short window (no retries)
🔮 Fortune Cookies (public channel)
- Command:
<prefix>FORTUNE(default^FORTUNE) — receive a random fortune from classic Unix wisdom databases
- Behavior:
- Stateless; draws from a curated set of fortunes including programming quotes, philosophy, literature, poetry, and humor
- All fortunes under 200 characters for mesh-friendly transmission
- Broadcast-only on the public channel (best‑effort)
- 5-second cooldown per node to prevent spam
- Content:
- Classic Unix fortune database entries
- Programming and technology wisdom
- Motivational quotes and life philosophy
- Clean humor and wit
- Quality Assurance:
- Comprehensive unit test coverage (11+ tests)
- Thread safety validation
- Content quality checks and character validation
- Randomness and distribution testing
- Reliability:
- Same broadcast behavior as Magic 8‑Ball
💡 Developer Note: The Fortune module includes extensive documentation and testing. See
docs/development/fortune-module.mdfor implementation details.
More games may be added over time. Have an idea? Open a GitHub issue or discussion!
🧭 TinyHack (DM door)
TinyHack is an optional, compact ASCII roguelike playable via DM sessions. It renders a full snapshot each turn and accepts terse commands.
- Enable in
config.toml:
[games]
tinyhack_enabled = true
# tinymush_enabled = false # optional preview entry
- Enter via the Games submenu: press
Gto list games, thenG1(TinyHack) - Controls:
N,S,E,Wmove;Aattack;U Pdrink potion;U Buse bomb;C Fcast Fireball;Ttake loot;Oopen locked door (needs a key);Rrest;Iinspect;?help;Bback to BBS menu - Onboarding: New players see a brief introduction the first time they enter (size‑aware to fit a single frame). Existing saves skip the intro.
- Help: Press
?for a concise, multi‑line help screen with full command names and short descriptions. - Header: Each turn’s header includes LVL and XP progress (e.g.,
XP7/12). - Goal: Find the Stairs and escape the Tiny Dungeon
- Save files:
data/tinyhack/<username>.json(atomic write‑then‑rename; fsync) - Output is ASCII‑only and capped at ~200 bytes per turn to ensure the first screen fits with the prompt in a single frame
TinyHack Quickstart
- Enter the game from the main menu with
G1(Games ➜ TinyHack). - Goal: Find the Stairs and escape the dungeon.
- Movement:
N,S,E,W. - Combat:
Aattack (crits possible);U Pdrink a potion;U Bthrow a bomb (6 dmg);C Fcast Fireball (5 dmg). - Doors:
Oto open (uses a key),PICKto lockpick (chance improves with lockpicks),U Bto blast it open. - Loot & status:
Ttake loot,Iinspect surroundings,Rrest to regain a little health. - Vendor:
BUY P/B/S/K/H/L(Potion/Bomb/Scroll/Key/Heal/Lockpick),UPG W/Ato upgrade weapon/armor,MYSTfor a mystery item,LEAVEto exit the shop. - Helpful one-time hints appear the first time you encounter monsters, chests, vendors, doors, or traps.
Example turns
1) First steps
TH g… LVL1 HP 10/10 … You stand in a dim corridor… Exits E,S. Opts: N S W E R I ? Q Welcome to TinyHack… Your move?
2) Encounter a locked door
TH g… LVL1 HP 10/10 … A heavy locked door bars the way… Opts: N S W E O PICK U B R I ? Q Hint: Doors: O)pen with key, PICK to lockpick (risk), or U B bomb. Your move?