MultiplayerPeer

继承: PacketPeer < RefCounted < Object

派生: ENetMultiplayerPeer, MultiplayerPeerExtension, OfflineMultiplayerPeer, WebRTCMultiplayerPeer, WebSocketMultiplayerPeer

MultiplayerAPI使用的专用PacketPeer的抽象类。

描述

管理与充当服务器或客户端的一个或多个远程对等点的连接,并为每个对等点分配唯一ID。另请参阅MultiplayerAPI

注意:MultiplayerAPI协议是一个实现细节,不适用于非i3D服务器。它可能会更改,恕不另行通知。

注意:导出到Android时,在导出项目或使用一键部署之前,请确保启用Android导出预设中的INTERNET权限。否则,任何形式的网络通信都将被Android阻止。

属性

方法


信号

peer_connected(id: int) 🔗

当远程对等点连接时发出。


peer_disconnected(id: int) 🔗

当远程对等点断开连接时发出。


枚举

enum ConnectionStatus: 🔗

ConnectionStatus CONNECTION_DISCONNECTED = 0

MultiplayerPeer已断开连接。

ConnectionStatus CONNECTION_CONNECTING = 1

MultiplayerPeer当前正在连接到服务器。

ConnectionStatus CONNECTION_CONNECTED = 2

此MultiplayerPeer已连接。


enum TransferMode: 🔗

TransferMode TRANSFER_MODE_UNRELIABLE = 0

不确认数据包,不尝试重新发送丢失的数据包。数据包可以以任何顺序到达。可能比TRANSFER_MODE_UNRELIABLE_ORDERED快。用于非关键数据,并始终考虑顺序是否重要。

TransferMode TRANSFER_MODE_UNRELIABLE_ORDERED = 1

不确认数据包,不尝试重新发送丢失的数据包。数据包按发送顺序接收。可能比TRANSFER_MODE_RELIABLE快。用于非关键数据或由于重新发送尝试而延迟接收的过时数据,例如移动和位置数据。

TransferMode TRANSFER_MODE_RELIABLE = 2

必须接收数据包,并应尝试重新发送,直到数据包得到确认。必须按照发送数据包的顺序接收数据包。最可靠的传输模式,但由于开销,可能是最慢的。用于必须按顺序传输和到达的关键数据,例如被触发的能力或聊天消息。仔细考虑信息是否真的很重要,并谨慎使用。


常量

TARGET_PEER_BROADCAST = 0 🔗

数据包被发送到所有连接的对等点。

TARGET_PEER_SERVER = 1 🔗

数据包被发送到充当服务器的远程对等点。


属性说明

bool refuse_new_connections = false 🔗

  • void set_refuse_new_connections(value: bool)

  • bool is_refusing_new_connections()

如果true,则此MultiplayerPeer拒绝新连接。


int transfer_channel = 0 🔗

  • void set_transfer_channel(value: int)

  • int get_transfer_channel()

用于发送数据包的通道。许多网络API(如ENet和WebRTC)允许创建多个独立的通道,这些通道在某种程度上表现得像单独的连接。这意味着可靠的数据只会阻止该通道上其他数据包的传递,并且排序只会针对数据包发送的通道。使用不同的通道发送不同且独立的**状态更新是优化网络使用和减少快节奏应用延迟的常用方法。

注意:默认通道(0)实际上作为3个独立的通道(每个TransferMode一个)工作,因此TRANSFER_MODE_RELIABLETRANSFER_MODE_UNRELIABLE_ORDERED默认情况下不会相互交互。请参阅特定的网络API文档(例如ENet或WebRTC),了解如何正确设置通道。


TransferMode transfer_mode = 2 🔗

向目标对等方发送数据包的方式。请参见TransferModeset_target_peer()方法。


方法说明

void close() 🔗

立即关闭返回状态【恒定CONNECTION_DISCONNECTED】的多人对点,连接的对点将被丢弃而不会发出【信号peer_disconnected】。


void disconnect_peer(peer: int, force: bool = false) 🔗

断开给定peer与此主机的连接。如果forcetrue,则不会为该对等点发出peer_disconnected信号。


int generate_unique_id() const 🔗

返回一个随机生成的整数,可用作网络唯一ID。


ConnectionStatus get_connection_status() const 🔗

返回连接的当前状态。请参阅ConnectionStatus


int get_packet_channel() const 🔗

返回接收下一个可用数据包的通道。请参见PacketPeer.get_available_packet_count()


TransferMode get_packet_mode() const 🔗

返回远程对等方用于发送下一个可用数据包的传输模式。请参阅PacketPeer.get_available_packet_count()


int get_packet_peer() const 🔗

返回发送下一个可用数据包的MultiplayerPeer的ID。请参阅PacketPeer.get_available_packet_count()


int get_unique_id() const 🔗

返回此MultiplayerPeer的ID。


bool is_server_relay_supported() const 🔗

如果服务器可以在当前配置中充当中继,则返回true。也就是说,如果更高级别的MultiplayerAPI应该通知其他对等点的连接客户端,并实现中继协议以允许它们之间的通信。


void poll() 🔗

最多等待1秒以接收新的网络事件。


void set_target_peer(id: int) 🔗

设置将向其发送数据包的对等方。

id可以是以下之一:TARGET_PEER_BROADCAST发送到所有连接的对等点,TARGET_PEER_SERVER发送到充当服务器的对等点,发送到特定对等点的有效对等点ID,发送到除该对等点之外的所有对等点的负对等点ID。默认情况下,目标对等点是TARGET_PEER_BROADCAST