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...
MultiplayerPeer
Наследует: PacketPeer < RefCounted < Object
Наследуется от: ENetMultiplayerPeer, MultiplayerPeerExtension, OfflineMultiplayerPeer, WebRTCMultiplayerPeer, WebSocketMultiplayerPeer
Абстрактный класс для специализированных PacketPeer-ов, используемых MultiplayerAPI.
Описание
Управляет соединением с одним или несколькими удаленными узлами, выступающими в качестве сервера или клиента, и назначает каждому из них уникальные идентификаторы. См. также MultiplayerAPI.
Примечание: Протокол MultiplayerAPI является деталью реализации и не предназначен для использования серверами, отличными от Godot. Он может быть изменен без уведомления.
Примечание: При экспорте в Android обязательно включите разрешение INTERNET в предустановке экспорта Android перед экспортом проекта или использованием развертывания в один клик. В противном случае сетевое взаимодействие любого рода будет заблокировано 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()
Способ отправки пакетов целевому пиру. См. метод 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 🔗
Возвращает случайно сгенерированное целое число, которое можно использовать в качестве уникального идентификатора сети.
ConnectionStatus get_connection_status() const 🔗
Возвращает текущее состояние соединения.
int get_packet_channel() const 🔗
Возвращает канал, по которому был получен следующий доступный пакет. См. PacketPeer.get_available_packet_count().
TransferMode get_packet_mode() const 🔗
Возвращает режим передачи, который удаленный узел использовал для отправки следующего доступного пакета. См. PacketPeer.get_available_packet_count().
Возвращает идентификатор MultiplayerPeer, отправившего следующий доступный пакет. См. PacketPeer.get_available_packet_count().
Возвращает идентификатор этого MultiplayerPeer.
bool is_server_relay_supported() const 🔗
Возвращает true, если сервер может действовать как ретранслятор в текущей конфигурации. То есть, если более высокий уровень MultiplayerAPI должен уведомлять подключенных клиентов о других пирах и реализовывать протокол ретрансляции, чтобы разрешить связь между ними.
void poll() 🔗
Ожидает до 1 секунды для получения нового сетевого события.
void set_target_peer(id: int) 🔗
Устанавливает пир, которому будут отправляться пакеты.
id может быть одним из: TARGET_PEER_BROADCAST для отправки всем подключенным пирам, TARGET_PEER_SERVER для отправки пиру, выступающему в качестве сервера, допустимый идентификатор пира для отправки этому конкретному пиру, отрицательный идентификатор пира для отправки всем пирам, кроме этого. По умолчанию целевой пир — TARGET_PEER_BROADCAST.