Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
WebRTCMultiplayerPeer
Наследует: MultiplayerPeer < PacketPeer < RefCounted < Object
Простой интерфейс для создания одноранговой ячеистой сети, состоящей из WebRTCPeerConnection, совместимой с MultiplayerAPI.
Описание
Этот класс создает полную сетку WebRTCPeerConnection (одно соединение для каждого пира), которую можно использовать как MultiplayerAPI.multiplayer_peer.
Вы можете добавить каждый WebRTCPeerConnection с помощью add_peer() или удалить их с помощью remove_peer(). Пиры должны быть добавлены в WebRTCPeerConnection.STATE_NEW состоянии, чтобы позволить ему создавать соответствующие каналы. Этот класс не будет создавать предложения или задавать описания, он будет только опрашивать их и уведомлять о подключениях и отключениях.
При создании пира с помощью create_client() или create_server() метод MultiplayerPeer.is_server_relay_supported() вернет true, что позволит обмениваться пирами и ретранслировать пакеты, если поддерживается реализацией MultiplayerAPI.
Примечание: При экспорте в Android убедитесь, что в настройках экспорта Android включено разрешение INTERNET перед экспортом проекта или использованием развертывания в один клик. В противном случае сетевое взаимодействие любого рода будет заблокировано Android.
Методы
add_peer(peer: WebRTCPeerConnection, peer_id: int, unreliable_lifetime: int = 1) |
|
create_client(peer_id: int, channels_config: Array = []) |
|
create_mesh(peer_id: int, channels_config: Array = []) |
|
create_server(channels_config: Array = []) |
|
void |
remove_peer(peer_id: int) |
Описания метода
Error add_peer(peer: WebRTCPeerConnection, peer_id: int, unreliable_lifetime: int = 1) 🔗
Добавьте нового пира в сетку с заданным peer_id. WebRTCPeerConnection должен находиться в состоянии WebRTCPeerConnection.STATE_NEW.
Будут созданы три канала для надежного, ненадежного и упорядоченного транспорта. Значение unreliable_lifetime будет передано в параметр "maxPacketLifetime" при создании ненадежных и упорядоченных каналов (см. WebRTCPeerConnection.create_data_channel()).
Error create_client(peer_id: int, channels_config: Array = []) 🔗
Инициализируйте многопользовательский одноранговый узел как клиент с заданным peer_id (должен быть между 2 и 2147483647). В этом режиме вам следует вызывать add_peer() только один раз и с peer_id из 1. Этот режим включает MultiplayerPeer.is_server_relay_supported(), позволяя верхнему слою MultiplayerAPI выполнять обмен одноранговыми узлами и ретрансляцию пакетов.
Вы можете дополнительно указать массив channels_config TransferMode, который будет использоваться для создания дополнительных каналов (WebRTC поддерживает только один режим передачи на канал).
Error create_mesh(peer_id: int, channels_config: Array = []) 🔗
Инициализируйте многопользовательский узел как сетку (т. е. все узлы подключаются друг к другу) с заданным peer_id (должен быть в диапазоне от 1 до 2147483647).
Error create_server(channels_config: Array = []) 🔗
Инициализируйте многопользовательский одноранговый узел как сервер (с уникальным идентификатором 1). Этот режим включает MultiplayerPeer.is_server_relay_supported(), позволяя верхнему слою MultiplayerAPI выполнять обмен одноранговыми узлами и ретрансляцию пакетов.
Вы можете дополнительно указать массив channels_config TransferMode, который будет использоваться для создания дополнительных каналов (WebRTC поддерживает только один режим передачи на канал).
Dictionary get_peer(peer_id: int) 🔗
Возвращает словарное представление однорангового узла с заданным peer_id с тремя ключами. "connection" содержит WebRTCPeerConnection к этому одноранговому узлу, "channels" — массив из трех WebRTCDataChannel и "connected" — логическое значение, указывающее, подключено ли в данный момент одноранговое соединение (все три канала открыты).
Dictionary get_peers() 🔗
Возвращает словарь, ключами которого являются идентификаторы одноранговых узлов, а значениями — представление одноранговых узлов, как в get_peer().
Возвращает true, если указанный peer_id находится в карте пиров (хотя он может быть не подключен).
void remove_peer(peer_id: int) 🔗
Удалить пир с заданным peer_id из сетки. Если пир был подключен и для него был отправлен MultiplayerPeer.peer_connected, то будет отправлен MultiplayerPeer.peer_disconnected.