TOS 开发周记 24:背包槽位由服务端说了算
本文根据 2026-03-23 至 2026-03-29 的 Git 提交补记。
交换背包,不只交换画面
这周的主题很单一:让背包槽位真正成为持久数据。后端给用户物品加入槽位索引,并新增 /bag/swap 接口。交换过程由服务端校验槽位、在事务中更新记录,再返回按槽位排列的最新背包内容;掉落物进入背包时也会寻找可用槽位,而不是只追加一条没有位置的数据。
客户端相应地把固定的 36 个格子映射到 slotIndex。玩家先选中来源格,再选择目标格,客户端把两个索引提交给后端;成功后直接采用响应中的物品列表,失败时则重新拉取背包。这意味着画面不再先自行交换、稍后才期待数据库跟上,最终状态以服务端返回为准。
迁移中的小修正
周初两个 tmp 提交分别调整了怪物掉落模型和详情地图中的掉落显示,为后面的槽位持久化清理了数据形态。提交不多,但这一周把一个容易停留在 UI 层的小功能,接成了完整的客户端—接口—数据库流程。
提交记录
| 日期 | 仓库 | 提交 | 原始说明 |
|---|---|---|---|
| 2026-03-23 | 后端 | 6735a4c |
tmp |
| 2026-03-23 | 客户端 | bff7645 |
tmp |
| 2026-03-26 | 后端 | 400b6e0 |
feat: persist bag slot swaps with server authority |
| 2026-03-26 | 客户端 | 2b26bec |
feat: apply server-authoritative bag swap updates |
TOS 开发周记 24:背包槽位由服务端说了算
https://blog.util.online/2026/03/29/tos-weekly-history/2026-03-23-tos-weekly-24/