How lorserker/ben works
BEN is a bridge engine for robot play, hand analysis, and AI development. The principal user workflow is to open the browser UI, start a board, bid and play against bots, then review the hand. The runtime also supports standalone game runs and a REST API, while bidding, opening-lead, and card-play models provide distinct decision stages alongside double-dummy analysis. The README documents the service boundaries and capabilities; sampled source excerpts are partial, so internal call wiring beyond those documented boundaries is kept conservative.
Main entry points: game.py Game state · carding.py Card play · bidding.py Bidding engine · nn Neural models
Components 20
Runtime services
- Web app server
src/frontend/appserver.py - Game server
src/gameserver.py - Game API
src/gameapi.py
Bridge gameplay
- Game runner
src/game.py - Game state
src/game.py - Bidding engine
src/bidding/bidding.py - Opening lead
src/openinglead/openinglead.py - Card play
src/carding.py - Deal formats
src/pbn.py
Decision engines
- Neural models
src/nn - Deal sampler
src/sample.py - Double-dummy solver
src/ddsolver/ddsolver.py - PIMC engine
src/pimc/PIMC.py - ACE defender
src/ace/ACE.py - BBA bidder
src/bba/BBA.py
User interfaces
- Table manager client
src/table_manager_client.py - Hand visualizer
src/frontend/viz.js
Other components
- Bridge player
- Browser
- DDS extension
bin/dds3-linux/dds3/__init__.py
Connections 23
- Bridge player → Browser: plays through
- Browser → Web app server: requests UI
- Web app server → Browser: serves UI
- Browser → Game server: plays via WebSocket
- Game server → Game state: serves game API
- Game runner → Deal formats: reads deal formats
- Game runner → Game state: runs boards
- Game state → Bidding engine: requests bids
- Game state → Opening lead: requests lead
- Game state → Card play: requests plays
- Bidding engine → Neural models: uses bid models
- Opening lead → Neural models: uses lead models
- Card play → Neural models: uses play models
- Game state → Double-dummy solver: requests analysis
- Double-dummy solver → DDS extension: calls solver
- Game state → Deal sampler: samples deals
- Card play → PIMC engine: uses search
- Card play → ACE defender: uses defender
- Bidding engine → BBA bidder: uses BBA
- Bridge player → Table manager client: connects to table
- Table manager client → Game state: plays boards
- Browser → Hand visualizer: reviews hands
- Game API → Game state: exposes operations