首页 / 分级学习路径

分级学习路径

这个站有 25 页、30 多万字,从头读一遍是最低效的用法。
这一页给四条按目的分级的路线:面试速成、系统学习、 接手改代码、线上救火。每条都标了时长和该跳过什么。

分级的原则 每条路线都分 L1 / L2 / L3 三层。L1 是「不看会出事」,L2 是「看了少走弯路」,L3 是「深挖」。 时间紧就只走 L1,L1 加起来都不超过两小时。

路线 A · 面试速成(3~4 小时)

目标:能对着任何一个模块讲 10 分钟,能讲 3 个有深度的 bug 故事,能答架构取舍。
如果是为鸣潮客户端开发(A93502)转岗准备,先看这一页的章节分类: 面试预习计划(把预习计划按本站 11 章节重新归类)。

L1 · 必须过一遍(90 分钟)

顺序读什么要带走的
1关键数字速记表 行数、协议号、超时值。面试时说得出具体数字,可信度差一个量级
2五个完整故事 每个都按「背景→现象→定位→根因→解法→沉淀」六段。背结构不背文字
3三大单例 + 为什么 Model 可空 这是「框架怎么设计的」这类问题的标准答案起点
4开局五问 + 被证伪的判断 「怎么排查问题」「有没有判断错过」两道必考题

L2 · 挑两个模块讲透(60 分钟)

首选:① 传送
最能体现复杂度。讲的时候按这条线:
为什么难(多人一致性) → 时序 → 栅栏设计 → 假阳性怎么兜 → 踩过什么
最能体现「表现类需求也很难」。按这条线:
三阶段 → 黑屏内异步编排 → 包围盒反算相机的四连改 → 三层超时兜底
别选的两个 ⑤ 计时器 和 ② 传送点 逻辑量小, 讲不出深度,容易被追问到底。留着当「还负责了这些」一句话带过。

L3 · 有余力再看(60 分钟)

路线 B · 系统学习(2~3 天)

目标:真正理解这套框架,而不是记住结论。

1
先建坐标系:名词与缩写表(30 分钟)
「灯」「栅栏」「站位序」「空怪」这些词后面到处出现。先过一遍名词,后面阅读速度翻倍
2
框架与分层总纲 全文(2 小时)
这是唯一一篇建议逐字读完的。特别是 事件系统三种写法的对错 和 组件生命周期六个钩子——这两处的坑最贵
3
再读底座:场景加载命令链 + 地图流送与 DataLayer(2 小时)
八个模块里有一半最终落到这两篇上:传送、传送点、两种重生都要经过场景加载链和 WP 流送。 先看底座,后面读模块时才不会把「链上的一步」当成模块自己的逻辑。 命令链先看 19 节点时间轴, 流送先看 流送假阳性
4
按依赖顺序读模块,不要按编号(1 天)
推荐顺序:⑤ 计时器(最简单,看清 MVC 骨架)→ ② 传送点(加上配置表与状态)→ ③ 坠落重生 → ④ 边界重生(前者的调用方)→ ① 传送(前三个的执行底座)→ ⑥ 关卡子弹 → ⑧ 爬塔 → ⑦ 结算(最重的表现)
5
回头读 Bug 案例大全(半天)
一定要在读完模块之后读。先读 bug 会变成背结论, 读完模块再读才会有「哦这里确实会出事」的感觉
6
这两篇是「要动手时」才有用,先读会觉得抽象

路线 C · 接手改代码(半天上手)

目标:明天就要在这套代码上提交改动,不想第一次就被打回。

L1 · 动手前必读(40 分钟,不读会返工)

「0 错误」不等于产物更新了。 全项目任意文件有诊断错误就会在 emit 前退出,磁盘 .js 可能压根没变。 判断改动是否真的落到产物,只能看 npm run compile 的产物本身。
最常撞的三条:Scheme export 必须独立文件、 no-number-or-undefined、no-uninitialized-vars。 后两条是 V8 隐藏类的原因,不是洁癖。
写成 private readonly xxx = () => {} 实例属性。 用 bind 移不掉,用匿名箭头会被 GC 掉。这个坑不报错,只是行为诡异。
保留 CRLF(否则 diff 全是噪声)、注释最多 2 行、 Log 带模块前缀(复测时靠关键字过滤)、p4 不要 lock。

L2 · 按你要做的事跳读(20 分钟)

你要做的跳到
给已有功能加一个字段加字段七步(协议 → Model → Controller → View → Scheme → 表 → 编译)
加一条协议注册三处 + int64 必须转 + 收包四防御
加一个编辑器节点 / 参数要动三处 + 走 gulp 不是 npm
加一个 UI 界面控件索引是位置不是名字 + 防重入三件套
加一个新玩法模块六个文件的标准落地路径
动传送 / 结算这种重模块先读该模块页的「常见修改场景」和「雷区」两节

L3 · 提交前(10 分钟)

照 提交前自查清单 走一遍。最容易漏的三条: grep 产物确认真 emit、新状态标志检查了所有出口(含提前 return)、 改的 action 有没有第二个注册点。

路线 D · 线上救火(现在就要结论)

先别扎进代码 开局五问 花 3 分钟,通常能省掉 3 小时。
① 必现还是偶现 ② 有什么前置条件 ③ 有没有固定时长(有就直接 grep 那个数字)  ④ 报的是现象还是结论 ⑤ 能不能缩小范围

按现象直接跳

现象先看常见根因类型
角色 / 物体不显示排查手册 4.1 相机没切(不是没显示)、材质残留、VisibilityLock 没 pop
卡住不动 / 流程走不下去排查手册 4.2 · 场景加载无超时兜底 状态标志漏复位、等的事件被提前消费、回调被覆盖、无超时的等待
配了没生效排查手册 4.3 双 Scheme 不一致、表没导、走了另一个注册点
表现异常 / 穿帮排查手册 4.4 遮罩关闭早于最后一个恢复项、loadscene 自带后处理
数据不对 / 残留排查手册 4.5 清理路径漏一步、缓存复用分支没处理入参变化、下标错位
穿地 / 掉出世界 / 地形消失流送假阳性 Cell Activated ≠ 碰撞体已 build、流送灯交接没执行、等待流送永久不返回
某块场景 / 子关卡没出来子关卡差集 · DataLayer 工具 DataLayer 没开、两套 LayerTasks 求差集结果不对、上一张图状态没重置

找日志

场景路径
QA / 用户给的「Client(N)」Downloads 下的日志快照
自己在编辑器里复现Saved/Logs/Client.log(UTC 时间戳,含多段 PIE)

过滤关键字见 grep 套路。传送类一律带「传送」前缀,结算类带「副本结算」。

各页深度分级参照

不确定某页要不要现在读,看这张表:

页面层级什么时候读
名词与缩写表L1最先读,30 分钟建坐标系
框架与分层总纲L1所有模块的公共底座,逐字读
排查与调试手册L1出问题时;平时至少把开局五问背下来
重构与加功能指南L1动手前,尤其编译流水线那节
场景加载命令链L1读传送 / 传送点 / 两种重生之前;它们都落在这条链上
地图流送与 DataLayerL1同上。「穿地」「地形卸载」「DataLayer 没开」都在这一页
① 传送L2面试主打 / 要改传送时
⑦ 副本结算L2面试次选 / 要改结算表现时
Bug 案例大全L2读完模块之后再读
协议总索引L2查号时;这是协议号的单一事实源
面试问答库L2面试前一周
⑧ 爬塔 · ⑥ 关卡子弹L3要改这两个模块时
② · ③ · ④ · ⑤L3要改时;逻辑量小,随查随用
宇宙编辑器 SchemeL3要动编辑器 / 配表界面时
历史文档归档L3找旧方案原文时;注意里面的协议号可能过时
xcmskills 技能包工具让 AI 帮忙改这套代码时

自测:你真的看懂了吗

不看答案能说清这十个问题,说明这个站你已经吃透了:

架构层
1. 为什么 Model 的类型是 | undefined 而 Controller 是 undefined!?
2. 事件回调为什么不能用 bind,也不能用匿名箭头?
3. 写位置和读物理结果分别该在哪个 Tick 阶段?
答案:单例 · 事件 · Tick
链路层
4. 一次同步瞬移,客户端和服务器各发几条协议,栅栏卡在哪一步?
5. WP 说流送完成了,为什么人还会穿地?
6. 结算三阶段里,黑屏是哪一段开、哪一段关?
排查层
7. 现象是「卡了 13 秒」,第一个动作是什么?
8. QA 说「SetActorVisible 设了 true 但角色不显示」,怎么判断这是不是结论而非现象?
9. 编译显示 0 错误,怎么确认产物真的更新了?
工程层
10. 你要改一个 action 的行为,动手前的第一件事是什么?
答案:grep 有没有第二个注册点—— 同一个 action 常常注册了 player / entity 两套实现, 只改一套的话交互触发的那条路径不生效。见 十八条铁律第 1 条