在过去的几年里,Mozilla 与其他浏览器和行业紧密合作,以 推进网页游戏的发展。我们共同使开发者能够在网页上部署本地代码,首先通过 asm.js,然后通过其继任者 WebAssembly。WebAssembly 现在已在 Firefox 和 Chrome 中可用,很快也将出现在 Edge 和 WebKit 中,它使浏览器中代码的性能接近原生性能,这对于游戏开发非常棒,并且也对 WebVR 应用程序显示出益处。由于避免了 JIT 编译和垃圾回收,WebAssembly 代码能够提供更可预测的性能。它在所有主要浏览器引擎中的广泛支持为接近原生速度开辟了途径,使得在网页上构建高性能、无插件的游戏成为可能。
“2017 年,Kongregate 看到了从 Flash 向 HTML5 的转变,近 60% 的新游戏使用了 HTML5,”Kongregate 的联合创始人兼 CEO Emily Greer 说。“开发者能够利用 HTML5 技术和工具的改进,而消费者则能够在无需第三方插件的情况下享受游戏。随着 HTML5 的不断发展,它将使开发者能够创建更高级的游戏,这些游戏将惠及 Kongregate.com 上数百万玩家以及更广泛、仍蓬勃发展的网页游戏行业。”
Kongregate 的数据显示,平均而言,大约 55% 的上传游戏是 HTML5 游戏。
我们还可以看到,这些游戏是高质量的游戏,超过 60% 的 HTML5 游戏获得了“优秀”分数(高于 5 分中的 4 分)。
尽管有这种积极趋势,但仍然存在改进的机会。网页是一个不断发展的平台,开发者一直在寻求更好的性能。我们经常听到的一个主要要求是网页上的多线程支持。 SharedArrayBuffer 是多线程的必要构建块,它使多个网页工作线程能够同时共享内存。该 规范 已完成,Firefox 计划在 Firefox 55 中提供 SharedArrayBuffer 支持。
另一个常见的要求是 SIMD 支持。SIMD 代表单指令,多数据。这是一种让 CPU 可以并行化数学指令的方法,可以为诸如 3D 渲染和物理之类的计算密集型需求提供显著的性能改进。
该 WebAssembly 社区小组 现在专注于通过 SIMD 和多线程实现硬件并行,这是 WebAssembly 的下一个主要演化步骤。在发布 WebAssembly 的第一个版本以及持续合作的势头基础上,这两项新功能都应该在 2018 年初在 Firefox 中稳定并准备好发布。
在过去的几年里,我们在优化运行时性能方面付出了很多努力,并从中学到了很多教训。我们收集了许多这些经验教训,并在关于 将游戏从本地移植到网页 的实用博客文章中分享了这些经验教训,并期待您对其他改进领域的意见。随着多线程支持在 2018 年落地,预计将看到进一步投资于改进内存使用情况的机会。
我们再次感谢游戏开发者、发行商、引擎提供商以及多年来与我们合作的其他浏览器的引擎团队。没有你们的帮助,我们不可能做到这一点 - 谢谢!
关于 Andre Vrignaud
Andre Vrignaud 是 Mozilla 混合现实计划的平台战略主管,他指导 Mozilla 为实现开放、可持续的 3D 网页和生态系统而做出的努力的战略。此外,他还倡导网络中立和隐私。
3 条评论