摘要: 最佳起步路径(5 步,约 2 周) Step 1:先跑通 Demo(1 天) 用 Three.js + WebSocket,做一个最简单的 Demo——两个方块在同一个场景里移动。不用 monorepo、不用 TSRPC、不用任何工程化。30 行服务端代码 + 50 行前端代码。 我这步踩了个坑:一 阅读全文
posted @ 2026-07-08 11:41 杨元超 阅读(12) 评论(0) 推荐(0)
摘要: 📚 系列索引 (零)目录 → 系列总索引、推荐阅读顺序 2026 年 6 月,Anthropic Claude Code 负责人 Boris Cherny 说了一句话——"我已经不给 Claude 写 prompt 了。我有一堆循环在跑,它们去给 Claude 写 prompt、自己琢磨该干什么。 阅读全文
posted @ 2026-07-08 11:41 杨元超 阅读(14) 评论(0) 推荐(0)
摘要: 6 类坑的 Root Cause 1. 选型类 帧同步很美但不适合 2 人场景。 项目第一天选了帧同步——因为多人游戏教程都在讲它。但浮点数精度、调试回滚、网络抖动,每一个都是 AI 无法独立处理的。第一周就放弃了。 Immutable.js 太重。 引入的理由是"不可变数据更安全",但在 GTS- 阅读全文
posted @ 2026-07-08 11:40 杨元超 阅读(4) 评论(0) 推荐(0)
摘要: WS 断连与重连 WebSocket 断连在 SCF 环境下尤其频繁——warm container 回收、实例迁移、部署更新都可能导致断连。我做 E2E 测试时就遇到过:玩家正在游戏,我部署了一个更新,room-service 重启,所有 WS 连接断开——前端卡在"正在游戏中"页面,然后超时。 阅读全文
posted @ 2026-07-08 11:40 杨元超 阅读(2) 评论(0) 推荐(0)
摘要: SoA 状态管理 迁移过程 Phase 7 的 SoA Store 是性能优化的基础。SoA(Struct of Arrays)是一个数据结构模式——把所有同类数据放在一起而不是每个对象独立存储。 Store 数据 更新频率 映射目标 TransformStore positions(Float32 阅读全文
posted @ 2026-07-08 11:40 杨元超 阅读(4) 评论(0) 推荐(0)
摘要: 传统 Debug 流程的致命缺陷 OpenCode 发现 bug 后,典型的修复流程: OpenCode:编译报错,让我看看 → 看报错信息 → 觉得是问题 A → 改代码 → 跑测试 → 还是报错 → 觉得是问题 B → 改代码 → 跑测试 → 又出新错 → 无限循环... 这个模式的问题在哪?O 阅读全文
posted @ 2026-07-08 11:40 杨元超 阅读(3) 评论(0) 推荐(0)
摘要: Vibe Coding 多人游戏(十三)—— OpenClaw 调度层 + Skill 固化 + 自动部署 上期讲到,OpenClaw 从全自动(自己做一切)切换到调度 + OpenCode 编码的分层模式后,token 消耗大幅下降。 但带来了新问题:谁来管理流程? 每次要让 OpenCode 写 阅读全文
posted @ 2026-07-08 11:40 杨元超 阅读(6) 评论(0) 推荐(0)
摘要: 23 个 Skill 全家桶 开发类: Skill 作用 gts-dev-feat 新功能开发——调度 OpenCode 生成代码 gts-dev-fix Bug 修复——分析日志 + 锁定测试 + 修复 gts-dev-refactor 代码重构——不改变行为只改结构 三个开发 Skill 的核心 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(8) 评论(0) 推荐(0)
摘要: deploy-scf.js 核心是一个由 AI 编写的 deploy-scf.js 脚本,纯 Node.js、零 npm 依赖。一句话触发部署全流程: 打包 → zip(带 svc/ 子目录) → 上传 SCF → 发布 → BDD 验证 脚本内部处理了之前踩过的 6 个坑(详见 P10): 1. 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(6) 评论(0) 推荐(0)
摘要: Brief 标准模板 ## 修复 - 现象(体验式反馈):玩家退房后下一局进不去 - 根因分析:gameStop 未重置 isEnterGame 标志位 - 验收标准:退房后重新匹配能正常进入 格式要求 改 .ts 再 tsc,不改 .js 新增集成测试覆盖,禁 mock 编码规则详见 agent- 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(4) 评论(0) 推荐(0)
摘要: 记忆结构 MEMORY.md(核心索引) ├── 33 个锚点词(快速定位到对应文档) ├── 检索协议(怎么查) └── 分层读取入口(去哪找什么) memory/ ├── 2026-06-07-log.md ← 每日记录(35+ 篇) ├── 2026-06-08-log.md └── ... 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(4) 评论(0) 推荐(0)
摘要: 模型分层:Flash / Flash Free / Pro 调用策略 最核心的策略:把任务按复杂度分层,用不同的模型处理。 我们的模型体系有三个梯队: 梯队 模型标识 Context 费用 负责任务 Free flash-free 200k 0 元 调度编排、写 Brief、BDD 测试、跑 lin 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(13) 评论(0) 推荐(0)
摘要: 三层测试 单元测试(BDD Features · 纯函数路径) 和集成测试一样使用 BDD(Gherkin Feature 文件 + Step Definitions),只是覆盖的路径不同——单元测试覆盖单一纯函数的输入输出,不涉及服务端、网络或 UI。 features/unit/logic/ ├ 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(5) 评论(0) 推荐(0)
摘要: 正确决策(什么是值得的) 1. 状态同步 > 帧同步(2026-06-05) 最关键的决策,没有之一。项目开始第一周我选了帧同步——因为大量多人游戏教程都在讲它,看起来"正确"。 但一周内我就遇到了三个问题: 浮点数不一致:相同的输入在不同的机器上产生不同的计算结果。Three.js 的矩阵运算在不 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(5) 评论(0) 推荐(0)
摘要: 三层 Specs 体系 Main Specs(主规格) ├── 描述项目整体架构(很少变更) ├── 技术栈、通信方式、部署方案 └── 架构决策记录 Delta Specs(增量规格) ├── 针对当前需求的规格说明 ├── "这次要改什么" └── 代码审计通过后才开始写 Verify Spec 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(6) 评论(0) 推荐(0)
摘要: 审查标准 等级 含义 处理方式 Bug 影响功能的错误 必须修,不改不能提交 严重 违反红线/架构 必须修,但可讨论方案 警告 代码质量问题 修更好,可暂缓 建议 可优化但非必须 记在 TODO,择机处理 一开始只有 和 两级,但用起来发现不够:有些代码质量问题影响面很大——比如 any 类型的使用 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(4) 评论(0) 推荐(0)
摘要: 三层结构 基础规则(basic-rules.md) ├── 通用编码规范(命名、格式、注释) ├── TypeScript 规范(类型、接口、泛型) ├── 错误处理规范 └── 文件组织规范 模块规则(module-rules.md) ├── ReScript 规范 ├── TSRPC 协议规范 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(7) 评论(0) 推荐(0)
摘要: 经验 1:测试金字塔不能倒——尤其集成测试 /\ /E2E\ ← 手动触发,不自动(有时) /集成 \ /测试 \ ← BDD + Cucumber,不 mock /______\ / 单元测试\ ← BDD Features(.feature \+ steps),AI 自动写、自动跑 /_____ 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(7) 评论(0) 推荐(0)
摘要: 一个完整迭代:从一句话到生产上线 2026 年 7 月 5 日。 用户报告了一个问题:多人游戏从关卡退出后,再次进入时,HUD 不显示了。 10:00 我发了一条消息: "修复场景重入后 HUD 不显示。症状:退出关卡再进,玩家血条(HP bar)消失了。" 10:00-10:05 OpenClaw 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(10) 评论(0) 推荐(0)
摘要: 第一阶段:AI 辅助编程(局部功能 + 代码补全) 多人版开发之前,单机版「巨大娘的玩耍」v1.0 就是用 AI 辅助编程写的。工作流很简单,也很有"打工感": DeepSeek 网页版:做优化、算法实现等局部功能的处理 Trae VSCode 插件:代码补全 说真的,最开始我还挺兴奋的。AI 帮我 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(7) 评论(0) 推荐(0)
摘要: 为什么要在现阶段做这件事 2026 年 6 月,GTS-Play 多人版还处于极早期——只有两个玩家在网格平面上走路、碰撞、切换动画。连真实的游戏循环都没有跑通。 为什么要在 MVP 还没完全跑通的时候就开始调研 WebGPU 和 Worker 线程? 答案很简单:游戏本来就要支持 WebGPU 和 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(10) 评论(0) 推荐(0)
摘要: 部署迭代史 部署的演化不是一夜之间完成的。从 basic1 时期到生产稳定,我们经历了 5 个版本,每个版本解决一个特定层级的痛点。 v0:手打 zip + 控制台上传(basic1 时期,2026-05-25 ~ 2026-06-08) 这是最原始的部署方式,也是最痛苦的。 步骤: 在本地用 Co 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(9) 评论(0) 推荐(0)
摘要: Tick Loop 与代次守卫 服务端的核心是一个 setInterval 驱动的 tick 循环。说出来好笑,这行代码我们写了三遍才写对。 v1:闭包直接引用 最初 service 启动时创建一个 setInterval,闭包里直接引用 loop 函数里的状态变量。 let state = cre 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(5) 评论(0) 推荐(0)
摘要: 1. Logic 共享层:ReScript 纯函数 重构前最大的痛点:碰撞检测、移动速度计算、伤害公式,在 room-service 里有一份,在 new_basic2 的客户端里也有一份。两边代码早晚不一致。 方案: 把纯逻辑抽出来,做成独立的 packages/logic/ 包。 logic 包 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(6) 评论(0) 推荐(0)
摘要: 从 basic1 到 new_basic1:AI 改造 改动看起来不大,但是质变: basic1(Meta3D + 帧同步) ↓ AI 改造:把服务端从"命令中继"改成"状态权威" ↓ 替换引擎:Meta3D → Three.js ↓ 保留通信层:TSRPC new_basic1(Three.js 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(5) 评论(0) 推荐(0)
摘要: 选型:为什么选帧同步 做多人实时联机,第一个面临的问题就是同步模型。当时市面上的方案主要两个: 维度 帧同步(Lockstep) 状态同步(Authoritative) 服务器角色 命令中继,不处理逻辑 状态权威,跑全部逻辑 客户端工作量 大(执行全量逻辑) 小(只负责表现和输入) 代码维护 只维护 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(16) 评论(0) 推荐(0)
摘要: 📚 系列索引 (零)目录 → 系列总索引、推荐阅读顺序 从《Pieter Levels 一个人的游戏帝国》到《从 levelsio 到 GTS-Play》,前 4 篇从外部视角讲完了 Vibe Coding 多人游戏的案例、行业和方法论。从这一篇开始,我们进入 GTS-Play 的内部实战——一个 阅读全文
posted @ 2026-07-08 11:38 杨元超 阅读(270) 评论(0) 推荐(0)
摘要: 技术栈现状 模块 GTS-Play 当前方案 行业标准方案 渲染引擎 Three.js + React Three.js(主流) 多人通信 TSRPC(WebSocket) Python/Node WebSocket 代码工具 OpenClaw + OpenCode Cursor / Claude 阅读全文
posted @ 2026-07-08 11:37 杨元超 阅读(6) 评论(0) 推荐(0)