• src/doors/syncduke/README.md xtrn/syncduke/lobby.js syncduke.example.i

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sun Jul 5 03:53:27 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/61a7cb32ca2a6120501186b6
    Modified Files:
    src/doors/syncduke/README.md xtrn/syncduke/lobby.js syncduke.example.ini syncduke_lib.js
    Log Message:
    syncduke: lobby picker for sysop-curated user maps & add-on GRPs

    Let players choose what to play. The sysop lists third-party content in syncduke.ini, one [map:<Name>] section per choice:

    [map:Roch]
    file = maps/Roch.map ; a user map (.map)

    [map:Duke It Out In D.C.]
    grp = addons/dukedc.grp ; an add-on GRP overlaid on the base
    con = addons/dukedc.con ; its CON script, if it ships one

    When any are configured, Solo and Create first prompt "what to play"
    (stock Duke is always choice #1); with none configured no prompt
    appears and stock launches exactly as before. Paths are absolute or
    relative to the door dir; the lobby always hands the door absolutes
    (it chdir's to the GRP dir at startup).

    The choice maps to engine arguments: file -> -map "<path>" (a user map
    plays in the engine's usermap slot, so Create skips the level picker
    and net games drop /v /l), grp/con -> /g<path> / /x<path> with /g kept
    last per the engine's usage. A multiplayer entry carries the choice as
    its [map:*] name -- shown in the game listing, and resolved back
    through the joiner's own (shared) syncduke.ini so both peers launch
    with matching content; a host whose ini lacks the name refuses cleanly
    before burning the game's one claim marker.

    Solo user maps live-validated (Roch via the picker); multiplayer-with-
    usermap and add-on GRPs wired per the engine's documented options but
    not yet exercised.

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

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