MultiplayerPeer¶
继承: PacketPeer < RefCounted < Object
派生: ENetMultiplayerPeer, MultiplayerPeerExtension, OfflineMultiplayerPeer, WebRTCMultiplayerPeer, WebSocketMultiplayerPeer
MultiplayerAPI使用的专用PacketPeer的抽象类。
描述¶
管理与充当服务器或客户端的一个或多个远程对等点的连接,并为每个对等点分配唯一ID。另请参阅MultiplayerAPI。
注意:MultiplayerAPI协议是一个实现细节,不适用于非i3D服务器。它可能会更改,恕不另行通知。
注意:导出到Android时,在导出项目或使用一键部署之前,请确保启用Android导出预设中的INTERNET权限。否则,任何形式的网络通信都将被Android阻止。
属性¶
方法¶
void |
close() |
void |
disconnect_peer(peer: int, force: bool = false) |
generate_unique_id() const |
|
get_connection_status() const |
|
get_packet_channel() const |
|
get_packet_mode() const |
|
get_packet_peer() const |
|
get_unique_id() const |
|
is_server_relay_supported() const |
|
void |
poll() |
void |
set_target_peer(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 🔗
如果true,则此MultiplayerPeer拒绝新连接。
用于发送数据包的通道。许多网络API(如ENet和WebRTC)允许创建多个独立的通道,这些通道在某种程度上表现得像单独的连接。这意味着可靠的数据只会阻止该通道上其他数据包的传递,并且排序只会针对数据包发送的通道。使用不同的通道发送不同且独立的**状态更新是优化网络使用和减少快节奏应用延迟的常用方法。
注意:默认通道(0)实际上作为3个独立的通道(每个TransferMode一个)工作,因此TRANSFER_MODE_RELIABLE和TRANSFER_MODE_UNRELIABLE_ORDERED默认情况下不会相互交互。请参阅特定的网络API文档(例如ENet或WebRTC),了解如何正确设置通道。
TransferMode transfer_mode = 2 🔗
void set_transfer_mode(value: TransferMode)
TransferMode get_transfer_mode()
向目标对等方发送数据包的方式。请参见TransferMode和set_target_peer()方法。
方法说明¶
void close() 🔗
立即关闭返回状态【恒定CONNECTION_DISCONNECTED】的多人对点,连接的对点将被丢弃而不会发出【信号peer_disconnected】。
void disconnect_peer(peer: int, force: bool = false) 🔗
断开给定peer与此主机的连接。如果force为true,则不会为该对等点发出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()。
返回发送下一个可用数据包的MultiplayerPeer的ID。请参阅PacketPeer.get_available_packet_count()。
返回此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。