TOS 开发周记 21:地图从六边形转向方格
本文根据 2026-03-02 至 2026-03-08 的 Git 提交补记。
坐标系一起换掉
这是一次跨客户端和后端的地图改造。后端先把 Tile、玩家、怪物和据点等位置字段从六边形轴坐标 q/r 改为方格坐标 x/y,邻接关系改为上下左右四个方向,距离计算也改为方格使用的方式。客户端随后加入 SquareTileMapLayer,并把详情地图、事件数据和坐标转换逐步切到方格实现。
这类修改不能只换渲染。地图接口也同步调整:后端增加区域概览接口,返回区块边界、格子尺度等信息;区块查询最终改为直接接收 chunkX/chunkY。客户端的详情模式则开始读取概览和分块数据,用前两周生成的 TerrainSet 绘制方格地形。中间几个 tmp 提交保留了迁移过程,说明这一周并不是一次性替换,而是在接口与画面之间来回对齐。
收拢客户端请求方式
地图迁移也暴露出 API 调用代码过于依赖信号连接的问题。我先把多处 connect 改成 await request_completed,随后继续精简 api_client.gd:请求节点由统一入口创建,各个接口直接等待并解析自己的响应。地图、登录、好友、据点和背包调用因此采用了更一致的写法。
世界里开始有静态物件
周末后端加入了树、岩石和灌木等 prop 的生成逻辑,把它们放在独立的数据类型中,并准备通过地图 WebSocket 消息发送给客户端。这一部分本周主要完成了数据生成和服务端通路,客户端显示会在下一周继续接上。
提交记录
| 日期 | 仓库 | 提交 | 原始说明 |
|---|---|---|---|
| 2026-03-02 | 后端 | 552ad98 |
feat: change q and r to x and y |
| 2026-03-02 | 客户端 | 0999b43 |
feat: use terrain |
| 2026-03-02 | 客户端 | 5e2bcae |
chore: update test |
| 2026-03-02 | 客户端 | 85dc6c8 |
feat: add texture |
| 2026-03-02 | 客户端 | 9705818 |
tmp: show square tile |
| 2026-03-02 | 客户端 | c1990d4 |
Add AGENTS.md with Cursor Cloud development environment instructions (#1) |
| 2026-03-02 | 客户端 | fff21e9 |
refactor: use square tile instead of hex one |
| 2026-03-03 | 后端 | f0258c8 |
feat: add /:regionId/overview |
| 2026-03-04 | 后端 | ddab6dd |
tmp |
| 2026-03-04 | 后端 | f5760b3 |
fix: /region/x endpoint |
| 2026-03-04 | 客户端 | d9f719a |
tmp |
| 2026-03-05 | 客户端 | d839f52 |
refactor: use await to replace the connect |
| 2026-03-07 | 客户端 | 0d51b5a |
refactor: api_client usage |
| 2026-03-08 | 后端 | 1d76763 |
feat: add props |
TOS 开发周记 21:地图从六边形转向方格
https://blog.util.online/2026/03/08/tos-weekly-history/2026-03-02-tos-weekly-21/