• exec/load/game_lobby.js x

    From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Sun Jun 28 22:01:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/5c38035bb99b2832e2a85b5a
    Added Files:
    exec/load/game_lobby.js xtrn/syncduke/controls.msg get-binary.js lobby.js lobby.msg syncduke_lib.js
    Modified Files:
    src/doors/syncduke/Game/src/game.c menues.c src/doors/syncduke/syncduke.h syncduke_config.c syncduke_door.c syncduke_game.c syncduke_input.c syncduke_net.c src/doors/syncduke/tests/test_keymap.c xtrn/syncduke/.gitignore install-xtrn.ini syncduke.example.ini
    Log Message:
    syncduke: LAN co-op lobby, chat-sync + alias fixes, door config

    The v1 co-op feature set on top of the UDP mmulti transport:

    - Lobby (xtrn/syncduke/lobby.js over the shared exec/load/game_lobby.js):
    Create/Join a 2-player LAN game, play single-player, or view controls. It
    spawns the native door directly (-s socket, no drop file), so it registers
    as a JS module (?lobby), not a DOOR32 native. install-xtrn wires it plus
    get-binary.js (pre-exec, required) so the door never registers without a
    runnable executable.
    - Door net args (-netrole/-netport/-netpeer) parsed and stripped before the
    engine's command-line parser; syncduke.ini [net] (advertise, port range,
    stale) and [video] (sixel_max_width, use_cell_size) knobs.
    - Chat OOS fix: typemode() built the message in a local buffer but sent the
    stale global tempbuf, corrupting the move FIFO -> "OUT OF SYNC". Send the
    built text.
    - Alias fix: seed the player name from the door's -name (the BBS alias)
    instead of the engine default "XDUKE".
    - Controls: SyncDOOM-style action layer (Space=fire, WASD move/strafe, arrows
    turn) gated on gameplay so menus and Talk get literal keys.
    - Cell-size probe (ESC[16t) for canvas sizing on non-SyncTERM terminals;
    main-menu version line.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Fri Jul 3 18:20:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/71a11cd413b6314d024fb54a
    Modified Files:
    exec/load/game_lobby.js xtrn/syncdoom/controls.msg lobby.js lobby.msg xtrn/syncduke/controls.msg lobby.js lobby.msg
    Log Message:
    syncduke/syncdoom: unified [M]ultiplayer lobby option + frontend text

    Replace the separate [C]reate and [J]oin lobby keys in both doors with a
    single [M]ultiplayer option that runs one sequential flow: list the network games currently waiting for players, offer to join one, and otherwise offer
    to create. A short-lived file_mutex create-lock on the games dir (120s) discourages each user from spinning up their own fragmented game during the brief setup window -- without ever blocking them -- and a poll refreshes the waiting list. The whole flow lives in the shared exec/load/game_lobby.js (multiplayer_flow / mp_* helpers) so both doors share one implementation and only supply door-specific callbacks.

    Also refresh the lobby.msg and controls.msg art in both doors: the controls help now describes the terminal-feature tiers (audio, native keys, and the
    F4 graphics cycle) that SyncTERM/Kitty clients unlock.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Mon Jul 6 00:53:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/191e37c222c700514cbe7f1f
    Modified Files:
    exec/load/game_lobby.js xtrn/syncdoom/lobby.js xtrn/syncduke/lobby.js syncduke.example.ini
    Log Message:
    game_lobby/syncduke/syncdoom: share the lobby enter_sound helper

    Move the per-door sd_enter_sound into game_lobby.js as gl.enter_sound(door_dir, cfg) -- a session-bound helper (cterm_lib.js is loaded lazily, so game_lobby.js still loads headless). Both doors now call gl.enter_sound(SD_DIR, cfg) instead of
    carrying a near-identical copy. Also wires SyncDuke's [lobby] enter_sound (the door already reads [lobby]) and documents the key + its wildcard random-pick form
    in the example ini.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net