TOS 开发周记 10:地图分块接上怪物移动
本文根据 2025-12-08 至 2025-12-14 的 Git 提交回补。
这一周的主线很清楚:让地图不只是能够分块加载,还要让怪物真正活在这套分块世界里。客户端和后端都围绕 chunk、坐标与事件做了不少调整,一边推进,一边修正接口之间没对齐的地方。
从 chunk 坐标到异步绘制
后端先统一了 chunk 内 tile 的基础坐标,并把地图元素随房间数据一起推送。客户端随即把 tile 绘制改成异步流程,也修过一次 chunk id。这里看似只是渲染方式变化,实际上依赖服务端给出的分块与坐标能够稳定对应。
地图表现也继续补细节:水面改成动态 tile,部分地块素材更新,调试面板被挪到更方便观察的位置。临近格选择则让六边形地图上的交互范围更明确。
怪物移动进入 worker
后端新增怪物移动 worker,随后把更多地图工作移入 worker,并补上可达性检查、移动一致性和休息状态。提交记录里还能看到 /regions 卡顿与数据库连接超时的修正;我只把它们视为当时针对具体调用链的整理,不据此推断最终性能结果。
客户端这边先接入 WebSocket 中的怪物数据,再支持服务端移动事件,最后抽出 monster manager。也就是说,怪物的位置与状态由后端推进,Godot 端负责接收事件、维护实例并绘制出来。期间清理事件、替换错误的 chunk id,正是这条链路逐渐成形时必须处理的接缝。
小结
回头看,这周不是单独完成了“地图”或“怪物”某一个功能,而是第一次把分块数据、后台移动逻辑和客户端表现连成了比较完整的闭环。许多提交仍带着明显的迭代痕迹,但后续战斗系统需要的世界状态已经开始有了落脚点。
提交记录
| 日期 | 仓库 | 提交 | 原始说明 |
|---|---|---|---|
| 2025-12-08 | 后端 | a76f0c0 |
feat: chunk tiles base tile coordinate |
| 2025-12-08 | 后端 | d767674 |
feat: push elements in chunk room |
| 2025-12-08 | 客户端 | e328620 |
feat: async render tiles |
| 2025-12-09 | 客户端 | 0c8228f |
feat: draw monsters in ws |
| 2025-12-10 | 后端 | 9f1cfcc |
feat: monster movement workerr |
| 2025-12-11 | 后端 | a2e36bf |
feat: handle monster movement in worker thread |
| 2025-12-11 | 后端 | e6df04a |
fix: db connection timeout |
| 2025-12-11 | 后端 | e8a01ab |
fix: laggy in /regions |
| 2025-12-11 | 客户端 | 4d8fd39 |
tidy |
| 2025-12-11 | 客户端 | 8b34075 |
feat: support monster movement with server event |
| 2025-12-12 | 后端 | 82f8778 |
feat: use worker to do more things |
| 2025-12-13 | 后端 | 01a7a52 |
fix: consistent movement |
| 2025-12-13 | 客户端 | 32d6707 |
fix: chunk id |
| 2025-12-13 | 客户端 | 38d1ecc |
feat: dynamic water tile |
| 2025-12-13 | 客户端 | 5c3afae |
feat: move debug panel |
| 2025-12-13 | 客户端 | 9fb30b9 |
tidy: clean eveents |
| 2025-12-13 | 客户端 | e88666f |
feat: monster manager |
| 2025-12-13 | 客户端 | f3c603a |
feat: closer-square selection |
| 2025-12-14 | 后端 | 62c0288 |
feat: check reachability |
| 2025-12-14 | 后端 | b9503bd |
feat: support rest for monsters |
| 2025-12-14 | 客户端 | 8e627de |
ui: change some tiles |
TOS 开发周记 10:地图分块接上怪物移动
https://blog.util.online/2025/12/14/tos-weekly-history/2025-12-08-tos-weekly-10/