德州扑克,2–10 人
支持单机对战机器人、局域网或互联网对局。
Quasi-Engine · INdT/Quasi-Engine
Quasi Engine 是 INdT 开源的 Qt/QML 2D 游戏引擎框架,用 C++ 编写,目标是提供较完整的工具集以简化 2D 游戏开发;它内置可直接使用的 QML 元素,覆盖多数游戏所需的基础实体。项目依赖 Qt5 与 Box2D(需 2.2.1 或以上版本),使用 qma...
PokerTH 是一款以 C++ 与 Qt 编写的开源德州扑克游戏,项目自 2006 年延续至今,采用 AGPLv3 许可。它既支持与最多九名电脑对手进行单机对局,也支持通过官方服务器或自建专用服务器与真人联网对战。README 明确说明游戏不含广告、不涉及真钱赌博,也不做追踪。当前版本为 2.1.11,构建要求 Qt 6.7 及以上与 C++23 编译器。
项目在 GitHub 上以单一仓库维护客户端与服务端,网络协议由 pokerth.proto 统一定义,客户端与服务端共享引擎、网络与数据库层。除游戏本体外,仓库还包含专用服务器、官方服务器、聊天过滤服务以及若干辅助工具。
支持单机对战机器人、局域网或互联网对局。
可设置起始筹码、按人数或按分钟提升盲注、手动盲注顺序、行动超时以及可配置的界面速度。
公开局、仅注册用户局、邀请局与排名局,并可选择是否允许旁观。
玩家列表、对局列表、聊天、表情回应,以及按账号持久保存的私信。
按需开启,属于可选第三方服务,详见 `docs/third_party_services.md`。
20 种牌桌主题、11 种牌面、若干牌背,支持以 ZIP 导入导出主题。
界面提供 29 种语言翻译。
README 列出 Linux、Windows、macOS、Android 与 iOS。
提供专用服务器二进制,可在任意环境运行,配置说明见 `docs/server_setup_howto.txt`。
src/net 使用 Boost.Asio,包含 TLS 与面向浏览器客户端的 WebSocket。pokerth.proto 是客户端与服务端共同的协议定义,修改协议需同时保证与已发布版本的兼容性。src/engine 为扑克引擎(手牌、下注轮次、本地与网络机器人逻辑);src/db 与 src/dbofficial 为服务器数据库接口及官方服务器的异步 MySQL 后端;src/core、src/config 负责日志、加密、头像与配置文件;src/chatcleaner 为官方服务器使用的聊天过滤服务。tests 目录包含驱动运行中服务器的协议测试套件(Java)。Linux 下的基本流程:
cmake -DCMAKE_BUILD_TYPE=Release -S . -B ./build -G Ninja
cmake --build ./build --config Release --target all
sudo cmake --install ./build
可将 all 替换为单个目标:pokerth_qml-client、pokerth_client、pokerth_dedicated_server、pokerth_official_server、pokerth_chatcleaner。若需包含测试证书与数据目录的干净构建,可先运行 bash clean_build.sh,更多细节见 INSTALL。
其他平台的发布构建通过 Docker 镜像与 GitHub Actions 工作流完成,而非手工构建:Windows 使用 docker/windows(MinGW 交叉构建),Android 使用 docker/android 与 build_android_qml.sh,macOS/iOS 使用 build_macos_combined.sh 与 build_ios_qml.sh,AppImage/deb/ZIP/Snap/Flatpak 使用 docker/linux。这些流程在 .github/workflows 中也有可手动触发的工作流。
运行专用服务器:
cmake --build ./build --target pokerth_dedicated_server
./build/bin/pokerth_dedicated_server
服务器从 PokerTH 配置文件读取设置,并将日志写在配置文件旁。端口、防火墙、TLS 证书与服务器列表条目等完整说明见 docs/server_setup_howto.txt。辅助工具包括 pokerth_bot(用于负载与协议测试的无头客户端)、pokerth_globalnotice(向服务器所有人发送通知)以及 tools/analyze_server_log.py(将服务器日志渲染为 SVG)。
仓库会构建两个桌面客户端,它们使用同一协议,并在 GUI 之下共享引擎、网络与数据库层:
| 目标 | GUI | 状态 |
|---|---|---|
pokerth_qml-client |
Qt Quick / QML(src/gui/qt6-qml) |
当前客户端,覆盖全平台,可从手机尺寸扩展到桌面 |
pokerth_client |
Qt Widgets(src/gui/qt) |
经典桌面客户端,已停止开发,2.1.9 为最终版本(仅缺陷修复构建,目前为 2.1.9.3) |
服务端有两个二进制:pokerth_dedicated_server 面向希望自行开局的用户,pokerth_official_server 额外包含 pokerth.net 使用的用户数据库。
牌桌、牌面与牌背是三个独立的样式类别,全部为纯数据:一个 XML 文件加配套图形,无需代码。QML 客户端在 data/gfx/qml 中附带 20 种牌桌主题、11 种牌面与 16 种牌背;Qt Widgets 客户端在 data/gfx/gui 与 data/gfx/cards 中有自己的样式集。QML 客户端的「设置」→「样式」可列出已安装样式及预览、从 ZIP 导入新样式,或将任意样式导出为 ZIP。导入的样式会复制到用户数据目录,因此更新后仍然保留。自制样式的 XML 标签、图形尺寸与命名约定、测试方法及提交到 pokerth.net 样式库的流程见 docs/gui_styling_howto.txt。
界面提供 29 种语言。QML 客户端的翻译位于 src/gui/qt6-qml/i18n,Qt Widgets 客户端位于 ts,均为标准 Qt .ts 文件,可用 Qt Linguist 编辑,欢迎以拉取请求提交新翻译或修正。
NBlood 是用 EDuke32 引擎技术与开发思路对 Build 引擎游戏所做的逆向工程移...
Frogatto & Friends 是一款 2D 横版动作冒险游戏,主角是一只青蛙;开发团队...
id Software 以 GPL 许可证发布的《雷神之锤3竞技场》(Quake III Arena)源...
open-goal/jak-project 是面向 PS2《Jak & Daxter》系列的开源逆向工程与反编...