TOS 开发周记 18:拆分界面组件,也做了一次地图原型
本文根据 2026-02-02 至 2026-02-08 的 Git 提交回补。
这周一边修实时联机事件,一边拆分客户端界面,周末还加入了一个独立的 DST 风格地图 demo。后端则继续清理迁移遗留:移除 Redis,并大幅删去旧 TypeScript 实现。
联机事件与用户接口收尾
后端修正用户加入、用户离开事件和好友 API。客户端的小修复则处理角色素材文件名中的多余点号。虽然这些提交分散,但都与上一周的角色、读档和多人地图衔接有关:角色进入或离开地图时,其他客户端依赖服务端事件更新对应玩家。
后端还修正了升级接口,改动集中在堡垒 handler、service 与路由。提交能确认的是接口逻辑被调整,无法仅据此说明具体等级规则。
把主场景里的 UI 拆出来
Godot 端新增 player_info_container,把玩家信息相关场景与脚本集中起来;tile 信息弹窗也从主场景分离。目标信息随后通过 EventBus 解耦,聊天容器则修正焦点问题。
这些改动没有增加新的战斗规则,但把玩家、地块、目标和聊天四类界面的职责分开。主场景不必再直接承载所有 UI 状态,后续调整单个面板时也更容易看清事件入口。
一个独立的 DST 地图 demo
周末新增 scenes/demo_dst,包含地图生成、玩家、UI 与独立场景,并修正角色旋转表现。从目录与 README 来看,它是一套单独运行的原型,不应写成主地图系统已经切换。更准确地说,这是在现有项目旁边试验另一种地图生成与交互方式。
后端清理旧栈
Go 后端移除了 Redis 相关配置和依赖。CLI 更新则加入 Go 侧工具,并删除大批旧 TypeScript 的实体、路由、服务、worker 与生成脚本;另有一份 seed 数据文档提交。删除量主要来自旧实现退场,不代表本周新增了同等规模的功能。
小结
这一周同时做了三类事情:修联机接缝、拆客户端界面、清后端旧代码,再额外留出一个地图原型空间。它不像前几周那样围绕单一玩法推进,却让主线代码与实验代码的边界变得更清楚。
提交记录
| 日期 | 仓库 | 提交 | 原始说明 |
|---|---|---|---|
| 2026-02-02 | 后端 | 3fe7b99 |
fix: s_user_left |
| 2026-02-02 | 后端 | 55a4ef8 |
fix: EventUserJoined |
| 2026-02-02 | 客户端 | 84fc821 |
fix: extra dot |
| 2026-02-03 | 后端 | 85dece1 |
fix: friend api |
| 2026-02-03 | 客户端 | 206ac3a |
feat: add player_info_container |
| 2026-02-03 | 客户端 | da758e5 |
feat: split off the tile_info_modal |
| 2026-02-04 | 后端 | d4090ac |
fix: level up |
| 2026-02-04 | 客户端 | 70fffad |
feat: decouple target_info |
| 2026-02-04 | 客户端 | c7c583f |
fix: focus issue in chat container |
| 2026-02-07 | 客户端 | 87b37b8 |
feat: add dst demo |
| 2026-02-08 | 后端 | 0238e8c |
feat: remove redis |
| 2026-02-08 | 后端 | 48edfcd |
cli: update cli |
| 2026-02-08 | 后端 | 80d59e8 |
doc: add seed |
| 2026-02-08 | 客户端 | 9a713ee |
fix: ratation in dst |
TOS 开发周记 18:拆分界面组件,也做了一次地图原型
https://blog.util.online/2026/02/08/tos-weekly-history/2026-02-02-tos-weekly-18/