把NFT导入高素质的场景,即能获得100个MANA - 只限于500个最佳的场景
X
你好,请选择
语言:
关闭

多人场景

默认情况下,当前版本的 Decentraland 在用户的计算机本地运行场景。这是开发场景的最简单方法,但有其局限性。用户可以相互看到彼此并直接进行交互,但是每个用户与环境的交互都是独立的。如果某个玩家打开门并走进房屋里,其他的用户看到的却是门仍然关闭,玩家直接穿过了关闭的门。

远程场景使用远程服务器同步场景中的所有用户间数据,这样他们就能看到相同的内容并以更有意义的方式进行交互。

创建远程场景

可以复制一个实现远程服务器的场景示例,请按照复制场景示例中的步骤进行操作。

要将现有的本地场景转换为远程场景,我们建议克隆远程门场景,然后将旧场景的 game.ts 文件复制到新场景文件夹中。

预览远程场景

要预览远程场景,您必须同时运行场景和它所依赖的服务器。服务器也可以在与预览相同的机器中本地运行。

要启动服务器,请在 /server 文件夹下运行 npm start

一旦服务器运行,不管是远程还是本地,您就可以像本地场景一样运行 dcl start

场景预览运行后,您可以打开指向同一本地地址的多个浏览器选项卡。每个选项卡将在同一场景中实例化一个单独的用户,这些用户将共享相同的场景状态。

有关详细信息,请参阅场景预览

多人游戏的持久性

与每次用户走进时重新加载的本地场景不同,远程场景的寿命远远超出用户进入和离开场景时的寿命。

因此,您必须在设计同时,考虑到用户不会总是在相同的初始状态下进入场景。

对场景所做的任何更改都可能会让其他用户发觉,您必须确保这些更改不会以不希望的方式干扰未来用户的体验。

重置状态

加载场景时,请确保基于存储在服务器中的共享信息构建场景,而不是处于默认状态。

在某些情况下,在场景中包含某种重置按钮是有意义的。按下重置按钮可以优雅地重置场景。

有时,这只是意味着将场景状态中的变量设置回默认值。但重置场景可能还涉及取消事件侦听并停止服务器端的循环。如果每次重置场景时仍然保留空循环,那么这些循环就会不断堆积,并对场景的性能产生不良影响。

提示:要停止基于时间的循环,可以使用 clearInterval(),并将 loop id 传递给它。