TOS 开发周记 06:看见同一张地图上的其他玩家
本文根据 2025-11-10 至 2025-11-16 的 Git 提交整理,是一篇待审核的历史开发周记。
多人同步的第一轮闭环
这一周只有六个提交,主题却很集中:把房间连接真正落实到玩家位置同步。
后端先调整 MapRoom、MatchMakerRoom 和认证流程,开始同步玩家坐标;客户端随即根据房间状态创建并更新其他玩家。到这里,上一周搭好的登录、房间和角色场景第一次在同一条流程中相遇:本地玩家发送位置,房间维护状态,其他客户端再把这个状态还原成地图上的角色。
新加入的人也要看到旧玩家
实时同步不只处理“之后发生的移动”。当一名玩家晚些进入房间时,还需要得到已经在线玩家的位置。后端在周末增加向新连接推送现有用户位置的处理,客户端则修复重复创建其他玩家的问题。
这两个提交放在一起看很有代表性:补齐初始状态后,客户端如果没有区分“已有对象”和“新对象”,同一名玩家就可能被生成两次。历史里没有运行指标或完整测试结论,因此这里只能确认协议与对象管理都针对这一场景做了修改。
把 Player 逻辑从主场景拿出来
随着本地玩家和远端玩家共享越来越多行为,角色逻辑被正式移到 player.gd。后续整理又把一部分处理从 main.gd 转移过去。主场景负责组织世界和玩家集合,Player 脚本负责单个角色,这个边界比把移动、同步和显示全部堆在主脚本里更清楚。
本周没有扩展地图内容,也没有新增大块界面;六个提交都服务于同一个目标:让不同连接中的玩家可以在同一张地图上彼此出现。
提交记录
| 日期 | 仓库 | 提交 | 原始说明 |
|---|---|---|---|
| 2025-11-11 | 后端 | 9a0766a |
feat: sync playes location |
| 2025-11-11 | 客户端 | 9a52972 |
feat: multi player |
| 2025-11-16 | 后端 | a151364 |
feat: push existing user location |
| 2025-11-16 | 客户端 | 2af329d |
feat: split off player.gd from main.gd |
| 2025-11-16 | 客户端 | a203ab8 |
tidy |
| 2025-11-16 | 客户端 | af2ebd2 |
fix: dup other players |
TOS 开发周记 06:看见同一张地图上的其他玩家
https://blog.util.online/2025/11/16/tos-weekly-history/2025-11-10-tos-weekly-06/