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.