Skip to content

点对点

危险

当连接到客户端时,P2P会泄露客户端的IP地址。如果有人知道您的经纪人服务器和P2P ID,他们就知道您的IP地址,并可以将其用于发动分布式拒绝服务攻击(DDoS)或地理定位您。请确保适当告知您的玩家,并且不要与P2P一起使用大厅/匹配系统,因为这些可能会与未知对等方分享玩家的P2P ID。

警告

这是一个实验性功能,可能会发生变化,可能包含错误。欢迎您提供反馈以改进此功能。

GDevelop支持点对点(P2P)连接,以启用基本的多人游戏。这通过“远程事件”的概念实现。在远程触发其他实例的条件之前,使用它们的ID连接游戏的多个实例。

危险

此扩展程序不适用于所有类型的多人游戏,并且可能不安全防范作弊行为。由于每个游戏实例直接连接到彼此,没有一台机器可以被认为比另一台更可信。

因此,很难验证某人是否作弊(不像专用服务器)。P2P支持最多250个同时连接,因此也不适用于像大型多人游戏(如大型多人在线游戏)那样的大型多人游戏。

选择经纪人服务器

需要连接到其他客户端之前,名为客户端的正在运行的游戏必须连接到其他客户端。为此,需要配置一个名为经纪人服务器的方式。这是一个具有固定、众所周知地址的服务器,该服务器存储所有连接客户端的地址,并将它们提供给每个客户端,以便它们可以相互连接。

有两种设置经纪人服务器的选项:

  • 设置自定义服务器(推荐),可以在本地计算机上运行测试。
  • 使用默认的公共服务器。

设置自定义(本地)服务器

可以轻松设置本地服务器。安装Node.js将需要安装。推荐使用LTS版本。

打开命令行。在Windows上执行以下操作:

  • WindowsR键。这将打开运行窗口
  • 在弹出窗口中输入cmd
  • 回车键。

打开命令行后,完成以下操作:

  • 如果这是第一次完成这些步骤,请键入npm install peer -g以安装服务器
  • 安装服务器后,以及每次(启动服务器时)需要输入peerjs -p
    • 可以使用计算机尚未使用的任何端口。有关更多信息,可以通过其网站传递其他选项给PeerJS服务器。完成上述步骤后,使用“使用自定义经纪人服务器”操作连接到该服务器。
  • localhost可以用作指向本地服务器的主机地址。

提示

请注意,这是一个本地服务器,因此它只能在您的计算机上运行。在发布游戏时,您需要将其部署到Node.js兼容的托管服务中,如Heroku。

使用默认服务器

警告

不建议使用该服务器,如果可能的话,请使用您自己的服务器。默认服务器不是由GDevelop运营的,如果使用该服务器出现任何问题,GDevelop团队将不负责。

您也可以使用PeerJS提供的默认服务器。要使用该服务器,请使用操作“使用默认服务器”。

连接

要连接实例,需要在其他实例中输入它们的ID。可以使用表达式P2P::GetID()找到ID。要连接,请使用“连接到其他实例”操作,并将另一个实例的ID作为参数传递。然后,两个实例将自动连接。然后,您可以从一个实例发送事件到另一个实例,以确保连接已建立。

更改ID生成方式

默认的P2P ID生成方式非常长,以避免冲突,但是如果您想要一个易于共享的ID,这并不理想。您可以通过遵循peerjs-server文档上的说明,在自定义P2P经纪人上使用自定义ID生成。

与连接的游戏交互

连接后,您可以远程触发操作。您可以选择另一个特定的游戏实例(使用其ID)或向所有连接的实例发送事件。

选择是否要激活数据丢失模式

您可能会想知道“数据丢失”参数是用于什么。由于GDevelop的工作方式,当执行事件表时每秒大约执行60次,只能处理一个遥控事件的发生。为了帮助优化事件执行,我们提供了使用数据丢失模式的选择。

  • 通过使用_无数据丢失_模式,每个遥控事件都会排队,每帧,如果队列中存在一个,则我们会取出最旧的一个并处理它。这确保了每个数据都被处理/考虑。
  • 启用了数据丢失模式,它不排队数据,而只存储最新发生的遥控事件。这意味着只有最新数据会被处理,过时的数据将被丢弃。

以下是两个示例:

  • 如果您使用同步计分器,您不希望丢失任何数据,因为计分器只缺少一个点就会导致计分器_不同步_,因此应禁用数据丢失模式。
  • 如果要同步位置,只有最后发送的位置是相关的,而不是旧位置。在这种情况下,您将激活数据丢失模式_以防止延迟/卡顿_。

参考

所有操作、条件和表达式都列在点对点参考页面中。