2026 年的网页游戏引擎:PlayCanvas、Three.js、Babylon.js 和 Unity WebGL 对比
作者:Oleg Sidorkin,Cinevva CTO 和联合创始人

如果你想在 2026 年发布一款跑在浏览器里的 3D 游戏,你有四个主流选择,还有几个更新的选项。它们常被归到一起叫"网页游戏引擎",但它们其实是解决不同问题的、真正不同的工具。选错一个会让你白白浪费几个月。这是一篇当下的、经过事实核查的对比,作者就是靠做网页 3D 引擎吃饭的人,在做出自己的引擎之前评估过这里所有这些。
我们会逐一过一遍每个选项,它到底是什么、适合谁、又在哪里掉链子,最后给你一份简短的决策指南。凡是提到版本号的地方,都以 2026 年 6 月的情况为准。
快速对比
| PlayCanvas | Three.js | Babylon.js | Unity WebGL | Cinevva | |
|---|---|---|---|---|---|
| 它是什么 | 完整引擎 + 托管编辑器 | 渲染库 | 完整引擎 + 编辑器 | 桌面引擎,网页导出 | AI 原生世界平台 |
| 架构 | 实体组件(ECS) | 场景图 | 场景图 + 组件 | GameObject/组件 | 场景图 + AI 构建器 |
| 脚本 | TypeScript / JavaScript | JavaScript(其余靠你自己搭) | TypeScript / JavaScript | C#(编译为 Wasm) | 自然语言 + 代码 |
| 渲染器 | WebGL2,WebGPU 渐趋成熟 | WebGL2,WebGPU 不断壮大 | WebGL2,WebGPU 不断推进 | WebGL2(导出) | 仅 WebGPU |
| 编辑器 | 托管,商业 | 无 | 网页版,免费 | 桌面版,商业 | 世界内,沉浸式 |
| 物理 | Ammo / 集成 | 自带 | 内置 Havok | 内置(PhysX) | 自研角色解算器 |
| 授权 | 引擎 MIT,编辑器专有 | MIT | MIT | 专有 | 专有 |
| 最适合 | 工作室风格的浏览器游戏 | 自定义 3D,完全掌控 | 开箱即用的游戏 | 移植已有的 Unity 游戏 | 世界内 AI 造游戏 |
这篇文章接下来的部分就是在解释这张表。
PlayCanvas
PlayCanvas 是网页上最接近 Unity 式工作流的东西。引擎以 MIT 许可开源,截至 2026 年 6 月 5 日版本为 v2.19.6。它用实体组件系统,你用 TypeScript 或 JavaScript 写游戏逻辑,资源走一条服务端流水线产出 GLB。有真正的商业游戏跑在上面,大公司也在生产环境里用它,Snap 就是一个公开的例子。
关于 PlayCanvas,人们常搞错的两件事值得纠正。第一,虽然引擎是 MIT 许可的,但大多数团队真正在用的那个托管可视化编辑器是一个商业产品,不是开源的。你可以不用它而免费使用引擎,但"编辑器加云"的工作流是付费的部分。第二,PlayCanvas 是 WebGL2 优先的。它有一条 WebGPU 路径,但那条路径仍在走向成熟,还不是默认渲染器,所以今天别指望用 PlayCanvas 跑生产级的 WebGPU 计算着色器。
PlayCanvas 真正领先的地方是 3D 高斯泼溅(Gaussian splatting)。它的 SuperSplat 编辑器和查看器(团队已经开源)在网页上捕捉和发布泼溅场景这件事上,是任何地方都数得上的顶级工具之一,还带有面向大型捕捉的基于 WebGPU 的流式加载。如果你做的是照片级的扫描环境,那确实是从这里起步的一个真实理由。
选 PlayCanvas,如果你想要一个 Unity 式的编辑器和一条面向浏览器的托管资源流水线,并且你要发布的是工作室会做的那类游戏。另寻他处,如果你今天就需要 WebGPU 计算,或者你想避开一个托管的商业编辑器。
Three.js
Three.js 不是一个游戏引擎。它是一个渲染库,而且是这个领域里使用最广泛的一个,遥遥领先。它给你场景图、相机、灯光、材质、几何体、加载器和一个渲染器,然后就到此为止。没有编辑器、没有物理、没有实体系统,也不对怎么组织一款游戏抱任何成见。这些都得你自己加,或者从生态里拉。
那种取舍就是它的全部故事。你得到最大的掌控权和网页 3D 里最大的社区,代价是渲染器之上的一切都得你自己搭或拼。它的 WebGPU 渲染器一直在稳步壮大,今天就可以用,不过和其他几个一样,WebGL2 路径仍是成熟的默认选项。Three.js 是 MIT 许可的。
选 Three.js,如果你想要完全掌控、一个最小的基座,并且你有工程能力在裸渲染器之上搭出自己的游戏系统。另寻他处,如果你想要别人把编辑器和游戏系统直接递到你手上。
Babylon.js
Babylon.js 是一个完整引擎,MIT 许可,由微软的一个团队支持。和 Three.js 不同,它自带了那些你本来得自己拼的部分:一套组件模型、集成好的 Havok 物理引擎、一个免费的网页版编辑器,还有一条资源流水线。它在 WebGPU 上的工作推进很快,在通用引擎里属于较为先进的,不过它仍把 WebGL2 当作广泛兼容的路径保留着。
如果你的心理模型是"我想要一个完整引擎、内置物理,并且我乐意在它的惯例里干活",那么 Babylon 是一个很强的默认选择,而且可以说是这个领域里功能最完整的免费选项。
选 Babylon.js,如果你想要开箱即用、内置物理和一个免费编辑器。另寻他处,如果你想要极小的依赖体积,或者你就是想要一个 Unity 式的托管工作流。
Unity WebGL
Unity WebGL 不是一个网页引擎,它是一个导出目标。你在 Unity 桌面编辑器里用 C# 构建,然后编译成一个 WebGL 包,通过 WebAssembly 跑在浏览器里。这让它成为某个特定情形下的显而易见的答案:你已经有一款 Unity 游戏,想要它的浏览器版本。
对于一个网页优先的项目,它带来真实的代价。运行时和下载体积都很可观,启动比原生网页引擎更慢,移动端浏览器性能是个众所周知的痛点。Unity 是专有的,它的 WebGL 输出面向 WebGL2。
选 Unity WebGL,如果你有一个已有的 Unity 项目要搬到浏览器,或者你的团队本来就泡在 Unity 里。另寻他处,如果中端手机上的即时加载是硬性要求,或者你是从零开始且网页优先。
AI 原生与世界内创作在哪儿落脚
上面这些都共享一个假设:开发者坐在桌前、在编辑器里构建游戏,然后发布一个运行时。这个假设对大多数项目都成立,如果它描述的就是你的情况,那就从上面四个里选。
但值得知道这个假设不再是唯一的选项了,因为一个不同的品类正在出现。我们做的 Cinevva 是一个仅 WebGPU 的世界平台,游戏是从世界内部创建的。你不是去打开一个编辑器,而是作为一个化身站在空间里,你描述你想要什么,一个 AI 构建器就在你站在那儿的时候把它变成地形、物件和行为。创作和游玩是同一场会话。在底层这意味着我们走了仅 WebGPU 的路线,用计算着色器做地形,写了一个自研的角色解算器而不是通用物理引擎,还做了一套动画和重定向系统,这些我们在我们为什么自己造了一个 WebGPU 引擎里写过。
这不是 PlayCanvas 或 Babylon 的替代品。如果你是一个开发者在做一款特定的游戏,那些才是对的工具。Cinevva 面向的是另一个目标:让那些不是引擎开发者的人通过描述来做出并分享可玩的空间。我们在这里提它,是因为"我该用哪个网页游戏引擎"这个问题,越来越有了一个根本不是引擎的第五个答案。
完整功能矩阵
上面那张快速表是头条。这是详细版,按子系统分组。关于怎么读它,有几条实话。"BYO"意思是自带(bring your own),也就是说引擎本身不带,但生态或你自己的代码可以加上。这对 Three.js 最重要,因为它在设计上就是一个渲染库,所以那里的"BYO"是这种理念的特性,不是缺口。Unity 的"仅导出"意思是该能力存在于桌面编辑器里、会随车带进 WebGL 构建,而不是网页原生的。竞品的格子反映的是截至 2026 年年中开箱即用的能力和有充分文档记载的行为。Cinevva 的格子反映的是我们已发布构建里实际跑着的东西,"计划中"标记的是已设计但尚未做出来的。
渲染
| 功能 | Cinevva | PlayCanvas | Three.js | Babylon.js | Unity WebGL |
|---|---|---|---|---|---|
| 主渲染器 | 仅 WebGPU | WebGL2(WebGPU 测试版) | WebGL2(WebGPU 壮大中) | WebGL2(WebGPU 先进) | WebGL2(导出) |
| 生产环境计算着色器 | 是(核心依赖) | 测试版 | 经由 WebGPU | 是(WebGPU) | 仅导出,受限 |
| 着色器编写 | TSL 节点 + 计算 | Shader chunks / GLSL | GLSL + 节点(TSL) | 节点材质 / GLSL / WGSL | ShaderLab / HLSL |
| 簇式 / forward+ 光照 | 是(froxel) | 是 | BYO | 是 | 是 |
| 体积云与天气 | 是 | BYO | BYO | 部分 | BYO |
| 3D 高斯泼溅工具 | 计划中 | 是(SuperSplat,领先) | 社区 | 是 | 插件 |
世界与地形
| 功能 | Cinevva | PlayCanvas | Three.js | Babylon.js | Unity WebGL |
|---|---|---|---|---|---|
| 内置大世界流式加载 | 是(64m 区块) | BYO | BYO | BYO | 仅导出 |
| 地形系统 | 混合高度图 + marching-cubes/SDF | BYO | BYO | 扩展 | 内置(桌面) |
| 运行时地形雕刻 | 是(GPU) | BYO | BYO | BYO | 否(编辑时) |
| 洞穴与悬垂(真正 3D 拓扑) | 是(marching cubes) | BYO | BYO | BYO | BYO |
| GPU 实例化植被与草 | 是 | 是 | BYO | 是 | 是 |
物理与角色
| 功能 | Cinevva | PlayCanvas | Three.js | Babylon.js | Unity WebGL |
|---|---|---|---|---|---|
| 物理引擎 | 自研运动学解算器 | Ammo 集成 | BYO(Rapier/Cannon/Ammo) | 内置 Havok | 内置 PhysX |
| 刚体动力学 | 否(刻意如此) | 是 | BYO | 是 | 是 |
| 角色控制器 | 是(多模式 FSM) | 模板 / Ammo | BYO | 是 | 内置 |
| 地形集成碰撞(SDF) | 是 | 否 | BYO | 否 | 否 |
动画
| 功能 | Cinevva | PlayCanvas | Three.js | Babylon.js | Unity WebGL |
|---|---|---|---|---|---|
| 骨骼动画 | 是 | 是 | 是 | 是 | 是 |
| 混合 / 状态机 | 是(解析器 FSM) | 是(动画状态图) | Mixer(混合需 BYO) | 是 | 是(Mecanim) |
| 骨架重定向 | 是(流水线) | 受限 | 社区 | 部分 | 是(人形) |
| 反向动力学 | 计划中 | 受限 | 社区 | 是 | 是 |
多人与后端
| 功能 | Cinevva | PlayCanvas | Three.js | Babylon.js | Unity WebGL |
|---|---|---|---|---|---|
| 内置多人 | 是(边缘权威) | BYO(Photon/Colyseus) | BYO | BYO | BYO(Netcode,非网页原生) |
| 持久化共享世界 | 是(每区块一个 Durable Objects) | BYO | BYO | BYO | BYO |
| 空间语音聊天 | 是(WebRTC + HRTF) | BYO | BYO | BYO | BYO |
创作与编辑
| 功能 | Cinevva | PlayCanvas | Three.js | Babylon.js | Unity WebGL |
|---|---|---|---|---|---|
| 编辑器 | 世界内,沉浸式 | 托管的桌面风格(商业) | 无(极简) | 网页版(免费) | 桌面(商业) |
| 世界内具身创作 | 是 | 否 | 否 | 否 | 否 |
| 自然语言 / AI 创作 | 是(AI 构建器) | 否 | 否 | 否 | 否 |
| 脚本 | 自然语言 + JS | TypeScript / JS | JavaScript | TypeScript / JS | C# |
资源与分发
| 功能 | Cinevva | PlayCanvas | Three.js | Babylon.js | Unity WebGL |
|---|---|---|---|---|---|
| 服务端资源流水线 | 是(GLB + LOD + KTX2 + Draco) | 是(GLB) | 仅加载器 | 导入工具 | 是 |
| 内置 AI 资源生成 | 是(3D、图像、音频、音乐) | 否 | 否 | 否 | 否 |
| 联合资源搜索 | 是(十一个提供商) | 资源商店 | 否 | 否 | 资源商店 |
| 浏览器里直接跑,无需安装 | 是 | 是 | 是 | 是 | 是(很重) |
| 引擎授权 | 专有平台 | 引擎 MIT,编辑器专有 | MIT | MIT | 专有 |
矩阵里的这种规律才是真正的故事。通用引擎把自己的强项横向铺开,它们各自都把大多数事情做得称职,把世界、后端和创作流程留给你。Cinevva 纵向集中,它做的事更少,但握住了从渲染器到一个你从内部创建的共享世界的整条路径。抽象地说,两种形态没有谁更好。它们回答的是不同的问题。
如何选择
把工具对应到情形上,而不是对应到一张功能清单上。
如果你已经有一款 Unity 游戏,用 Unity WebGL 导出它,并接受那份体积。如果你是一家想要编辑器驱动工作流来做浏览器游戏的工作室,用 PlayCanvas。如果你想要一个内置物理的完整免费引擎,用 Babylon.js。如果你想要完全掌控,并且有团队在一个裸渲染器上搭建,用 Three.js。而如果你的目标不是做一款游戏,而是让人们通过描述事物来在一个共享世界里创作和游玩,那就是我们所在的品类,你可以试试 Cinevva。
无论你选哪个,在投入之前都用真正的 spike 做评估。这些里的每一个都能撑起一款真正的游戏,而中途换工具的代价,就是你没拿去发布的那几个月。