Repository navigation
0.2.0
好友德州 v0.2.0
v0.2.0 汇总了 v0.1.0 之后的全部改动,包含 v0.1.1 的手机牌桌重构,以及本次新增的服务端稳定性修复、牌桌交互完善、Android 发布签名支持和文档体系重建。
本次修复了一个会导致整桌卡死的服务端缺陷,建议所有已部署环境升级。
发布方式
本 Release 不会直接附带 Web、Windows、Android、HarmonyOS 或 iOS 安装包,仅发布 Git 标签对应的源码快照。
客户端需要写入自建游戏服务地址,语音需要部署者自己的腾讯云 TRTC 配置,Android 与 HarmonyOS 正式分发还涉及各自的平台签名,因此各平台产物应由部署者根据自己的环境构建、签名和测试。
从空服务器开始部署,请参阅自建部署指南。已有部署的版本升级流程请参阅生产环境更新手册。
重要修复
牌局进行中有玩家加入会导致全桌卡死
这是本次最关键的修复。此前玩家在一手牌进行中加入房间时,服务端会因无法为其分配牌桌座位而使所有玩家的状态快照生成失败,表现为全桌无法操作、无法离桌,只能等加时卡耗尽并由管理员将玩家逐出。
现在中途加入的玩家以“待入座”状态观战:对全桌可见、不参与本手、收不到任何底牌,本手结算后自动获得正式座位并从下一手开始参与。
已弃牌玩家可以随时离桌
此前任何玩家都必须等本手结束才能离桌。现在已弃牌或本手未参局的玩家可以随时离开,仍在争夺底池的玩家依旧不能中途离桌。
弃牌者已投入底池的筹码留在池中,剩余牌桌筹码在本手结算完成后幂等返还账户钱包,不会提前返还或重复返还,筹码守恒不变。
HarmonyOS 开麦后听不到其他人
HarmonyOS 在本地麦克风启动后会把播放路由切换到听筒,表现为开麦数秒后远端声音消失、关麦后恢复。现在进房和每次开关麦后都会重新固定扬声器路由。Android 与 Windows 的既有行为未改动。
登录页与大厅页键盘弹出后布局抽搐
登录页和大厅页此前按实时窗口高度切换布局档位,软键盘弹出压缩高度后会触发布局重排,导致输入框失焦、键盘立刻收回,在 Android 与 HarmonyOS 平板上形成无法输入的循环。现在布局档位改用不随键盘变化的窗口尺寸判定。
牌桌页同时改为按设备类别锁定布局族(手机、平板各自固定),并使用不受键盘影响的稳定视口尺寸。
牌桌与交互改进
发两次展示
- 第一块牌面完整展示 5 秒后,第一次发出的牌收起为顶部点数条,第二次发出的牌叠放其下覆盖主体,两次结果可同时读取。
- 全下前已经在场的公共牌保持原样,不参与切换。
- 发两次结算的自动准备倒计时从 10 秒延长到 15 秒,留足两块牌面先后展示的时间;普通结算仍为 10 秒。
换位
- 取消“选择空座位”弹窗。由于牌桌座位数始终等于房间人数,不存在可选空位。
- 现在只保留一种操作:两手之间点击其他玩家,发起需要对方确认的换位申请。
- 服务端不再要求牌桌坐满才能发起换位申请。
私下看牌
- 弃牌玩家现在可以向本手发过底牌的任意其他玩家发起私下看牌申请,包括其他已弃牌的玩家。
- 查看结果的牌型标签由内部枚举
private_view改为中文“私下查看”。
文字聊天
- 修复自己发送的消息必须关闭并重新打开聊天面板才显示的问题。
- 消息列表固定在最新一条,新消息到达无需手动向下滚动。
Android 发布签名
此前 Release 构建复用调试签名,而调试密钥库由 Android SDK 在每台机器上随机生成,导致不同电脑构建的安装包无法在同一台设备上互相覆盖,且密钥口令公开、重装系统即丢失。
现在 Release 签名通过 apps/poker_client/android/key.properties 配置:
- 存在该文件时使用维护者自己的发布密钥库签名;
- 不存在时回退调试签名,并在构建日志中打印警告,提示该包不可分发。
配置步骤参阅Android 发布签名配置指南。密钥库与 key.properties 均已被 Git 忽略,不会进入版本库。
手机端牌桌重构(来自 v0.1.1)
- 重构 Android 和 HarmonyOS 手机横屏牌桌,房间信息、连接状态和语音控制移至侧边。
- 移除独立的“你的手牌”区域,本人手牌与所有摊牌直接显示在对应玩家框内。
- 2–10 人座位沿牌桌周边重新排列,明确图层顺序:公共牌背景 < 玩家框 < 本轮下注筹码 < 赞赏/嘲讽气泡。
- HarmonyOS 重做横屏数字输入面板,0–9、清空、退格和确定一次性完整显示。
- Android 通过
WindowInsets.displayCutout、HarmonyOS 通过Window.getWindowAvoidArea(AvoidAreaType.TYPE_CUTOUT)获取真实挖孔安全区,不再使用固定像素猜测。
完整说明见 v0.1.1 发布说明。
文档
- 新增项目现状、项目交接文档和开发历程。
- 按实际源码重写 WebSocket 协议文档:协议为快照驱动模型,早期设计中的细粒度手牌事件从未实现,文档此前与实现存在分叉。
- 规则文档校正合法动作与快捷金额的下发方式,并补充中途加入、弃牌离桌、换位和私下看牌的新规则。
- 新增 Android 发布签名配置指南。
- 生产更新手册与交接文档改用路径变量和占位符,移除原维护者的本机绝对路径。
版本号
本次统一了各端版本号,此前 v0.1.0 与 v0.1.1 的客户端均停留在 0.1.0+1。
| 位置 | 值 |
|---|---|
pubspec.yaml |
0.2.0+2 |
Android versionName / versionCode |
0.2.0 / 2(自动取自 pubspec) |
| Windows 文件与产品版本 | 0.2.0(自动取自 pubspec) |
HarmonyOS versionName / versionCode |
0.2.0 / 2000(需在 ohos/AppScope/app.json5 手动同步) |
HarmonyOS 不读取 pubspec.yaml,版本需在 ohos/AppScope/app.json5 中手动同步。versionCode 按 major*1000000 + minor*1000 + patch 编码与 versionName 一一对应(0.2.0 对应 2000),后续版本据此递增。
该编码低于此前模板默认的 1000000,因此 HarmonyOS 设备上的旧版本需要卸载后重新安装,此后按新编码正常覆盖升级。
升级说明
- 本次没有数据库结构变化,不需要执行数据库迁移。 按手册执行
migrate up会正常空跑。 - 服务端必须更新:中途加入、弃牌离桌和换位条件的修复都在服务端。
- 四端客户端都需要重新构建:本次修复覆盖全部平台。
- 升级顺序为先服务端、后客户端。新客户端在未坐满时会发起换位申请,旧服务端会拒绝;反之旧客户端配新服务端不受影响。
- 协议没有新增消息类型,也没有删除或改变字段含义。唯一的快照变化是牌局中可能出现
participating为false的待入座座位,新旧客户端均可解析。 - Android 首次使用发布签名时,所有测试设备必须先卸载旧版本再安装,否则会因签名变化被系统拒绝。此后升级不再需要卸载。
- HarmonyOS 需要卸载旧版本后重新安装,原因见上一节的
versionCode说明。 - HarmonyOS 建议重点验证开麦后能否持续听到其他人,以及登录页在平板上的键盘输入。
获取源码
git clone https://github.com/wm-develop/Texas.git
cd Texas
git checkout v0.2.0首次部署前请完整阅读自建部署指南,不要把数据库密码、TRTC 密钥、生产域名配置或平台签名提交到仓库。