Mozilla 和游戏:突破潜力的极限

在 Mozilla,我们相信 Web 的力量和潜力,并希望看到它在世界各地蓬勃发展。

我们已经做了什么

我们致力于构建必要的基础设施,以保持 Web 成为地球上最强大的平台。虽然 Web 的根源已经存在了一段时间,但 Mozilla 对游戏的关注是一个相对较新的举措。我们专注于使 Firefox 成为最佳的游戏开发平台。

查看 BananaBread

最新的 Firefox 版本包含了制作此演示所需的所有 JavaScript 和 WebGL 更新。

BananaBread 由 Mozilla 开发,以展示我们的进展。我们使用 Emscripten 将一个完整的 C++ 游戏引擎移植到 JavaScript。原始的开源引擎称为 Cube 2。它旨在支持第一人称射击游戏。很少有人相信将一个完整且高度响应的游戏移植到 JavaScript 是一个可以实现的目标。(我们自己也曾怀疑。)令我们惊讶的是,我们发现自己能够构建一个超越我们最高期望的演示。

该项目对原始游戏的代码修改很少,这表明将游戏移植到 Web 不一定很困难。

详细了解 Emscripten

HTML5 游戏的新技术

以下是今年推出的几项技术,旨在增强我们对 HTML5 游戏的支持

  • 针对游戏的 JavaScript 性能改进,其中许多受到我们在 Web 上看到的或开发人员发送给我们进行测试的游戏和演示的启发
  • 广泛的 WebGL 性能改进
  • 高精度计时
  • 桌面上的压缩纹理支持
  • 在大型代码库上更流畅的 JavaScript 执行
  • 桌面上的 2D canvas 的硬件加速
  • 全屏 API
  • 指针锁定 API(特别感谢 David Humphrey 和 Seneca 学院的学生)
  • 方向锁定

桌面版 Firefox 在短时间内取得了长足的进步。但未来还有更多改进。我们正在开发一些功能,以提高性能并简化开发。我们还在研究从 C# 和 Java 等语言移植到 JavaScript 的方案。

下一步

我们在 2012 年上半年的重点是 Windows、Mac 和 Linux 版 Firefox,虽然我们仍在继续改进这些版本,但我们下半年的重点将包括 Android 版 Firefox 和 Firefox OS。前方有艰巨的挑战,但我们很高兴能充分发挥 HTML5 在功能和性能方面的潜力。

Mozilla 社区从事游戏工作的团队的主要目标之一,不仅是推动 Firefox 上的游戏开发,还要推动所有浏览器上的游戏开发。任何已实现 BananaBread 演示使用的必要现代 Web 标准的浏览器都可以运行它。这些努力帮助我们了解 HTML5 的发展情况,并发现可以简化开发者工作的机会。直接倾听 HTML5 游戏开发者社区的意见,是我们了解需要做什么的关键部分。

我希望您能加入我们,共同提升 Web 的可能性!

您可以在我们的 IRC 服务器 irc.mozilla.org 的 #games 频道加入讨论。

或在 https://lists.mozilla.org/listinfo/community-games 订阅邮件列表

关于 mbest

Martin 目前是 Mozilla 的平台产品管理总监。

更多由 mbest 撰写的文章…


22 条评论

  1. louisremi

    令人印象深刻!
    尽管 WASD 控件仅适用于 QWERTY 键盘,而且我还没有找到调整它的方法。

    2012 年 8 月 28 日 09:23

    1. Tim McLean

      我最近一直在思考这个问题(我使用 Dvorak 布局)。是否可以考虑使用更低级的 JavaScript API 来根据位置而不是字母/字符来监听击键?我不确定这对更不寻常的键盘如何运作良好。

      2012 年 8 月 28 日 11:07

    2. Alon Zakai

      您可以在游戏中更改按键绑定,请参阅

      https://github.com/kripken/BananaBread/wiki/FAQ

      2012 年 8 月 28 日 20:50

  2. richtaur

    看起来很棒,运行也很流畅!水下效果尤其棒。

    2012 年 8 月 28 日 09:47

  3. Andrew Wooldridge

    太棒了!我迫不及待地想看到有人为 Web 创建等同于“塞尔达传说:时之笛”的游戏。

    2012 年 8 月 28 日 10:09

  4. Quarterly

    如果不需要禁用“在开始输入时搜索文本”就好了。

    2012 年 8 月 28 日 14:48

  5. Stephen F. Heffner

    Martin - 我们的计算机语言专家系统 XTRAN 可以帮助您将代码从其他语言(包括 C、C++、C# 和 Java)迁移到 JavaScript。自 1984 年以来,XTRAN 一直在自动化许多计算机语言的分析、重构和翻译。相关信息可在 http://WWW.Pennington.com 找到。如果您有兴趣,请通过 Heffner@Pennington.com 联系我。

    此致,Steve Heffner

    2012 年 8 月 28 日 15:41

  6. Pepe

    令人印象深刻。未来版本是否有可能支持在线多人游戏?

    2012 年 8 月 29 日 07:22

    1. Martin Best

      我们正在考虑 WebRTC(Web 实时通信)上线后是否支持多人游戏,它将允许点对点通信通道。它包含 UDP 和 TCP 协议,因此可以很好地工作。目前还没有承诺,但我们非常希望了解我们能用这项技术做什么。

      2012 年 8 月 29 日 11:06

  7. Brad Candullo

    非常棒,一个伟大开端。

    2012 年 8 月 29 日 07:29

    1. Martin Best

      我们当然希望如此!仍有工作要做,但肯定是在朝着正确的方向前进。

      2012 年 8 月 29 日 11:08

  8. gre

    您好,
    这是一个非常令人印象深刻的演示,

    我想知道为什么它是从 C++ 编译而来,而不是直接用纯 HTML5/Javascript 制作的。
    这是可重用性、性能、生产力还是单纯的偏好原因?

    就像据我所知,愤怒的小鸟桌面版是从 Java 库编译而来。
    将来我们是否有可能直接在游戏中使用 Three.js?我认为 Web 是一种标准且独特的的高级语言,为什么要使用另一种高级语言来实现我们的游戏,是不是还为时过早?

    您怎么看?

    谢谢,
    gre

    2012 年 8 月 29 日 08:58

    1. Martin Best

      有几个原因

      1. 编译后的 C++ 到 JS 通常比手写的 JS 更快,因为它避免了垃圾回收、属性访问等操作,并将重点放在 JS 引擎可以很好地优化的方面。但是,您可以将这些相同的技术应用到应用程序的性能密集型部分。
      2. 其他人在发布使用手写代码的产品,而我们正在使用他们现有的测试用例来针对该用例进行优化。
      3. 移植此类技术面临许多挑战,因此我们认为这是一个服务不足的领域,我们可以在其中增加显著价值。这是一段非常难以理解的代码,因此我们希望在内部承担这项挑战。
      4. 我们不是游戏开发公司,而且预算有限,移植的成本要低得多。

      2012 年 8 月 29 日 11:17

  9. Julien

    使用法语键盘无法玩此游戏,WASD 键不在相同的位置,并且没有 ` 键可以进入菜单并更改按键绑定。

    2012 年 8 月 29 日 09:50

    1. An

      常见问题解答中说,按 0 也可以。

      “按 0 或 ` 进入菜单,然后转到选项 -> 键。或者,您可以使用游戏控制台,例如 /bind G left 将 G 绑定到向左移动(请注意,由于搜索栏,您需要在 Firefox 中按 Esc 后再按 /)。其他方向是右、前和后(有关详细信息,请参阅 data/defaults.cfg)。“

      2012 年 8 月 29 日 11:19

    2. Martin Best

      这是一个涵盖如何解决此问题的常见问题解答链接,尽管下一篇文章也回答了您的问题。

      https://github.com/kripken/BananaBread/wiki/FAQ

      2012 年 8 月 29 日 14:12

      1. Julien

        我试过了,但法语键盘上的 0 似乎无法进入菜单(我的笔记本电脑上没有单独的数字键盘,并且主键盘上的数字无法直接访问,您必须按 Shift+0)。

        2012 年 8 月 30 日 11:22

  10. Jean Bonbeur

    为将 HTML5 游戏引入浏览器做出了如此巨大的努力,但 Firefox 的稳定版本中仍然没有找到游戏手柄 API……

    2012 年 8 月 31 日 07:20

    1. Martin Best

      游戏手柄在我们列表中,确定指针锁定和全屏优先级更高,因为更多用户拥有必要的配件来利用它们。与拥有鼠标、触控板或触摸屏界面的用户相比,将游戏手柄连接到 PC 或智能手机的用户数量相对较少。

      2012 年 9 月 4 日 13:50

  11. roliveira

    哇!

    我对这个演示印象深刻,我必须说我喜欢使用 Cube 2 的想法,我是这款游戏的粉丝。但是关卡数量非常有限,也没有多人游戏。

    我知道这只是一个演示,但是否有计划将其扩展到完整的 Cube 2 移植?

    此致。

    2012 年 9 月 2 日 12:12

    1. Martin Best

      我们确实计划了另外两个里程碑,一个是多人游戏支持,另一个是添加编辑支持。但是,这两者都取决于社区是否参与或持续的内部资金来推动开发。由于我们有一个非常好的 Firefox 平台原因来尝试多人游戏作为 WebRTC 的实际用例,我希望能有机会解决这个问题,但目前还没有确定的计划。

      2012 年 9 月 4 日 13:58

  12. John

    呃,子弹开始飞的时候就崩溃了。

    2012 年 10 月 15 日 17:35

本文的评论已关闭。