PlayCanvas 开源

这是 PlayCanvas 引擎的 Will Eastcott 的客座文章。正如 Mozilla Hacks 是什么 中所述,我们不断涵盖有关开源和开放网络的有趣信息,包括来自外部和 Mozilla 作者的信息,所以请随时与我们分享!

2011 年 3 月 22 日,Mozilla 发布了 Firefox 4.0,默认启用 WebGL。一个月后,我们成立了 PlayCanvas,并开始构建一款与以前任何引擎都不一样的游戏引擎。快进三年,WebGL 无处不在。就在本周,苹果宣布在 OS X 和 iOS 8 中都支持 WebGL。那么,还有什么比现在更好的时机来传递一些更激动人心的新闻呢?

PlayCanvas 引擎已开源!

MozBlog500

PlayCanvas 引擎介绍

PlayCanvas 引擎是一个专门为构建视频游戏而设计的 JavaScript 库。它实现了编写高质量游戏所需的所有主要组件。

  • 图形:模型加载、逐像素照明、阴影映射、后期效果
  • 物理:刚体模拟、射线投射、关节、触发体积、车辆
  • 动画:关键帧、骨骼混合、蒙皮
  • 音频引擎:2D 和 3D 音频源
  • 输入设备:鼠标、键盘、触摸和游戏手柄支持
  • 实体组件系统:高级游戏对象管理

我们在最初设计引擎时,心中有一些目标。

  1. 它必须易于使用。
  2. 它必须快如闪电。

简单而强大

作为一名开发者,您希望拥有文档齐全且架构良好的 API。但您也希望能够了解底层发生了什么,以及在出现错误时进行调试。为此,没有比精心制作的、未压缩的开源代码库更好的替代方案了。

此外,您还需要出色的图形、物理和音频引擎。但 PlayCanvas 引擎更进一步。它公开了一个游戏框架,该框架实现了一个实体组件系统,允许您像使用乐高积木一样构建游戏的对象,这些积木具有功能块。那么这看起来像什么呢?让我们在 CodePen 上查看一个简单的示例:炮弹击中墙壁

playcanvas_codepen

从 Pen 的 JS 面板中可以看出,只需 100 行代码,您就可以创建、照明、模拟和查看有趣的 3D 场景。尝试派生 CodePen 并更改一些值以供自己使用。

速度需求

为了确保获得出色的性能,我们构建了 PlayCanvas,它结合了手工编写的 JavaScript 和机器生成的 asm.js。代码库中性能最关键的部分是物理引擎。它是作为一层薄薄的手工编写的代码实现的,它包装了 Ammo.js,这是开源物理引擎 Bullet 的 Emscripten 生成的 JavaScript 移植版本。如果您以前没有听说过 Bullet,那么它为《荒野大镖客:救赎》和《侠盗猎车手 5》等令人惊叹的 AAA 游戏提供支持。因此,感谢 Mozilla 在 Emscripten 和 asm.js 上开创性的工作,所有这些功能也通过 PlayCanvas 引擎公开。Ammo.js 在 Firefox 的最新版本中以大约 1.5 倍的原生代码 速度执行,所以如果您认为复杂的物理模拟与 JavaScript 不切实际,那么请再考虑一下。

但是,代码库中的非 asm.js 部分呢?性能显然仍然极其重要,尤其是对于图形引擎而言。渲染器经过高度优化,可以按材质对绘制调用进行排序,并消除冗余的 WebGL 调用。它还经过精心编写,避免进行动态分配,以避免因垃圾回收而导致的潜在停顿。因此,代码性能出色,而且轻量级且易于阅读。

为出色的项目提供支持

PlayCanvas 引擎已经为一些出色的项目提供支持。到目前为止,最大的项目是 PlayCanvas 网站:全球首个云托管游戏开发平台。

多年来,我们一直对当前一代游戏引擎的局限性感到沮丧。因此,在开始 PlayCanvas 引擎的工作后不久,我们就开始设计一种新型的游戏开发环境,该环境将是

可访问的
使用任何带有网络浏览器的设备,插入 URL 并立即访问简单、直观但功能强大的工具。
协作的
实时查看团队成员的工作内容,或者只需坐下来观看游戏在您眼前实时构建。
社交的
在其他人的帮助下,制作游戏更容易。加入一个像您一样的开发者在线社区。

PlayCanvas 完美地满足了所有这些要求。但不要相信我们的话,请前往 https://playcanvas.com,探索一种更好的制作游戏的方式。

事实上,我们使用这些工具构建了一款名为 SWOOOP 的游戏。

立即玩!

它是您今天可以使用 HTML5 和 WebGL 实现的目标的绝佳演示。该游戏在移动和桌面浏览器中运行良好,您可以自由地将您的 PlayCanvas 游戏部署到应用商店。对于 Google Play 和 iOS App Store,存在可生成游戏本机应用的包装技术。这些技术的示例包括 Ludei 的 CocoonJS 和开源 Ejecta 项目。对于 Firefox OS,此过程非常简单,因为该操作系统将 HTML5 应用视为一等公民。PlayCanvas 游戏将开箱即用。

想要!

因此,如果您认为这听起来很不错,那么您应该从哪里开始呢?整个引擎源代码库现在已在 GitHub 上发布

https://github.com/playcanvas/engine

趁热开始克隆、加星标和派生!

保持联系

最后,我想向您提供一些有用的链接,这些链接可以帮助您随时了解最新信息并在需要时找到帮助。

我们非常激动地看到开源社区将使用 PlayCanvas 引擎做些什么。所以,请发挥您的创意,并确保告诉我们您的项目。

再见!

关于 Will Eastcott

Will 是 PlayCanvas 的联合创始人,PlayCanvas 是一款开源游戏引擎,由一组功能强大的协作式云开发工具支持。他曾在视频游戏行业工作了 17 年,并在《使命召唤》、《马克思·佩恩》、《DJ Hero》等众多 AAA 游戏中获得好评。他热衷于让网络更加充满活力和美丽。

更多 Will Eastcott 的文章...

关于 Robert Nyman [荣誉编辑]

Mozilla Hacks 的技术布道者和编辑。发表有关 HTML5、JavaScript 和开放网络的演讲和博客文章。Robert 是 HTML5 和开放网络的坚定支持者,自 1999 年以来一直从事网络前端开发工作 - 在瑞典和纽约市。他还定期在 http://robertnyman.com 上发表博客文章,喜欢旅行和结识新朋友。

更多 Robert Nyman [荣誉编辑] 的文章...


6 条评论

  1. Andrei

    非常令人印象深刻,祝贺您构建了它!

    我认为我在 Firefox 中发现了一个错误/泄漏,当您关闭引擎仍在加载的标签页时会发生。

    http://imgur.com/lPR8dPs

    2014 年 6 月 4 日 下午 10:36

  2. Renkai

    太棒了,感谢开源发布!

    2014年6月4日 下午3:08

  3. renderhjs

    虽然本文没有提到,但在playcanvas.com上托管内容,如果超过1个开发者,则需要付费。这如何与Mozilla作为非营利组织的声明相符?即使有服务器费用需要考虑,为什么还要这样设计实现呢?

    2014年6月4日 下午6:02

    1. Robert Nyman [编辑]

      PlayCanvas不是Mozilla项目,但这里有它,因为我们相信有趣开源项目将使很多开发人员受益。

      2014年6月5日 上午8:48

  4. paul

    playcanvas.com依赖谷歌服务器,是否有原因?Mozilla是否没有足够的存储空间自行托管jquery?

    2014年6月5日 上午6:43

    1. Robert Nyman [编辑]

      PlayCanvas是一个独立的项目,不是Mozilla的一部分。

      2014年6月5日 上午8:46

本文评论已关闭。