TOS 开发周记 16:收拾分块订阅、怪物状态与客户端结构

本文根据 2026-01-19 至 2026-01-25 的 Git 提交回补。

这一周的提交全部落在周末,内容也很像一次集中清理:服务端修 worker 与怪物状态,客户端修分块订阅和重复实例,同时把 API、事件与欢迎页重新组织了一遍。

怪物状态不只存在于画面里

后端修正负方向移动逻辑、掉落物位置和 worker 停止流程,随后让怪物生命值能够持久化,并加入独立的怪物日志。堡垒相关代码也在同一轮修改中得到修正。

客户端对应处理了重复怪物和受击闪烁。前者涉及 WebSocket 消息到场景节点的唯一映射,后者则是纯表现层反馈;两者放在一起,刚好体现出服务端状态与客户端呈现需要分别维护。

分块与事件入口继续瘦身

客户端修正 chunk subscription,涉及 API、WebSocket、地图场景与坐标工具。地图不断移动时,订阅哪些 chunk、何时取消旧订阅,直接决定客户端会收到哪些世界对象。

另一笔较大的整理用 EventBus 取代场景间的直接耦合,并移除旧的 Colyseus 消息处理器;API client 也被重新拆分。欢迎页和游戏配置场景则为启动流程补了一个更明确的入口,同时加入中英文翻译资源。

此外还新增一个图片去边工具,用于处理素材边缘。这是开发辅助脚本,不属于运行时玩法。

小结

这周的关键词是“边界”:worker 何时停止、怪物状态保存在哪里、一个怪物只能对应一个节点、客户端只订阅需要的分块、场景之间通过什么传递事件。它们都不是新系统,却决定了已有系统能否继续扩展而不越来越难维护。

提交记录

日期 仓库 提交 原始说明
2026-01-24 后端 4561d7e fix: stopWorker
2026-01-24 后端 4e9ddb6 fix: drop items position
2026-01-24 后端 6366a1a feat: fix negative monster movement logic
2026-01-24 后端 9acddb8 feat: move types
2026-01-24 客户端 334b40a feat: add cli to remove edge
2026-01-24 客户端 672de38 fix: dup monsters
2026-01-24 客户端 6e1efdf chore: update img
2026-01-24 客户端 f165967 fix: chunk subs
2026-01-24 客户端 ff30c76 fix: monster flash
2026-01-25 后端 39dd112 fix: persist health
2026-01-25 后端 e6fe26e feat: add monster logs, fix forterss
2026-01-25 客户端 5cba376 tidy: refactor api_client
2026-01-25 客户端 cac02a0 feat: add welcome.tscn
2026-01-25 客户端 db4a909 tidy: use eventbus to clean codes

TOS 开发周记 16:收拾分块订阅、怪物状态与客户端结构

https://blog.util.online/2026/01/25/tos-weekly-history/2026-01-19-tos-weekly-16/

作者

amano

发布于

2026-01-25

更新于

2026-08-04

许可协议

评论