本页目录

PokerTH(C++/Qt 开源德州扑克游戏)

pokerth · pokerth/pokerth

PokerTH 是用 C++ 与 Qt 编写的开源德州扑克游戏,可对最多九名电脑对手,也可通过官方服务器或自建服务器与真人联网对局。项目自 2006 年持续至今,采用 AGPLv3 许可,README 标明不含广告与真钱赌博;当前版本 2.1.11,要求 Qt 6.7+ 与...

卡牌 桌面游戏 多人对战 自研引擎 C++ 敌人 AI 游戏状态管理 网络联机 UI 系统 高级
★ Stars 698 Forks 264 License AGPL-3.0 更新 2026-11-09

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:自研引擎 暂无中文教程标记 未标记站长实测
构建依赖 Qt 6.7+、Boost 1.83+、Protocol Buffers 与 OpenSSL,国内可通过镜像源获取;官方服务器 pokerth.net 的连通性待核验,自建服务器可规避。

中文项目介绍

PokerTH 是一款用 C++ 与 Qt 编写的开源德州扑克游戏,自 2006 年持续开发至今。玩家既可以与最多九名电脑对手进行单机对局,也可以经由官方服务器或自行搭建的专用服务器,与真人玩家联网对战。项目采用 AGPLv3 许可,README 明确说明不含广告、不涉及真钱赌博、不做追踪。当前版本为 2.1.11,构建要求 Qt 6.7 及以上与 C++23 编译器。

核心功能

德州扑克,2–10 人

支持单机对战机器人、局域网或互联网对局。

锦标赛式玩法

可设置起始筹码、按人数或按分钟提升盲注、手动盲注顺序、行动超时以及可调的界面速度。

对局类型

公开局、仅注册用户局、邀请制局与排位局,并可选择是否允许旁观。

大厅功能

玩家列表、对局列表、聊天、表情回应,以及按账号保存的私信。

聊天翻译

按需开启(可选功能,详见 `docs/third_party_services.md`)。

外观系统

20 种牌桌主题、11 种牌组、多种牌背,主题支持 ZIP 导入导出。

多语言

界面完整翻译为 29 种语言。

跨平台

Linux、Windows、macOS、Android 与 iOS。

自建服务器

提供可在任意环境运行的专用服务器二进制。

技术架构分析

技术要点

  • 引擎:src/engine 负责手牌、下注轮次与机器人逻辑(本地与网络两种变体)。
  • 网络:src/net 基于 Boost.Asio,包含 TLS 与面向浏览器客户端的 WebSocket。
  • 协议:pokerth.proto 是客户端与服务器共同的唯一事实来源。
  • 数据库:src/db 与 src/dbofficial 提供服务器数据库接口及官方服务器的异步 MySQL 后端。
  • 核心与配置:src/core、src/config 涵盖日志、加密、头像处理与配置文件。
  • 聊天过滤:src/chatcleaner 为官方服务器使用的聊天过滤服务。
  • 测试:tests 为驱动运行中服务器的协议测试套件(Java)。

构建与运行

依赖要求

  • Qt ≥ 6.7.0(推荐 6.9.2 LTS)
  • Boost ≥ 1.83:thread、filesystem、date_time、program_options、iostreams、asio、regex、random、uuid
  • Protocol Buffers ≥ 2.3.0(构建时需 protoc,运行时需 libprotobuf)
  • OpenSSL
  • CMake ≥ 3.15、C++23 编译器,推荐 Ninja

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.net 所用用户数据库的 pokerth_official_server。

主题与样式

牌桌、牌组与牌背是三个独立的样式类别,全部为纯数据——一个 XML 文件加配套图形,无需代码。QML 客户端在 data/gfx/qml 中附带 20 种牌桌主题、11 种牌组与 16 种牌背;Qt Widgets 客户端在 data/gfx/gui 与 data/gfx/cards 中有自己的样式集。在 QML 客户端的“设置”→“样式”中可查看已安装样式及预览、从 ZIP 导入新样式、将任意样式导出为 ZIP。导入的样式会复制到用户数据目录,因此可跨版本更新保留。自制样式的方法见 docs/gui_styling_howto.txt,其中说明 XML 标签、图形尺寸与命名约定、样式测试方法以及如何提交到 pokerth.net 的样式库。

开源许可证与版权说明

许可证标识:AGPL-3.0。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目