Phaser - HTML5 游戏框架
Phaser 是一个快速、免费且有趣的开源 HTML5 游戏框架,可在桌面和移动网页浏览器上提供 WebGL 和 Canvas 渲染。游戏可以通过第三方工具编译为 iOS、Android 和原生应用。您可以使用 JavaScript 或 TypeScript 进行开发。
除了出色的开源社区外,Phaser 还由 Phaser Studio Inc 积极开发和维护。由于快速的支持和开发者友好的 API,Phaser 目前是 GitHub 上最受欢迎的游戏框架之一。
从独立开发者到跨国数字机构,以及全球各地的大学都在使用 Phaser。看看我们的展示视频中他们令人难以置信的游戏:
访问 Phaser 网站
玩 一些令人惊叹的游戏
学习 浏览我们的 API 文档、[支持论坛][forum]和 StackOverflow
代码示例? 我们有超过 2000 个示例供您学习
阅读 每周的 Phaser World 通讯
社交: 加入我们的 Discord 和 Reddit 或在 Twitter 上关注我们
获取源代码,加入其中的乐趣!
2024年6月21日
Phaser Studio 团队一直在努力开发 v3.85 版本,该版本今天进入了 beta 阶段。这个版本在 v3.80 的基础上进行了改进,带来了更多的修复和更新。我们感谢 Phaser 社区在报告问题和提交 pull 请求方面的帮助。你们总是让我们保持警惕 🙂
与此同时,我们也一直在忙于开发一个替代物理引擎和一个全新的渲染器,它们是从头开始构建的,目的是为 2D 网页游戏提供尽可能高效和强大的功能。在我们的每周通讯 Phaser World 中跟踪所有进展。
Phaser 在 GitHub 上的星标数量也达到了 36,500,被超过 34,600 名开发者使用。这些数字证明了越来越多的开发者将 Phaser 作为他们首选的网页游戏开发框架。我们感谢收到的支持和反馈,并承诺继续发展 Phaser 以满足您的需求。
没有社区的大力支持,Phaser 是不可能实现的。感谢所有支持我们工作的人,感谢那些和我们一样相信 HTML5 游戏未来的人,以及 Phaser 在其中扮演的角色。
祝大家编码愉快!
问候,
Rich 和 Phaser Studio 团队
@photonstorm
Phaser 可通过 GitHub、npm 和 CDN 获取:
- 通过 [https][clone-http]、[ssh][clone-ssh] 或使用 GitHub 的 [Windows][clone-ghwin] 或 [Mac][clone-ghmac] 客户端克隆 git 仓库。
- 下载 zip 文件
- 下载构建文件:[phaser.js][get-js] 和 [phaser.min.js][get-minjs]
NPM
通过 npm 安装:
npm install phaser
创建 Phaser 游戏应用
快速开始使用 Phaser 的最简单方法之一是使用我们新的 create-phaser-game
应用。这是一个 CLI 工具,提供了官方项目模板和演示游戏的交互式选择。只需发出命令,回答一些问题,应用就会下载并配置适合您需求的正确包。
目前,我们支持以下所有框架和打包工具:
框架 | 打包工具 |
---|---|
Vue.js | Vite |
React | Rollup |
Angular | Parcel |
Next.js | Webpack |
SolidJS | ESBuild |
Svelte | Import Map |
Remix | Bun |
这些大多都有 JavaScript 和 TypeScript 版本。
CDN
Phaser 在 jsDelivr 上,这是一个"面向开发者的超快速 CDN"。在您的 html 中包含以下内容:
<script src="//cdn.jsdelivr.net/npm/phaser@3.80.1/dist/phaser.js"></script>
或压缩版本:
<script src="//cdn.jsdelivr.net/npm/phaser@3.80.1/dist/phaser.min.js"></script>
API 文档
访问 https://newdocs.phaser.io/ 在线阅读文档。使用链接导航命名空间、类和游戏对象列表,也可以使用搜索框。
Phaser 的文档是一个持续进行的项目。请通过贡献改进的文档和示例来帮助我们。
TypeScript 定义
TypeScript 定义可以在 types
文件夹中找到。它们也在 package.json
的 types
条目中被引用。
根据您的项目,您可能需要在 tsconfig.json
文件中添加以下内容:
"lib": ["es6", "dom", "dom.iterable", "scripthost"],
"typeRoots": ["./node_modules/phaser/types"],
"types": ["Phaser"]
TypeScript 定义是从 Phaser 源代码中的 JSDoc 注释自动生成的。如果你想帮助完善它们,你必须直接编辑 Phaser JSDoc 块,而不是 defs 文件。你可以在 scripts/tsgen
文件夹中找到关于我们构建的解析器的更多详细信息。
许可证
Phaser 根据 MIT 许可证 发布。
Phaser 的教程和指南每周都在发布。
- Phaser 3 入门(如果你完全不了解 Phaser,这很有用)
- 制作你的第一个 Phaser 3 游戏
- 完整的 Phaser 3 游戏开发课程 包含超过 15 小时的视频,涵盖了各种重要主题。
- 此外,在官方网站上还列出了 超过 700 个 Phaser 教程。
免费的 Phaser 示例书籍
一本全新的 500 页免费书籍,介绍使用 Phaser 进行游戏开发。通过构建射击游戏、益智游戏、Rogue-like 游戏等来学习。
由长期多产的 Phaser 爱好者 Pello Xabier Altadill 和 Phaser 创始人 Richard Davey 撰写,包含超过 500 页全新、最新的使用 Phaser v3.80 构建游戏的内容。
该书分为 17 章,带你完成创建各种不同游戏的过程。正如书名所暗示的,这允许你通过实际例子来学习。游戏从简单的无尽跑酷游戏开始,然后逐步讲解如何构建射击游戏、平台游戏、益智游戏、Rogue-like 游戏、故事游戏,甚至包括 3D 游戏和多人射击游戏。
除了游戏之外,Richard 还撰写了大量关于 Phaser 核心概念的内容,涵盖了框架使用的术语和约定,以及对游戏对象(任何 Phaser 游戏的生命线)的全面深入探讨。你将了解包括游戏对象工厂、遮罩、自定义混合模式等主题。
该书最后还包括了有关处理资产、流行构建工具、4:44 规则以及参与游戏 jam 的好处等章节,以及一个方便的 Phaser 食谱。
下载这本书,只需注册一个免费的 Phaser 账户。
源代码示例
在 Phaser 的开发过程中,我们创建了数百个示例,提供完整的源代码和资源。这些示例可以在 Phaser 3 实验室 上浏览,或者克隆 [示例仓库][examples]。我们不断地添加和完善这些示例。
Hathora
Hathora Cloud 是一个可扩展的在线多人游戏托管平台。你可以使用 Hathora 控制台或 CLI 上传你的服务器项目,然后在全球 10 多个地区动态创建服务器实例。你只需为活跃的比赛/会话持续时间付费。它非常适合处理 WebSocket 连接的 nodejs 服务器,并负责 SSL 终止(用于 wss)和 DDoS 保护。
他们还发布了一个全新教程,介绍如何创建一个可扩展的多人 Phaser 游戏。如果你认为这对你的托管需求有用,可以加入他们的 Discord 服务器 联系他们。
Phaser 3 插件大列表
超级社区成员 RexRainbow 多年来一直在发布 Phaser 3 内容,积累了令人印象深刻的目录。你会发现大量插件,从文本输入框等 UI 控件,到 Firebase 支持、有限状态机等等。除了插件之外,还有一套关于 Phaser 3 的综合"笔记",详细介绍了各种系统的工作原理。这是一个宝贵的资源,值得在 https://rexrainbow.github.io 查看。
创建你的第一个 Phaser 3 示例
Phaser 沙盒:如果你不想在本地测试 Phaser,那么你可以在我们的网站上注册一个免费账户,并使用 Phaser 沙盒。这里你会找到一个完全配置好的在线编辑器,随时可用。否则,请继续阅读...
在本地创建一个 index.html
页面,并将以下代码粘贴到其中:
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/phaser@3.80.1/dist/phaser-arcade-physics.min.js"></script>
</head>
<body>
<script></script>
</body>
</html>
这是一个标准的空白网页。你会注意到有一个 script 标签引入了 Phaser 3 的构建版本,但除此之外,这个网页还没有任何功能。现在让我们设置游戏配置。将以下内容粘贴在 <script></script>
标签之间:
const config = {
type: Phaser.AUTO,
width: 800,
height: 600,
physics: {
default: 'arcade',
arcade: {
gravity: { y: 200 }
}
},
scene: Example
};
const game = new Phaser.Game(config);
config
是一个相当标准的 Phaser 3 游戏配置对象。我们告诉 config
尽可能使用 WebGL 渲染器,将画布大小设置为 800 x 600 像素,启用 Arcade 物理引擎,最后我们告诉它使用 Example 场景。这还没有实现,所以如果你现在运行这段 JavaScript 代码,会出现错误。在 config
上方添加以下内容:
class Example extends Phaser.Scene
{
constructor ()
{
super();
}
preload ()
{
this.load.setBaseURL('https://labs.phaser.io');
这里我们创建了一个名为`Example`的场景。我们给它定义了两个函数。`preload`函数是用来加载游戏资源的地方。在`preload`中,我们设置了基础URL为Phaser服务器,并加载了3个PNG文件。
`create`函数目前是空的,现在是时候来填充它了:
```javascript
create ()
{
this.add.image(400, 300, 'sky');
const particles = this.add.particles(0, 0, 'red', {
speed: 100,
scale: { start: 1, end: 0 },
blendMode: 'ADD'
});
const logo = this.physics.add.image(400, 100, 'logo');
logo.setVelocity(100, 200);
logo.setBounce(1, 1);
logo.setCollideWorldBounds(true);
particles.startFollow(logo);
}
这里我们向游戏中添加了一个天空图像,并创建了一个粒子发射器。scale
值表示粒子最初会很大,随着生命周期的推进会逐渐缩小至消失。
创建emitter
后,我们添加了一个名为logo
的logo图像。由于logo
是一个物理图像,默认情况下它会被赋予一个物理体。我们为logo
设置了一些属性:速度、反弹(或恢复)以及与世界边界的碰撞。这些属性会使我们的logo在屏幕上弹来弹去。最后,我们让粒子发射器跟随logo - 所以当logo移动时,粒子会从它那里流出。
在浏览器中运行它,你会看到以下效果:
如果你无法运行它,可以在Phaser沙盒中查看这个示例。
这只是一个小例子,还有数百个示例供你探索,但希望它能展示Phaser的表现力和使用的便捷性。只需几行易读的代码,我们就在屏幕上呈现了相当令人印象深刻的效果!
在仓库的dist
文件夹中有Phaser的普通版和压缩版编译文件。普通版用于开发过程中,压缩版用于生产环境。你也可以并且应该创建自己的构建版本。
Phaser压缩器
使用我们强大的新型网页工具来压缩你的Phaser包,最多可减少60%的体积,只启用你的游戏所需的功能。
阅读更多关于Phaser压缩器的信息
从源代码构建
如果你希望从源代码构建Phaser,请确保你已经克隆了仓库,然后在你的源目录运行npm install
来安装所需的包。
然后你可以运行webpack
在build
文件夹中创建一个包含源映射的开发版本,用于本地测试。你也可以运行npm run dist
在dist
文件夹中创建一个压缩打包的构建版本。要查看所有可用命令的列表,请使用npm run help
。
由于我们的更新日志越来越大,我们现在将它们分割开来,每个版本一个文件夹。
我们已经将更新日志组织成常见的主题部分,以使其更易于理解,但我们理解其中内容仍然很多。请不要感到不知所措!如果你需要澄清什么,请加入Phaser Discord并询问。
[贡献指南][contribute]包含了如何帮助Phaser开发的全部细节。主要要点是:
-
发现bug?在[GitHub Issues][issues]上报告并包含代码示例。请说明你使用的Phaser版本!这一点至关重要。
-
在提交Pull Request之前,使用我们的配置通过ES Lint运行你的代码,并遵守我们的Editor Config。
-
在贡献之前请阅读行为准则。
用Phaser写了些很酷的东西?请在Discord、[论坛][forum]上告诉我们,或者简单地发邮件到games@phaser.io
Phaser是Photon Storm和Phaser Studio Inc的作品。
由Richard Davey和Phaser Studio Inc团队创建。由咖啡、动漫、像素和爱驱动。
Phaser标志和角色版权所有 © 2011 - 2024 Phaser Studio Inc。
保留所有权利。
"最重要的是,视频游戏的目的只有一个:娱乐。为所有人带来乐趣。" - 岩田聪