这是 PlayCanvas 引擎的 Will Eastcott 的客座文章。正如 Mozilla Hacks 是什么 中所述,我们不断涵盖有关开源和开放网络的有趣信息,包括来自外部和 Mozilla 作者的信息,所以请随时与我们分享!
2011 年 3 月 22 日,Mozilla 发布了 Firefox 4.0,默认启用 WebGL。一个月后,我们成立了 PlayCanvas,并开始构建一款与以前任何引擎都不一样的游戏引擎。快进三年,WebGL 无处不在。就在本周,苹果宣布在 OS X 和 iOS 8 中都支持 WebGL。那么,还有什么比现在更好的时机来传递一些更激动人心的新闻呢?
PlayCanvas 引擎已开源!
PlayCanvas 引擎介绍
PlayCanvas 引擎是一个专门为构建视频游戏而设计的 JavaScript 库。它实现了编写高质量游戏所需的所有主要组件。
- 图形:模型加载、逐像素照明、阴影映射、后期效果
- 物理:刚体模拟、射线投射、关节、触发体积、车辆
- 动画:关键帧、骨骼混合、蒙皮
- 音频引擎:2D 和 3D 音频源
- 输入设备:鼠标、键盘、触摸和游戏手柄支持
- 实体组件系统:高级游戏对象管理
我们在最初设计引擎时,心中有一些目标。
- 它必须易于使用。
- 它必须快如闪电。
简单而强大
作为一名开发者,您希望拥有文档齐全且架构良好的 API。但您也希望能够了解底层发生了什么,以及在出现错误时进行调试。为此,没有比精心制作的、未压缩的开源代码库更好的替代方案了。
此外,您还需要出色的图形、物理和音频引擎。但 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
趁热开始克隆、加星标和派生!
保持联系
最后,我想向您提供一些有用的链接,这些链接可以帮助您随时了解最新信息并在需要时找到帮助。
- 关注我们在 Twitter 上的账号 @playcanvas,获取有关 PlayCanvas 的大量技术更新。
- 关注 PlayCanvas Facebook 页面,获取我们对游戏开发场景的奇思妙想。
- 加入并开始在 PlayCanvas 论坛 上讨论。
- 在 PlayCanvas 问答 上获得您问题的专业解答。
我们非常激动地看到开源社区将使用 PlayCanvas 引擎做些什么。所以,请发挥您的创意,并确保告诉我们您的项目。
再见!
关于 Will Eastcott
Will 是 PlayCanvas 的联合创始人,PlayCanvas 是一款开源游戏引擎,由一组功能强大的协作式云开发工具支持。他曾在视频游戏行业工作了 17 年,并在《使命召唤》、《马克思·佩恩》、《DJ Hero》等众多 AAA 游戏中获得好评。他热衷于让网络更加充满活力和美丽。
关于 Robert Nyman [荣誉编辑]
Mozilla Hacks 的技术布道者和编辑。发表有关 HTML5、JavaScript 和开放网络的演讲和博客文章。Robert 是 HTML5 和开放网络的坚定支持者,自 1999 年以来一直从事网络前端开发工作 - 在瑞典和纽约市。他还定期在 http://robertnyman.com 上发表博客文章,喜欢旅行和结识新朋友。
6 条评论