Dealer’s Choice
Dealer’s Choice is a cross-platform, networked multiplayer poker game supporting draw, stud, and community-card variants, including Texas Hold’em and Omaha, with optional wild cards. The deal rotates around the table, and the dealer chooses the game before each hand.
⚠️ The server and networking code was primarily written by an LLM and has not been fully reviewed by a human network security expert. Any instructions regarding running the server should take that into account. This project attempts to use rigorous testing methods and anticipate security issues but, like any project, cannot guarantee the programs here are free of potential vulnerabilities.
License
This project is licensed under the MIT License – see the LICENSE file for details.
Project Links
Games available
- 5-card single and double draw
- 5-card showdown (Similar to 5-card draw, but with no discard/draw round)
- 5-card stud
- 6-card stud
- 7-card stud
- California lowball
- Omaha
- Texas Hold’em
- 7-card no peek
Most of the games above can be played with the Deuces (Twos) Wild option enabled.
Computer Opponents
A headless rules-based bot (dealers-choice-bot) is available. See
docs/BOT.md for usage.
Server
The server is a separate program (dealers-choice-server). It uses port
22777 by default. To run it:
./dealers-choice-server
There is not a native option to run the server as a daemon. If you wish to daemonize the server, you can use the docker-compose file or tmux.
Network ports
The server uses two ports:
- TCP 22777 (the game port, set with
--port). Players connect to this. It must be reachable. - UDP 22787 (LAN discovery). Clients on the same network find servers
automatically and list them under “Servers on LAN”, using IPv4 limited
broadcast and IPv6 link-local multicast (group
ff02::4443) on this port. This is optional: without it, players can still join by typing the server’s IP address in the connect screen.
If the server host runs a firewall, it must be configured to allow inbound connections on these ports, or the server will not be found (and may not be reachable at all). Restricting the rules to your local network is a good idea. The client machine’s firewall must also allow the server’s discovery reply, so a strict firewall there can block discovery too.
See docs/CONFIG.md for server configuration options including password protection.
Client
To run the client, simply run the binary without any arguments. A game can not be started until there is more than one player connected.
Hardware Requirements
Dealer’s Choice is a lightweight 2D application and runs on modest hardware.
| Component | Minimum |
|---|---|
| OS | Linux (kernel 4.x+), macOS 14, Windows 10 |
| CPU | 1 GHz single-core |
| RAM | 1 GB |
| Graphics | Any display output supported by SDL2 |
| Storage | 100 MB |
| Network | LAN or internet connection to reach a server |
| Audio | Optional — any audio output device |
| Display | 1280 × 720 minimum, 1920 × 1080 recommended |
The server (dealers-choice-server) has no graphics, audio, or display
requirements. It does not use SDL2, so it can run on any system, including
headless servers.
Player Config
See docs/CONFIG.md for details.
Dedicated Servers
There are no supported public servers yet (see the road map).
Building
See BUILD.md
Translating
Note on AppImages
If you’re a Linux user, you can download the AppImage from the Releases page, or install it with AppMan.
Libraries
These are some of the libraries used by Dealer’s Choice. The source code is bundled with this project and there is no need to install these dependencies.