Phaser简介

Phaser - A fast, fun and free open source HTML5 game framework

Phaser 是一个功能强大的开源 HTML5 游戏框架,专注于 2D 游戏开发,其生态系统包括核心框架、可视化编辑器(如 Phaser Editor 2D)和物理引擎扩展(如 Box2D 集成)。以下是全系产品的详细说明:

Phaser 框架🎮

Phaser 是核心游戏引擎,提供跨平台游戏开发能力,支持 WebGL 和 Canvas 渲染。

  • 核心特性

    • 渲染引擎:支持 WebGL(高性能)和 Canvas(兼容性),自动切换渲染模式。

    • 物理引擎:内置三种引擎:

      • Arcade Physics:轻量级,适合简单碰撞检测(如平台跳跃游戏)

      • P2 Physics:基于 Box2D,支持复杂物理效果(如关节、旋转、多边形碰撞)

      • Ninja Physics:高性能碰撞检测,适用于特定场景

    • 场景管理:通过 Scene类管理游戏状态(如菜单、关卡、结束界面)

    • 输入系统:统一处理键盘、鼠标、触摸屏及游戏手柄事件

  • 开发优势

    • 跨平台部署:游戏可发布为网页应用(Web)、移动应用(iOS/Android 通过 Cordova/React Native)、桌面应用(Steam)等

    • 多语言支持:原生支持 JavaScript 和 TypeScript,提供完整的类型定义

    • 社区资源:超过 700 个官方教程、2000+ 示例项目,以及活跃的 Discord 社区支持

  • 应用场景

    • 休闲游戏(如《2048》《Flappy Bird》)

    • 动作游戏(平台跳跃、射击游戏)

    • 教育类交互应用(生物模拟、拼图游戏)


Phaser Editor🛠️

Phaser Editor 是为 Phaser 设计的可视化开发工具(收费),显著提升开发效率。

  • Phaser Editor 2D

    • 功能亮点:

      • 拖拽式场景构建:直接拖放精灵、背景等元素到画布,自动生成代码

      • 动画编辑器:可视化创建帧动画(如角色跑跳动作)

      • 粒子系统:实时调整参数生成火焰、爆炸等特效

    • 跨平台支持:支持 Windows、macOS、Linux,无需复杂配置

  • PhaserEditor2D-v3

    • 基于 Web 的 IDE:完全在浏览器中运行,支持云端/本地部署

    • 协作与教育友好:

      • 支持 TypeScript,便于团队协作

      • 提供交互式教程,适合教学场景


Phaser Box2D(P2 Physics)🧪

Box2D 通过 P2 Physics 模块集成到 Phaser(免费),用于复杂物理模拟。

  • 核心功能

    • 刚体动力学:模拟质量、摩擦力、弹力等物理属性

    • 碰撞检测:支持多边形碰撞形状(非仅矩形/圆形)

    • 关节与约束:实现铰链、滑轮、弹簧等机械结构(如可破坏的桥梁)

  • 典型应用:

    • 《沙漠掠夺者》:结合 Box2D 实现真实沙地车辆运动与物体破坏效果

    • 物理解谜游戏:利用关节和重力设计关卡机制


总结:全系产品定位对比💎

​产品​ ​定位​ ​核心功能​ ​适用场景​
​Phaser​ 游戏引擎核心 渲染、基础物理、输入管理 各类 2D 游戏开发
​Phaser Editor 可视化开发工具 拖拽设计、动画编辑、粒子特效 快速原型开发/团队协作/教育
​Phaser Box2D​ 高级物理扩展 刚体模拟、关节约束、复杂碰撞 高拟真物理游戏(赛车、解谜)

价格

Phaser的免费版本可以使用全部的Phaser框架功能,并且无限制的开发、发布游戏。

生态资源⚙️

  • 学习资料:

  • 工具链:

    • create-phaser-gameCLI:一键生成项目模板

    • Phaser Compressor:压缩游戏体积达 60%

Phaser 通过核心引擎、可视化工具链与物理扩展的紧密结合,为开发者提供了从原型设计到复杂模拟的全套解决方案,适合不同经验水平的游戏创作者。

入门案例

安装web服务

Windows系统

在 Windows 平台上,有众多web服务程序可供选择,这些安装程序通过单个可执行文件即可打包安装 Apache、PHP 和 MySQL 等主流网络技术套件。

Phaser官方推荐使用 WAMP.Net(知识库附件链接)。该方案提供简易安装指南,并在系统托盘区生成控制图标,用户可通过该图标启停服务、修改 Apache/Nginx 配置,还能轻松创建包含 SSL 证书的新站点。

Cesanta 公司开发的 Mongoose 网络服务器是极精简方案:无需安装,仅需单可执行文件即可运行。其基础版(不含 SSI/WebDAV 等游戏开发非必要的扩展功能)体积仅 45KB;完整功能版也仅 355KB - 而 HTML5 游戏开发通常无需这些扩展模块。

也可以单独下载网络服务器:微软 IIS Apache 均提供免费版本供用户独立安装。

macOS系统

相较于Windows,macOS因其天然的Unix环境支持,拥有更丰富的Web服务器解决方案。若您偏好类似WAMP的一体化安装方式,且需要简洁易用的操作界面,Phaser官方强烈推荐MAMP。该方案提供免费版与付费版两个版本。

也可手动搭建本地服务器,例如这份专为OS X Mountain Lion(山狮系统)编写的教程。请根据自身技术能力选择最适合的配置方案。

其它方案

  • Simple HTTP Server with Python

  • http-server for node.js

  • php built-in web server

  • grunt connect

编辑器

Visual Studio Code(强烈推荐)

Visual Studio Code 是一款轻量级却功能强大的源代码编辑器,支持在Windows、macOS及Linux桌面端运行。它原生支持JavaScript、TypeScript和Node.js开发环境,并通过丰富的扩展生态系统提供对其他编程语言(包括C++、C#、Java、Python、PHP、Go)及运行时环境(如.NET与Unity)的支持。

Sublime Text

Sublime Text作为Phaser团队开发框架及所有项目的专用编辑器(甚至也是Phaser官方指南的编写工具)。它应被视为功能超强的专业文本编辑器,而非传统IDE。

其特色功能包括:全局跳转(Goto Anything)、分屏编辑、多重光标输入、禅模式(Distraction Free)以及海量增效插件。始终是速度最快、扩展性最强的编辑器。

WebStorm

JetBrains WebStorm 是一款功能全面的高端开发环境,其价值远超基础代码编辑范畴,真正实现了专业IDE应具备的高级特性:包括代码智能分析、内置npm支持、编码风格与语法检查、源码版本控制等丰富功能。尽管许多特性专为Web开发者设计,但对游戏开发同样极具实用价值。

该IDE基于IntelliJ IDEA架构(一款深度集成Java的编辑器),这种设计可谓利弊共存。其代码编辑体验不如Sublime流畅自由,操作系统深度集成也较弱,但强大功能足以弥补不足——例如游戏测试前自动检测代码错误的功能极为实用,智能代码补全系统同样出色(尽管JavaScript的灵活语法会带来一定局限性)。

下载Phaser

Phaser框架以JavaScript库的形式发布,支持多种部署方式:可下载本地文件、通过CDN(内容分发网络)引用链接,或使用npm等标准JavaScript包管理工具安装。需特别说明:Phaser并非桌面应用,不存在所谓"安装"流程,也不提供专用IDE环境。其实质是供开发者集成到网页或打包项目的JavaScript库。

开发时只需将Phaser库嵌入网页,用JavaScript编写游戏逻辑,即可在浏览器中运行完整游戏。

作为开源项目,Phaser永久免费提供下载使用。无论商业项目或免费项目均不收取任何授权费用。

HelloWorld

工程目录

按照工程目录结构创建HelloWorld工程目录:

素材

将云空间中的素材sky.pngred.pnglogo.png放到工程目录的assets/images目录下

index.html

首先修改工程目录下的index.html文件,代码如下:

<!DOCTYPE html>
<html>
<head>
    <script src="phaser-v3.9/phaser.min.js"></script>
</head>
<body>

    <script>
    class Example extends Phaser.Scene
    {
        preload ()
        {
            this.load.image('sky', 'assets/images/sky.png');
            this.load.image('logo', 'assets/images/logo.png');
            this.load.image('red', 'assets/images/red.png');
        }

        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);
        }
    }

    const config = {
        type: Phaser.AUTO,
        width: 800,
        height: 600,
        scene: Example,
        physics: {
            default: 'arcade',
            arcade: {
                gravity: { y: 200 }
            }
        }
    };

    const game = new Phaser.Game(config);
    </script>

</body>
</html>

测试和运行

本样例安装了WAMP.NET用来管理webserver服务,非常的简单。安装完成后,运行WAMP.NET程序,在服务器配置中,我下载并安装了nginx。

然后就是配置站点,选择工程目录的根目录即可。

鼠标单击域名名称,就可以访问站点啦。

AI编程初探

在VSCode中安装CodeBuddy插件(使用deepseek-v3大模型),然后对当前工程提问:

修改源代码,实现logo撞击世界边界后,整个场景产生晃动效果。

此时CodeBuddy迅速完成任务分析,并给出了修改之后的代码。

由于我们对Phaser也是零基础,所以暂时选择信任大模型,我们选择接受代码更改。

但是!此时运行程序发现并没有达到预期效果,我们告诉大模型:

未触发世界边界碰撞事件。

大模型会分析出需要“显示”开启世界边界检测,增加代码即可:

logo.body.onWorldBounds = true

此时我们就拥有了碰撞世界边缘,整个场景产生晃动的效果。

全部源代码为:

<!DOCTYPE html>
<html>
<head>
    <script src="phaser-v3.9/phaser.min.js"></script>
</head>
<body>

    <script>
    class Example extends Phaser.Scene
    {
        preload ()
        {
            this.load.image('sky', 'assets/images/sky.png');
            this.load.image('logo', 'assets/images/logo.png');
            this.load.image('red', 'assets/images/red.png');
        }

        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);
            logo.body.onWorldBounds = true
            // 添加世界边界碰撞事件
            this.physics.world.on('worldbounds', (body) => {
                if (body.gameObject === logo) {
                    console.log('logo hit world bounds');
                    this.cameras.main.shake(300, 0.01);
                }
            });

            particles.startFollow(logo);
        }
    }

    const config = {
        type: Phaser.AUTO,
        width: 800,
        height: 600,
        scene: Example,
        physics: {
            default: 'arcade',
            arcade: {
                gravity: { y: 200 },
            }
        }
    };

    const game = new Phaser.Game(config);
    </script>

</body>
</html>

非常有趣,这样AI编程实现了一个我们需要的小功能。那么后续,我们将用AIGC逐渐创造真正的游戏。

附件

【免费】Phaser游戏开发入门及AI编程初探(源代码)资源-CSDN下载

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐