乐于分享
好东西不私藏

扒光源码:这款 C++/WASM 2D 游戏引擎,凭什么让前端开发者放弃 JS?

扒光源码:这款 C++/WASM 2D 游戏引擎,凭什么让前端开发者放弃 JS?

扒光源码:这款 C++/WASM 2D 游戏引擎,凭什么让前端开发者放弃 JS?

最近翻到一个刚改名为 Estella 的 2D 游戏引擎仓库,不看 PR 稿,不看宣传页,直接扒源码和提交记录。今天只讲硬核事实,不黑不吹,看看它到底值不值得前端团队入坑。

一、先看底子:C++ 编译 WASM,不是 JS 硬扛

打开仓库一眼就能看到核心分层。底层是 C++ 写的渲染管线,编译成 WebAssembly。上层给开发者用的是 TypeScript SDK,提供「defineComponent」「defineSystem」「Query」这类类型安全接口。语言占比很诚实,TypeScript 73.4%,C++ 17.5%,剩下是脚本和工具链。

这就和普通 H5 引擎拉开差距。别人是 JS 全程解释执行。它是逻辑用 TS 写,渲染跑 WASM。复杂场景下,帧率能稳很多,不会因为 JS 执行阻塞画面。

对做微信小游戏的团队很友好。一套代码,直接发布浏览器和微信小游戏,不用两套逻辑。

二、ECS 架构:不是套壳,是真・数据驱动

提交记录里反复出现 ECS 相关重构。比如把「LocalTransform」和「WorldTransform」合并成单一「Transform」。还有大量「Query」遍历、组件绑定的优化。

这不是随便加个组件名字就叫 ECS。它是真按实体 – 组件 – 系统来设计。

  • 实体就是 ID,不存逻辑
  • 组件只存数据
  • 系统按查询批量遍历更新

好处很实在。项目做大了,逻辑不会缠成一团。加功能不用改上帝组件,性能也更好控制。

对比很多引擎把逻辑塞在节点里,改一行炸一片。Estella 这种设计,长期维护成本低很多。

三、编辑器:真能用,不是玩具

最近提交很有料。

  • 修复导入大量资源时编辑器崩溃
  • 加了 AI 助手面板,支持聊天、工具调用、编辑器集成
  • 优化资源收集和浏览器兼容

说明它不是只有底层 runtime。是带完整可视化编辑器的引擎。层级面板、检查器、资源浏览器全都有。不用手撸 JSON,不用记配置字段。对美术和策划友好,团队协作成本更低。

F5 一键预览,改完 TS 立刻看效果。开发节奏很顺。

四、细节里的工程诚意:不是堆功能

翻提交能看到很多务实优化。

  • 修复物理模块位置 bug
  • 补全 Linux 下 glBlendEquation 加载
  • 解决 WASM 集成里实体 FFI 绑定问题
  • 统一模块拆分,把 6 个超大文件拆小

这些都是不性感但要命的点。很多引擎吹特性,却在跨平台、稳定性上挖坑。Estella 在一点点填坑。

自带 Spine 动画和物理支持。做 2D 动作、冒险、闯关类游戏,开箱就能用。不用自己集成第三方库,少踩一堆兼容雷。

五、它的短板与现实权衡

优点很清楚,问题也不回避。

  • 生态年轻,社区和教程不多
  • 只专注 2D,3D 能力基本没有
  • 国内小众,遇到坑要自己查源码

反方观点也很合理。团队要的是快、稳、能发微信小游戏。不是要大而全的万能引擎。轻量化、强类型、WASM 性能,刚好切中中小团队痛点。先把核心场景做扎实,比堆无效功能更良心。

六、总结一下

能跑的烂代码也是好代码,但能长期迭代的干净架构更值钱。Estella 走的路线很清晰。

  • C++/WASM 打底,保证性能
  • TypeScript+ECS,保证开发效率与可维护
  • 可视化编辑器 + 双平台发布,降低落地门槛

对前端转游戏、H5 小游戏、微信小游戏团队来说。它是一个少技术债、高可控、真工程化的选择。不炒作概念,不搞花活,老老实实把渲染、架构、工具链做稳。

在遍地套壳、水文满天飞的圈子里。这种靠源码说话的引擎,反而更值得长期关注。您可以去了解github.com/esengine/estella。