Add shared multiplayer gear puzzle (Chamber of Motion)
Players open a no-login link and see live cursors and dragged gear pieces synced in real time, backed by a small Workerman WebSocket relay (src/Command/PuzzleRelayCommand.php) run alongside symfony serve - no Docker/Mercure hub needed. The board renders the wall artwork with a spare-gears tray, and a "Reset puzzle" button (visible only to logged-in users, verified server-side via a signed token) lets the DM wipe the shared state for everyone. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -59,3 +59,14 @@ MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
|
||||
###> symfony/mailer ###
|
||||
MAILER_DSN=null://null
|
||||
###< symfony/mailer ###
|
||||
|
||||
# Puzzle relay (src/Command/PuzzleRelayCommand.php): a small WebSocket server,
|
||||
# run separately with `symfony console app:puzzle-relay` (or `php bin/console
|
||||
# app:puzzle-relay`) alongside symfony serve, that syncs cursors and dragged
|
||||
# pieces across the shared puzzle screens. No Symfony/Mercure component covers
|
||||
# this (Mercure needs its own hub process/container); Workerman gives us a
|
||||
# plain-PHP WebSocket server instead.
|
||||
# PUZZLE_RELAY_LISTEN is the address the relay process binds to.
|
||||
PUZZLE_RELAY_LISTEN=0.0.0.0:8091
|
||||
# PUZZLE_RELAY_PUBLIC_URL is the address browsers connect to.
|
||||
PUZZLE_RELAY_PUBLIC_URL=ws://127.0.0.1:8091
|
||||
|
||||
Reference in New Issue
Block a user