跳转至

Phaser新闻联播

播报Phaser共和国的街谈巷议,飞短流长。随时更新。

Phaser3.50发布#

Phaser3.50于2020年12月16日发布,不过直到最近才比较多地宣传。这个版本号称是Phaser史上最重要的版本之一,直接从3.24.1直接跳号到3.50.0(2021-03-02已经更新到v3.52.0),寓意是通往用TS重构的Phaser4的桥梁、跳板。

2019-08-24,Phaser World Issue 148摘要#

Phaser 3.19.0发布#

包括完整的Spine插件,全新的Tween动画系统,Shader Buffers(着色器的缓冲器)。

Shader.setRenderToTexture,可以把着色器重定向到自己的帧缓冲器(framebuffer)或者WebGL Texture,而不是显示列表。这样,你就可以把这个着色器当做另一个着色器的输入;还可以把着色器保存到Texture Manager(纹理管理器),这样就可以用作纹理,生成基于纹理的游戏对象比如Sprite。与新方法setSampler2DBuffer联合使用,就可以方便地把多个着色器链接起来,用作其他着色器的缓冲。

还有渲染器文理快照功能,用于把渲染器纹理保存为图像。RenderTexture.snapshotsnapshotArea两个新方法,可以抓取渲染器纹理(Render Texture)上的任何东西,并转换成图像;然后可以保存图像到纹理管理器,或者保存到文件系统,或者转换为网络服务。

Phaser 4公告#

因为得到Facebook的持续支持,以及与Facebook的Gaming和Instant Games团队合作,Phaser将开始新的迭代。

首先是作者长期以来要实现的:用TypeScript重写Phaser。几个要点:

  1. 不是API重写,尽管可能会有变动。
  2. 仍将发布ES5绑定,所以游戏开发者不一定要使用TypeScript。
  3. 版本号将从Phaser 4.0开始。
  4. 尽管有Facebook的持续支持,作者仍将众筹。

Phaser 4的开发将从2019年8月底开始,暂时没有预定发布日期。 同时,Phaser 3还会开发,并发布新版,直到4版发布后停止。

2019-06-15,Phaser World Issue 147摘要#

Phaser 3.18即将发布。最重要的更改是改写了Input API。将带来的变化有:

支持鼠标滚轮#

包括三个事件:

  • 全局的POINTER_WHEEL,可以用来滚动背景、镜头等。
  • 滚轮事件如果发生在交互游戏对象上,再发出GAMEOBJECT_WHEEL,但并不会指出是哪个对象。
  • 游戏对象自身发出的GAMEOBJECT_POINTER_WHEEL,也就是说,你可以用滚轮控制这个游戏对象。

同时监听画布和窗口的输入事件#

也就是说,可以连续处理画布与窗口之间的动作。

完全支持多点触控事件#

也就是说,你可以做一个弹钢琴的游戏。

2019-04-27,Phaser World Issue 145摘要#

Phaser教程多语言版本(包括中文)上线#

Making your First Phaser 3 Game/Phaser 3 入门实例教程的8种语言译本已经上线。(黄复雄注:中文本为鄙人翻译,敬请指教。)

DOM元素脱离实验阶段#

DOM元素是2018年7月加入,但未充分测试,所以放在EXPERIMENTAL(实验)标签下,也就是说官方构建Phaser时不会加入,除非你自行加入然后构建。 DOM元素通常可用于生成登录表单、排行榜之类的。 Phaser.Loader可以加载CSS文件到浏览器中,并且可以直接设置DOM元素的类名。 3.17版中可用。

遮罩改进#

此前,遮罩(Mask)不能作用域Container(容器)的子项。3.17版中,几何(Geometry)遮罩可以用于容器子项了。

还增加了镜头(Camera)遮罩功能。

2019-2-22#

我给Phaser官方翻译的[Phaser 3 入门实例教程/making-your-first-phaser-3-game]翻译完成。

2019-2-20,Phaser World Issue 141摘要#

Richard Davey已经做了一个工作流,可以在几秒钟内把整个Phaser API文档导出为JSON,再转为SQLite;可以每个版本做一份。这样一来,Phaser Editor、VSCode、Sublime等编辑器就可以利用这些SQLite数据,做出方便的插件;Phaser文档也可以方便地集成到官网中(目前是在GitHub上),使用方式也很更灵活,还能增加官网广告的收入。

作者计划翻译Getting StartedMaking your First Game为多国语言,尤其需要翻译为中文和日语的人。有意者可发邮件到rdavey@gmail.com。

2019-2-10,Phaser World Issue 139摘要#

Phaser 3.16于2月5日发布(实际版本号是3.16.1,而不是3.16.0)。新版及发布日志在此。该版开发历时4个月。

Most importantly of all, though, it finishes the Phaser 3 core feature set. /最关键的是,它完成了Phaser3的核心特性。

文档有大幅度改善,目前仅差748条(总条目超过16000余条)。

TypeScript定义文件亦有大改善,但新的事件未处理。

输入系统有重要更改#

此前,输入系统通过一个事件队列(event queue)来工作。所有原生DOM事件,如键盘、触摸、鼠标,存储于输入管理器(Input Manager)的一个队列中,将在游戏的下一步进行处理;处理后清除。在处理的同时,内部事件,比如pointerdownkeyup被发送到你的游戏代码。 这样能保证同时性,副作用是,在事件处理中,你不能做诸如打开外部浏览器窗口、进入全屏模式之类的事——因为他们不是“真的”事件,所以不能通过浏览器的安全检查。为此添加了诸如addUpCallback之类的方法,用于尝试、提供这类支持(不过键盘事件始终不可能)。

3.16版变了。在同一个调用中,DOM事件立即激发对应的内部事件。所以,如果你点击画布,游戏中收到的pointerdown事件仍旧是原生事件处理器的一部分,所以这时你可以随意做诸如进入全屏模式、打开外部窗口之类的事,而不会有任何浏览器的警告或应急操作。不过这就意味着,处理器被调用时的点位(point)不再始终一致,也不再与请求动画帧(Request Animation Frame)的更新速度绑定。经过尽可能的测试,目前看工作表现跟以前一样。响应性能略有提升,因为移除了处理事件的零碎耽搁。

如果出现问题,很容易切换回原来的版本:在游戏配置(Game Config)中,做一个input对象,添加属性queue: true。但这个选项不久将会移除。

输入处理有很多更改,详见日志列表。比如:

3.16可以处理游戏/画布外输入事件。可用三个事件:POINTER_DOWN_OUTSIDE、GAME_OUT和GAME_OVER。比如,热点离开画布时用来暂停游戏。

键盘事件也不再像以前一样,会被浏览器截留。

重要新特性:外部场景文件#

现在可以使用新的Loader文件类型"SceneFile"实时加载外部场景文件。这样就不必预先把所有可能用到场景打包,可以随时在服务器端更新场景,或根据用户端信息选择场景。用法:

1
2
this.load.sceneFile('MiniGame520', 'js/minigames/520.js');
// `MiniGame520`是类名

JS文件下载好后,会通过一个脚本标签添加到DOM,并被场景管理器接收。然后可以用它的key启动:

1
2
this.scene.start('game520');
// 'game520'是key

后续事项#

  • 处理3.16的问题
  • 完成Spine插件
  • 完成更多文档
  • 3.17(会是维护版,很快出来)后大改Containers

评论