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.

MultiplayerPeer

Успадковує: PacketPeer < RefCounted < Object

Успадковано від: ENetMultiplayerPeer, MultiplayerPeerExtension, OfflineMultiplayerPeer, WebRTCMultiplayerPeer, WebSocketMultiplayerPeer

Абстрактний клас спеціалізованих PacketPeer, що використовується MultiplayerAPI.

Опис

Керує підключенням до одного або декількох віддалених однолітків, що діють як сервер або клієнт, і призначає унікальні ідентифікатори до кожного з них. Дивись ще МультиплеерAPI.

Примітка: Протокол MultiplayerAPI - це докладна інформація про виконання і не призначене для використання не-Godot серверів. Може змінитися без повідомлення.

Примітка: При експорті до Android, переконайтеся, що ввімкнути INTERNET дозвіл на експорт Android перед експортуванням проекту або за допомогою однієї кнопки розгортання. Інакше, мережевий зв'язок будь-якого роду буде заблокований Android.

Посібники

Властивості

bool

refuse_new_connections

false

int

transfer_channel

0

TransferMode

transfer_mode

2

Методи

void

close()

void

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

int

generate_unique_id() const

ConnectionStatus

get_connection_status() const

int

get_packet_channel() const

TransferMode

get_packet_mode() const

int

get_packet_peer() const

int

get_unique_id() const

bool

is_server_relay_supported() const

void

poll()

void

set_target_peer(id: int)


Сигнали

peer_connected(id: int) 🔗

Видається, коли підключається віддалений вузол.


peer_disconnected(id: int) 🔗

Видається, коли віддалений вузол відключився.


Переліки

enum ConnectionStatus: 🔗

ConnectionStatus CONNECTION_DISCONNECTED = 0

Багатокористувацький одноранговий користувач відключено.

ConnectionStatus CONNECTION_CONNECTING = 1

Багатокористувацький користувач зараз підключається до сервера.

ConnectionStatus CONNECTION_CONNECTED = 2

Цей багатокористувацький одноранговий гравець підключений.


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_RELIABLE і TRANSFER_MODE_UNRELIABLE_ORDERED не взаємодіє один з одним за замовчуванням. Щоб дізнатися, як правильно налаштувати канали.


TransferMode transfer_mode = 2 🔗

Спосіб надсилання пакетів до цільового вузла. Див. метод 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().


int get_packet_peer() const 🔗

Повертає ідентифікатор MultiplayerPeer, який надіслав наступний доступний пакет. Див. PacketPeer.get_available_packet_count().


int get_unique_id() const 🔗

Повертає ідентифікатор цього 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.