我可以使用Lance制作一个多人Phaser游戏吗?

4

我如何将现有的Phaser游戏变成多人游戏?

我能否使用Lance库来实现这一目的? 由于两个库都控制自己的游戏对象,因此我不知道如何在同一个游戏中同时使用这两个框架。

1个回答

11

免责声明:我是Lance的共同创始人之一

不幸的是,Phaser 2.*架构使得将其与Lance配对以制作实时JavaScript多人游戏变得困难。

问题在于,Phaser做出了很多假设,在多人游戏设置下这些假设是不成立的。例如,渲染和游戏循环是绑定在一起的。而服务器显然不需要渲染任何东西。

Phaser还假设DOM和window对象的存在,但这些在服务器上不存在。此外,所有保存世界游戏状态对象、精灵等数据结构的PIXI对象都是扩展实例,在服务器上没有意义。这些限制和紧密耦合与Lance的模块化方法不兼容。

使用像JSDOMNode Canvas这样的库可以在服务器上运行Phaser,模拟DOM和Canvas。但是,这意味着在服务器上运行PIXI会出现显著的性能降级,并且您仍需处理同步PIXI数据结构的问题。

好消息是,Phaser 3.0正在进行中,完全重写了Phaser 2.0,采用了更加模块化的方法,这将有望使其更容易与Lance集成。我们计划在不久的将来使这种集成变得更加容易。


嘿,你对Phaser 3有什么看法?我之前一直在使用Pomelo,但想尝试一下Lance。虽然我不需要延迟补偿和一些其他重要的Lance功能,但它看起来比Pomelo更友好。我将使用它来处理后端循环(计算和其他事情),前端游戏循环将独立运行,并通过套接字只收发数据。我是不是想太多了,或者说它应该可以与Phaser很好地配合?所谓“好”,是指不需要花费数月的时间解决Lance<->Phaser集成可能存在的问题。 - Kamil Weber
你确定不需要延迟补偿吗?你的游戏是回合制的吗?否则,你总是需要某种形式的延迟处理。我还没有机会看Phaser 3,所以我不能告诉你集成有多容易,但我计划很快去看看。 - OpherV
是的,我确定。后端将处理像市场或随机事件这样的事情,这些事件将被推送给玩家,并且10秒甚至1分钟的延迟都没有问题,因为玩家之间不会有实时交互。所以目前不是这种情况,也许将来会有。我主要是在寻找取代Pomelo的方案,因为由于缺乏良好的文档和社区支持,它需要很长时间才能使用。它很强大,但很难使用。这就是为什么我现在考虑纯后端使用Lance。无论如何,感谢您的回答,请让我知道当您更仔细地查看Phaser 3时。 - Kamil Weber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接