专访白鹭时代马鉴:WebGL 3D 手游时代降临

  • 徐川

2015 年 12 月 16 日

话题:移动HTML5语言 & 开发

12 月 5 日,在2015HTML5 移动生态大会上,白鹭时代联合创始人马鉴发布了Egret 3D手机页游游戏引擎。在会后,马鉴接受了 InfoQ 记者的采访,谈到了 WebGL 游戏化是否成熟以及 WebVR 发展的问题。

Egret 3D 是自今年 5 月份发布Egret 2.0以来颠覆性的重大升级,基于移动游览器的 WebGL 3D 图像 API,以及实验性的支持了 WebVR API,相关的开发工具也获得同步更新。据马鉴在大会上介绍,Egret 3D 的相关特性有:

  • 语法结构与 Egret 2D 类似,封装了 WebGL API,使其更加简单易用。
  • 支持 3D 模型封装,并有自己的 3Dmax 输出插件,方便输出对应资源。
  • 包体仅 200K,相比 Three.js 减少 35%。
  • 支持多种渲染方式以及后期特效。
  • 内置 WebVR SDK,只需调节参数即可实现 VR 效果、设备支持。
  • 开发工具的更新支持 React 组件的可视化编程,导出 JSX。

另外在大会上马鉴还发布了青雀移动解决方案,使用云端积木式的开发方式搭建移动 Web 应用和 HTML5 宣传页面。

以下是会后 InfoQ 记者对马鉴的采访整理。

InfoQ:目前 WebGL 在各移动平台的发展情况如何,是否已经足够成熟,它在不同平台上的差异大吗?

马鉴:目前 WebGL 在移动平台上的覆盖率超过 84.5%,WebGL 标准在 2011 年发布,我们看到现在几乎所有的主流浏览器厂商都支持了 WebGL,包括苹果、谷歌、微软等等,目前市面上已经出现了一些基于 WebGL 的 3D 绘图库,也有越来越多的人来使用它们。

各个移动平台也基本早就支持了 WebGL,不过在以前受限于移动设备的性能,所以没有人用它来做很多东西,但现在我们的主流的移动设备差不多都 有独立的 GPU 处理单元,所以这个性能限制基本不存在了。至于平台差异,因为大家都按照 WebGL 标准去实现 API,所以基本上没什么差异。

InfoQ:类似 Egret 3D 这样基于 WebGL 的游戏引擎的性能瓶颈在哪里?

马鉴:我们所遇到的主要的瓶颈在内存和绘图 IO 上,这个和目前 3D 手机游戏引擎的瓶颈应该差不多,我们也做了一些相关的优化。

InfoQ:Egret 3D 游戏和原生 3D 手游在哪些方面还有差距?原因出在哪里?

马鉴:WebGL API 本身只是对 OpenGL ES 2.0 的一个封装,因此用 WebGL 做手游和原生手游其实并没有很大的差别,不过因为 WebGL 的 API 是固定的,在底层优化方面不如原生,另外 JS 的渲染和计算速度也比不上原生引擎,不过目前来看,因为移动设备性能提升,这些差距是越来越小的。

InfoQ:Egret 使用 TypeScript 开发,请问您对这门语言看法如何?是否提高了生产力和效率?

马鉴:我们在第一天开发 Egret 的时候就用了 TypeScript,在此之前我们用 ActionScript 做过一些大型项目,而在 JavaScript 上开发大型项目却是一个顽疾,TypeScript 的确是极大的提升了生产力和团队协作的能力,我们团队一直用到现在也非常喜欢。

InfoQ:WebVR 标准好像还在草案阶段,目前实用性如何?

马鉴:WebVR 目前是在草案阶段,但是 Google 的 Chrome 已经提供了一套完整的 API 可以使用 了,我们算是 WebVR 的早期利用者,目前我们和 Google 的相关开发者有过接触,密切跟踪他们的研发进展和未来的更新,另外我们也正在接洽 W3C 中国,希望能参与到标准的制定过程中来,给标准提一些建议。

InfoQ:我看到 Egret 开发工具支持 React 可视化编程,不知道是怎么做到这一点的?

马鉴:因为我们自己有一套 UI 组件,并且支持它的可视化开发,我们这套 UI 组件是用 XML 来描述的,这个其实和 React 里面的 JSX 类似,于是我们就做了一个 EXML 到 JSX 的一个转换,通过编写我们的 UI 组件,在 IDE 里可以导出 React 的 JSX 出来, 算是间接的支持了 React 的可视化编程。

当然,目前前端界对可视化编程存在争议,我们做这一条的出发点是我们的 Lark 框架搬到云端后,想降低开发门槛,完全通过拖拽组件就可以生成代码,添加 React 支持可以让我们的这套工具使用范围更广泛,可以和其它的基于 React 的开发工作流无缝的结合起来,这是我们的一个初衷。

移动HTML5语言 & 开发