《Cocos 游戏开发入门》全 61 篇,是一套以一个从零手写的 2D 游戏运行时为主线的入门书:从第 1 章定义「帧、时间与坐标系」起,到第 18 章把同一款游戏做成两套可对照的实现,
mini2d会一路长大——一个可跑的固定步长循环、一套 Canvas2D 渲染器、一棵带脏标记的场景图、一个固定步长物理与渲染插值、一套输入缓冲、一个组件与生命周期模型、一个宽相碰撞检测、一套补间与状态驱动动画、一个音效池、一份资源清单与引用计数、一套锚点布局与虚拟列表、一台存档状态机、一个行为树与 A* 寻路、一条数据驱动的结算管线、一组调试绘制与性能剖析工具、一套确定性测试与截图回归,最后收敛成一个可打包、可多端发布的工程。每章末节都会给出同一件事在 Cocos Creator 3.8 里怎么做,让「从零实现」与「引擎开箱能力」始终成对出现。
本页是《Cocos 游戏开发入门》的全书目录:按章节顺序列出全部 61 篇,点击标题直达正文。也可以从各节末尾的「阅读导航」按顺序通读,或先看目录篇 里的学习路径与周计划。
全书概览
| 项目 | 内容 |
|---|---|
| 书稿 | 《Cocos 游戏开发入门》 |
| 篇数 | 61 篇(正文 18 章 54 节 + 目录篇 + 序 + 前言 + 附录 A–D) |
| 领域 | 2D 游戏引擎从零实现,对照 Cocos Creator 3.8 |
| 贯穿项目 | 《方块冲刺》——一款 2D 横版跑酷 + 收集 + 道具的休闲小游戏 |
| 从零运行时 | mini2d——纯 TypeScript、零 cc 依赖、浏览器原生 Canvas2D |
| 阅读方式 | 从目录篇 进入按顺序通读,或按查漏场景跳读 |
| 实测版本 | Cocos Creator 3.8.8(@cocos/creator-types@3.8.8)、Node 26.5.0、TypeScript 7.0.2、vitest 5.0.3 |
| 上级专题 | 书稿专题 |
全书目录
前置
| 节 | 文章 | 核心内容 |
|---|---|---|
| — | 目录与学习路径 | 全书导航页:本卷怎么读、三条阅读路径与八到十周计划、三层可运行性口径与 54 节逐节索引 |
| — | 序 | 更高视角:为什么在 2026 年还要从零写一个 2D 运行时、本卷的写法取舍与常见误解 |
| — | 前言 | 本卷怎么来的、写给谁、技术栈与版本口径、四卷结构、本卷不写什么 |
| 附 A | 附录 A.mini2d API 与模块速查 | Clock / Renderer / Node / GameObject / Collider / Tween / AudioPool 的签名与语义速查,含「假时钟 + 记录式渲染器」的断言法 |
| 附 B | 附录 B.Cocos Creator 3.8 工程结构与 cc.d.ts 速查 | Cocos 工程目录、.scene / .prefab / .meta 结构、@cocos/creator-types 类型接入与 cc.d.ts 反查方法 |
| 附 C | 附录 C.环境与离线复现速查 | Node 26、TypeScript 可擦除语法约束、vitest / vite / Playwright 配置、零网络复现步骤 |
| 附 D | 附录 D.常见错误与 FAQ | 高频报错原文与最小复现:固定步长丢步、纹理跨域、坐标换算错位、合批失效、Playwright 截图全白……每条给原因与修法 |
第一部分:地基(第 1–3 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 1.1 | 1.1 环境与仓库骨架 | 搭好 Node 26 + TypeScript + vitest + Playwright 环境,装 @cocos/creator-types 接通 Cocos 类型检查 |
| 1.2 | 1.2 游戏的心智模型:帧、时间、坐标系 | 把「一帧」想清楚:离散时间、坐标原点、y 轴方向与屏幕坐标的差异 |
| 1.3 | 1.3 第一个可跑循环:requestAnimationFrame 与固定步长 | 写出第一个主循环,用固定步长累积器让逻辑与帧率解耦,并在 Node 里用假时钟复现 |
| 2.1 | 2.1 Canvas2D 绘制与坐标变换 | 从 fillRect 起步,手写平移 / 旋转 / 缩放矩阵,理解变换顺序为何不可交换 |
| 2.2 | 2.2 精灵、纹理与图集切分 | 把一张图集按矩形切分,用源矩形绘制子图,处理锚点与九宫格 |
| 2.3 | 2.3 相机、视口与分辨率适配 | 用相机把世界坐标映到屏幕,处理视口、缩放与横竖屏适配 |
| 3.1 | 3.1 场景图与节点树 | 用父子变换组织对象,用脏标记避免每帧重算世界矩阵 |
| 3.2 | 3.2 绘制顺序、层级与遮罩 | 排序与层级决定谁盖谁,用裁剪区域实现遮罩与滚动视窗 |
| 3.3 | 3.3 批处理与 Draw Call | 讲清合批条件与纹理切换的代价,用记录式渲染器量化 Draw Call |
第二部分:时间、输入与对象(第 4–6 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 4.1 | 4.1 帧率无关的移动与 deltaTime | 为什么乘 deltaTime 就能帧率无关,以及不这么做会怎样 |
| 4.2 | 4.2 固定步长物理与渲染插值 | 物理走固定步长、渲染做插值,兼顾稳定与顺滑 |
| 4.3 | 4.3 暂停、时间缩放与慢动作 | 用时间缩放实现暂停与慢动作,并隔离「不受缩放影响」的 UI 计时 |
| 5.1 | 5.1 输入事件模型与坐标换算 | 从屏幕坐标换算到世界坐标,处理 DPR 与画布缩放 |
| 5.2 | 5.2 触摸手势与多点触控 | 识别点击、滑动、长按与捏合,跟踪多指各自的轨迹 |
| 5.3 | 5.3 输入缓冲与手感 | 用输入缓冲实现跳跃宽容与连击窗口,把「手感」变成可调参数 |
| 6.1 | 6.1 组件模型:从继承到组合 | 用组合替代深继承,把行为拆成可挂载的组件 |
| 6.2 | 6.2 生命周期与消息分发 | 定义 onLoad / start / update / onDestroy 与消息分发顺序 |
| 6.3 | 6.3 序列化与数据驱动配置 | 把组件参数序列化成配置,用数据驱动关卡与数值 |
第三部分:表现(第 7–11 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 7.1 | 7.1 AABB、圆形与 SAT 碰撞检测 | 手写三种碰撞检测,理解各自的适用场景与代价 |
| 7.2 | 7.2 空间划分与宽相 | 用网格与四叉树把 O(n²) 的粗筛降到可接受 |
| 7.3 | 7.3 碰撞响应、触发器与分层掩码 | 处理穿透、推出与触发器,用分层掩码控制谁和谁碰 |
| 8.1 | 8.1 帧动画与精灵表播放 | 用时间轴驱动精灵表播放,处理循环、单次与事件帧 |
| 8.2 | 8.2 补间与缓动曲线的数学 | 从线性到回弹,手写常见缓动函数与补间队列 |
| 8.3 | 8.3 属性动画与状态驱动表现 | 让表现由状态驱动,而不是散落的条件分支 |
| 9.1 | 9.1 音频播放与音效池 | 用音效池复用播放实例,避免高频音效把资源打爆 |
| 9.2 | 9.2 BGM、淡入淡出与音量总线 | 用音量总线统一管理 BGM / 音效,实现淡入淡出与静音 |
| 9.3 | 9.3 移动端音频限制与解锁 | 处理自动播放限制、首次交互解锁与后台切换 |
| 10.1 | 10.1 资源清单与依赖图 | 用清单描述资源与依赖,构建时静态分析出可预加载的集合 |
| 10.2 | 10.2 异步加载、进度与预加载 | 用 Promise 池并发加载,汇报进度并做首屏预加载 |
| 10.3 | 10.3 引用计数与资源释放 | 用引用计数决定何时真正释放,避免泄漏与误删 |
| 11.1 | 11.1 布局系统:锚点、对齐与适配 | 用锚点与对齐把 UI 从绝对坐标里解放出来 |
| 11.2 | 11.2 列表虚拟化与滚动性能 | 只渲染可见项,让长列表滚动不掉帧 |
| 11.3 | 11.3 弹窗栈与界面状态机 | 用栈管理弹窗层级,用状态机约束界面跳转 |
第四部分:系统与玩法(第 12–14 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 12.1 | 12.1 游戏状态机 | 用状态机管理「加载 / 主菜单 / 游戏 / 暂停 / 结算」的流转 |
| 12.2 | 12.2 序列化格式、版本与迁移 | 设计存档格式,用版本号与迁移函数兼容老存档 |
| 12.3 | 12.3 本地存储与云存档冲突 | 处理本地与云端两份存档的冲突,给出可解释的合并策略 |
| 13.1 | 13.1 有限状态机与行为树 | 从有限状态机到行为树,给敌人写可组合的行为 |
| 13.2 | 13.2 寻路:A* 与导航网格 | 手写 A* 并在网格上跑通,讲清启发函数与代价 |
| 13.3 | 13.3 关卡数据与程序化生成 | 用数据描述关卡,用约束 + 种子程序化生成可玩关卡 |
| 14.1 | 14.1 结算管线与帧对齐 | 把伤害 / 治疗 / 状态在结算管线里排队,按帧对齐避免顺序抖动 |
| 14.2 | 14.2 技能与效果系统:数据驱动 | 用「效果」原子组合出技能,让策划改数值不改代码 |
| 14.3 | 14.3 经济与掉落表 | 用权重表实现掉落,讲清期望值与保底机制 |
第五部分:质量与交付(第 15–18 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 15.1 | 15.1 调试绘制与可视化 | 把碰撞盒、路径、状态画出来,让 bug 无处可藏 |
| 15.2 | 15.2 帧率、内存与性能剖析 | 采集帧耗时与分配,定位掉帧的真凶 |
| 15.3 | 15.3 开发者控制台与作弊命令 | 做一个游戏内控制台,支持改数值、跳关与回放 |
| 16.1 | 16.1 纯逻辑单测:vitest 与假时钟 | 用假时钟与记录式渲染器把游戏逻辑变成可断言的事实 |
| 16.2 | 16.2 渲染端到端测试:Playwright 截图 | 用固定步长 + 无头浏览器截图,做可复现的渲染回归 |
| 16.3 | 16.3 确定性回放与回归 | 录制输入序列并回放,让 bug 可复现、修复可验证 |
| 17.1 | 17.1 构建流程与产物体积分析 | 用 Vite 打包成单文件 bundle,分析体积构成 |
| 17.2 | 17.2 多端发布:H5 / 微信小游戏 / 原生 | 同一份代码在三端各自的约束与适配要点 |
| 17.3 | 17.3 Cocos 对照:构建面板与多平台发布 | 对照 Cocos Creator 的构建面板与各平台产物结构 |
| 18.1 | 18.1 同一款游戏的两套实现对照 | 把《方块冲刺》的 mini2d 版与 Cocos 版并排,逐项对照 |
| 18.2 | 18.2 迁移清单:mini2d → Cocos Creator | 给出从自研运行时迁移到引擎的检查清单与常见陷阱 |
| 18.3 | 18.3 回顾与路线:进入实战卷 | 回顾 mini2d 的演进路径,衔接实战卷 |
怎么用这份索引
- 顺序通读:从第 1 章 1.1 开始,每一节末尾都有上一节 / 下一节的导航。若不确定从哪开始,先看目录篇的三条学习路径 。
- 按问题跳读:角色移动卡顿看 4.1、物理穿墙看 7.3、触摸点不准看 5.1、跳跃手感差看 5.3、图集花屏看 2.2、Draw Call 高看 3.3、资源泄漏看 10.3、长列表卡看 11.2、老存档读不出看 12.2、敌人行为乱看 13.1、伤害结算顺序错看 14.1、测试不稳定看 16.1。附录 D 另有一张按报错原文索引的速查表。
- 只查 API:直接翻附录 A
与附录 B
,前者是
mini2d核心类型的签名速查,后者是 Cocos Creator 3.8 工程结构与cc.d.ts反查方法。 - 想动手:18 章全程只有
mini2d一个项目,每一节都在它的真实代码上推进,可以边读边改。环境与离线复现步骤见附录 C 。
相关阅读
- 游戏开发专题 — 站内游戏开发的专题文章总入口,覆盖客户端、服务端、发行与行业
- 游戏引擎专题 — 引擎架构、渲染管线与自研引擎的专题讨论
- 图形学专题 — 渲染管线、着色器与图形 API 的系统文章,与本卷第 2–3 章互补
- 《Defold 游戏开发入门》 — 另一款轻量 2D 引擎的入门书稿,可作横向对照
- TypeScript 专题 — 类型系统与工程实践,与本卷的 TS 代码风格衔接
- 书稿专题 — 全部在线电子书与创作手记