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
作者

amano

发布于

2026-03-08

更新于

2026-08-04

许可协议

评论