MultiplayerPeer
Успадковує: PacketPeer < RefCounted < Object
Успадковано від: ENetMultiplayerPeer, MultiplayerPeerExtension, OfflineMultiplayerPeer, WebRTCMultiplayerPeer, WebSocketMultiplayerPeer
Абстрактний клас спеціалізованих PacketPeer, що використовується MultiplayerAPI.
Опис
Керує підключенням до одного або декількох віддалених однолітків, що діють як сервер або клієнт, і призначає унікальні ідентифікатори до кожного з них. Дивись ще МультиплеерAPI.
Примітка: Протокол 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
Багатокористувацький одноранговий користувач відключено.
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 🔗
Якщо true, це MultiplayerPeer відмовляється від нових підключень.
Канал використовувати для відправки пакетів. Багато мережевих API, таких як ENet і WebRTC дозволяють створювати декілька незалежних каналів, які поводяться, таким чином, як окремі з'єднання. Це означає, що надійні дані будуть тільки блокувати доставку інших пакетів на цьому каналі, і замовлення буде по відношенню до каналу, пакет буде відправлено. Використання різних каналів для надсилання ** диферентних і незалежних** оновлення стану є загальним способом оптимізації використання мережі і зменшення затримки в швидкопсованих іграх.
Примітка: Канал за замовчуванням (0) фактично працює як 3 окремих каналів (один для кожного TransferMode), так що TRANSFER_MODE_RELIABLE і TRANSFER_MODE_UNRELIABLE_ORDERED не взаємодіє один з одним за замовчуванням. Щоб дізнатися, як правильно налаштувати канали.
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.