本页目录

Quasi Engine(基于 Qt/QML 的 2D 游戏引擎框架)

Quasi-Engine · INdT/Quasi-Engine

Quasi Engine 是 INdT 开源的 Qt/QML 2D 游戏引擎框架,用 C++ 编写,目标是提供较完整的工具集以简化 2D 游戏开发;它内置可直接使用的 QML 元素,覆盖多数游戏所需的基础实体。项目依赖 Qt5 与 Box2D(需 2.2.1 或以上版本),使用 qma...

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

国内开发环境适配

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

中文项目介绍

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

项目在 GitHub 上以单一仓库维护客户端与服务端,网络协议由 pokerth.proto 统一定义,客户端与服务端共享引擎、网络与数据库层。除游戏本体外,仓库还包含专用服务器、官方服务器、聊天过滤服务以及若干辅助工具。

核心功能

德州扑克,2–10 人

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

锦标赛式规则

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

对局类型

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

大厅功能

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

聊天翻译

按需开启,属于可选第三方服务,详见 `docs/third_party_services.md`。

外观系统

20 种牌桌主题、11 种牌面、若干牌背,支持以 ZIP 导入导出主题。

多语言

界面提供 29 种语言翻译。

跨平台

README 列出 Linux、Windows、macOS、Android 与 iOS。

自建服务器

提供专用服务器二进制,可在任意环境运行,配置说明见 `docs/server_setup_howto.txt`。

技术架构分析

技术要点

  • 语言与框架:C++23 与 Qt(QML 客户端基于 Qt Quick)。
  • 依赖: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、OpenSSL,构建系统为 CMake ≥ 3.15,推荐 Ninja。
  • 网络层: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 编辑,欢迎以拉取请求提交新翻译或修正。

开源许可证与版权说明

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

相似项目