Files
godot-docs-l10n/classes/uk/class_multiplayerpeer.rst
2025-09-30 13:31:55 +02:00

416 lines
24 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. meta::
:keywords: network
.. _class_MultiplayerPeer:
MultiplayerPeer
===============
**Успадковує:** :ref:`PacketPeer<class_PacketPeer>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
**Успадковано від:** :ref:`ENetMultiplayerPeer<class_ENetMultiplayerPeer>`, :ref:`MultiplayerPeerExtension<class_MultiplayerPeerExtension>`, :ref:`OfflineMultiplayerPeer<class_OfflineMultiplayerPeer>`, :ref:`WebRTCMultiplayerPeer<class_WebRTCMultiplayerPeer>`, :ref:`WebSocketMultiplayerPeer<class_WebSocketMultiplayerPeer>`
Абстрактний клас спеціалізованих :ref:`PacketPeer<class_PacketPeer>`, що використовується :ref:`MultiplayerAPI<class_MultiplayerAPI>`.
.. rst-class:: classref-introduction-group
Опис
--------
Керує підключенням до одного або декількох віддалених однолітків, що діють як сервер або клієнт, і призначає унікальні ідентифікатори до кожного з них. Дивись ще ``МультиплеерAPI``.
\ **Примітка:** Протокол :ref:`MultiplayerAPI<class_MultiplayerAPI>` - це докладна інформація про виконання і не призначене для використання не-Godot серверів. Може змінитися без повідомлення.
\ **Примітка:** При експорті до Android, переконайтеся, що ввімкнути ``INTERNET`` дозвіл на експорт Android перед експортуванням проекту або за допомогою однієї кнопки розгортання. Інакше, мережевий зв'язок будь-якого роду буде заблокований Android.
.. rst-class:: classref-introduction-group
Посібники
------------------
- :doc:`Мультиплеєр високого рівня <../tutorials/networking/high_level_multiplayer>`
.. rst-class:: classref-reftable-group
Властивості
----------------------
.. table::
:widths: auto
+--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
| :ref:`bool<class_bool>` | :ref:`refuse_new_connections<class_MultiplayerPeer_property_refuse_new_connections>` | ``false`` |
+--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
| :ref:`int<class_int>` | :ref:`transfer_channel<class_MultiplayerPeer_property_transfer_channel>` | ``0`` |
+--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
| :ref:`TransferMode<enum_MultiplayerPeer_TransferMode>` | :ref:`transfer_mode<class_MultiplayerPeer_property_transfer_mode>` | ``2`` |
+--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------+
.. rst-class:: classref-reftable-group
Методи
------------
.. table::
:widths: auto
+----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`close<class_MultiplayerPeer_method_close>`\ (\ ) |
+----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`disconnect_peer<class_MultiplayerPeer_method_disconnect_peer>`\ (\ peer\: :ref:`int<class_int>`, force\: :ref:`bool<class_bool>` = false\ ) |
+----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`generate_unique_id<class_MultiplayerPeer_method_generate_unique_id>`\ (\ ) |const| |
+----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`ConnectionStatus<enum_MultiplayerPeer_ConnectionStatus>` | :ref:`get_connection_status<class_MultiplayerPeer_method_get_connection_status>`\ (\ ) |const| |
+----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_packet_channel<class_MultiplayerPeer_method_get_packet_channel>`\ (\ ) |const| |
+----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`TransferMode<enum_MultiplayerPeer_TransferMode>` | :ref:`get_packet_mode<class_MultiplayerPeer_method_get_packet_mode>`\ (\ ) |const| |
+----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_packet_peer<class_MultiplayerPeer_method_get_packet_peer>`\ (\ ) |const| |
+----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`get_unique_id<class_MultiplayerPeer_method_get_unique_id>`\ (\ ) |const| |
+----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`is_server_relay_supported<class_MultiplayerPeer_method_is_server_relay_supported>`\ (\ ) |const| |
+----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`poll<class_MultiplayerPeer_method_poll>`\ (\ ) |
+----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_target_peer<class_MultiplayerPeer_method_set_target_peer>`\ (\ id\: :ref:`int<class_int>`\ ) |
+----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Сигнали
--------------
.. _class_MultiplayerPeer_signal_peer_connected:
.. rst-class:: classref-signal
**peer_connected**\ (\ id\: :ref:`int<class_int>`\ ) :ref:`🔗<class_MultiplayerPeer_signal_peer_connected>`
Видається, коли підключається віддалений вузол.
.. rst-class:: classref-item-separator
----
.. _class_MultiplayerPeer_signal_peer_disconnected:
.. rst-class:: classref-signal
**peer_disconnected**\ (\ id\: :ref:`int<class_int>`\ ) :ref:`🔗<class_MultiplayerPeer_signal_peer_disconnected>`
Видається, коли віддалений вузол відключився.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Переліки
----------------
.. _enum_MultiplayerPeer_ConnectionStatus:
.. rst-class:: classref-enumeration
enum **ConnectionStatus**: :ref:`🔗<enum_MultiplayerPeer_ConnectionStatus>`
.. _class_MultiplayerPeer_constant_CONNECTION_DISCONNECTED:
.. rst-class:: classref-enumeration-constant
:ref:`ConnectionStatus<enum_MultiplayerPeer_ConnectionStatus>` **CONNECTION_DISCONNECTED** = ``0``
Багатокористувацький одноранговий користувач відключено.
.. _class_MultiplayerPeer_constant_CONNECTION_CONNECTING:
.. rst-class:: classref-enumeration-constant
:ref:`ConnectionStatus<enum_MultiplayerPeer_ConnectionStatus>` **CONNECTION_CONNECTING** = ``1``
Багатокористувацький користувач зараз підключається до сервера.
.. _class_MultiplayerPeer_constant_CONNECTION_CONNECTED:
.. rst-class:: classref-enumeration-constant
:ref:`ConnectionStatus<enum_MultiplayerPeer_ConnectionStatus>` **CONNECTION_CONNECTED** = ``2``
Цей багатокористувацький одноранговий гравець підключений.
.. rst-class:: classref-item-separator
----
.. _enum_MultiplayerPeer_TransferMode:
.. rst-class:: classref-enumeration
enum **TransferMode**: :ref:`🔗<enum_MultiplayerPeer_TransferMode>`
.. _class_MultiplayerPeer_constant_TRANSFER_MODE_UNRELIABLE:
.. rst-class:: classref-enumeration-constant
:ref:`TransferMode<enum_MultiplayerPeer_TransferMode>` **TRANSFER_MODE_UNRELIABLE** = ``0``
Пакети не визнаються, що для втрачених пакетів не враховуються. Пакети можуть приходити в будь-яке замовлення. Потенційно швидше, ніж :ref:`TRANSFER_MODE_UNRELIABLE_ORDERED<class_MultiplayerPeer_constant_TRANSFER_MODE_UNRELIABLE_ORDERED>`. Використовуйте для некритичних даних, і завжди врахуйте, чи є питання замовлення.
.. _class_MultiplayerPeer_constant_TRANSFER_MODE_UNRELIABLE_ORDERED:
.. rst-class:: classref-enumeration-constant
:ref:`TransferMode<enum_MultiplayerPeer_TransferMode>` **TRANSFER_MODE_UNRELIABLE_ORDERED** = ``1``
Пакети не визнаються, що для втрачених пакетів не враховуються. Пакети одержуються в порядку, що надсилаються. Потенційно швидше, ніж :ref:`TRANSFER_MODE_RELIABLE<class_MultiplayerPeer_constant_TRANSFER_MODE_RELIABLE>`. Використовуйте для некритичних даних або даних, які будуть застарілі, якщо отримані кінці через спробу повторної дії, наприклад переміщення та позиціонування даних.
.. _class_MultiplayerPeer_constant_TRANSFER_MODE_RELIABLE:
.. rst-class:: classref-enumeration-constant
:ref:`TransferMode<enum_MultiplayerPeer_TransferMode>` **TRANSFER_MODE_RELIABLE** = ``2``
Пакети повинні бути отримані і повторні спроби повинні бути зроблені до моменту визнання пакетів. Пакети повинні бути отримані в порядку, щоб вони були відправлені. Найнадійніший режим передачі, але потенційно повільніше через наклад. Використовуйте для критичних даних, які повинні передаватися і прибути в порядку, наприклад, можливість, що викликається або чат повідомлення. Уважно, якщо інформація дійсно є критичною, і використовувати спаринглі.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Константи
------------------
.. _class_MultiplayerPeer_constant_TARGET_PEER_BROADCAST:
.. rst-class:: classref-constant
**TARGET_PEER_BROADCAST** = ``0`` :ref:`🔗<class_MultiplayerPeer_constant_TARGET_PEER_BROADCAST>`
Пакети надсилаються всім підключеним вузлам.
.. _class_MultiplayerPeer_constant_TARGET_PEER_SERVER:
.. rst-class:: classref-constant
**TARGET_PEER_SERVER** = ``1`` :ref:`🔗<class_MultiplayerPeer_constant_TARGET_PEER_SERVER>`
Пакети надсилаються віддаленому вузлу, який діє як сервер.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Описи властивостей
------------------------------------
.. _class_MultiplayerPeer_property_refuse_new_connections:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **refuse_new_connections** = ``false`` :ref:`🔗<class_MultiplayerPeer_property_refuse_new_connections>`
.. rst-class:: classref-property-setget
- |void| **set_refuse_new_connections**\ (\ value\: :ref:`bool<class_bool>`\ )
- :ref:`bool<class_bool>` **is_refusing_new_connections**\ (\ )
Якщо ``true``, це **MultiplayerPeer** відмовляється від нових підключень.
.. rst-class:: classref-item-separator
----
.. _class_MultiplayerPeer_property_transfer_channel:
.. rst-class:: classref-property
:ref:`int<class_int>` **transfer_channel** = ``0`` :ref:`🔗<class_MultiplayerPeer_property_transfer_channel>`
.. rst-class:: classref-property-setget
- |void| **set_transfer_channel**\ (\ value\: :ref:`int<class_int>`\ )
- :ref:`int<class_int>` **get_transfer_channel**\ (\ )
Канал використовувати для відправки пакетів. Багато мережевих API, таких як ENet і WebRTC дозволяють створювати декілька незалежних каналів, які поводяться, таким чином, як окремі з'єднання. Це означає, що надійні дані будуть тільки блокувати доставку інших пакетів на цьому каналі, і замовлення буде по відношенню до каналу, пакет буде відправлено. Використання різних каналів для надсилання ** диферентних і незалежних** оновлення стану є загальним способом оптимізації використання мережі і зменшення затримки в швидкопсованих іграх.
\ **Примітка:** Канал за замовчуванням (``0``) фактично працює як 3 окремих каналів (один для кожного :ref:`TransferMode<enum_MultiplayerPeer_TransferMode>`), так що :ref:`TRANSFER_MODE_RELIABLE<class_MultiplayerPeer_constant_TRANSFER_MODE_RELIABLE>` і :ref:`TRANSFER_MODE_UNRELIABLE_ORDERED<class_MultiplayerPeer_constant_TRANSFER_MODE_UNRELIABLE_ORDERED>` не взаємодіє один з одним за замовчуванням. Щоб дізнатися, як правильно налаштувати канали.
.. rst-class:: classref-item-separator
----
.. _class_MultiplayerPeer_property_transfer_mode:
.. rst-class:: classref-property
:ref:`TransferMode<enum_MultiplayerPeer_TransferMode>` **transfer_mode** = ``2`` :ref:`🔗<class_MultiplayerPeer_property_transfer_mode>`
.. rst-class:: classref-property-setget
- |void| **set_transfer_mode**\ (\ value\: :ref:`TransferMode<enum_MultiplayerPeer_TransferMode>`\ )
- :ref:`TransferMode<enum_MultiplayerPeer_TransferMode>` **get_transfer_mode**\ (\ )
Спосіб надсилання пакетів до цільового вузла. Див. метод :ref:`set_target_peer()<class_MultiplayerPeer_method_set_target_peer>`.
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Описи методів
--------------------------
.. _class_MultiplayerPeer_method_close:
.. rst-class:: classref-method
|void| **close**\ (\ ) :ref:`🔗<class_MultiplayerPeer_method_close>`
Негайно закрити багатокористувацький вузол, повернувшись до стану :ref:`CONNECTION_DISCONNECTED<class_MultiplayerPeer_constant_CONNECTION_DISCONNECTED>`. Підключені вузли будуть відключені без випромінювання сигналу :ref:`peer_disconnected<class_MultiplayerPeer_signal_peer_disconnected>`.
.. rst-class:: classref-item-separator
----
.. _class_MultiplayerPeer_method_disconnect_peer:
.. rst-class:: classref-method
|void| **disconnect_peer**\ (\ peer\: :ref:`int<class_int>`, force\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_MultiplayerPeer_method_disconnect_peer>`
Відключає вказаний ``peer`` від цього хоста. Якщо ``force`` має значення ``true``, сигнал :ref:`peer_disconnected<class_MultiplayerPeer_signal_peer_disconnected>` не буде передаватися для цього вузла.
.. rst-class:: classref-item-separator
----
.. _class_MultiplayerPeer_method_generate_unique_id:
.. rst-class:: classref-method
:ref:`int<class_int>` **generate_unique_id**\ (\ ) |const| :ref:`🔗<class_MultiplayerPeer_method_generate_unique_id>`
Повернутися до випадково створеного цілого, який може бути використаний як мережевий унікальний ідентифікатор.
.. rst-class:: classref-item-separator
----
.. _class_MultiplayerPeer_method_get_connection_status:
.. rst-class:: classref-method
:ref:`ConnectionStatus<enum_MultiplayerPeer_ConnectionStatus>` **get_connection_status**\ (\ ) |const| :ref:`🔗<class_MultiplayerPeer_method_get_connection_status>`
Повертає поточний стан з'єднання.
.. rst-class:: classref-item-separator
----
.. _class_MultiplayerPeer_method_get_packet_channel:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_packet_channel**\ (\ ) |const| :ref:`🔗<class_MultiplayerPeer_method_get_packet_channel>`
Повертає канал, через який було отримано наступний доступний пакет. Див. :ref:`PacketPeer.get_available_packet_count()<class_PacketPeer_method_get_available_packet_count>`.
.. rst-class:: classref-item-separator
----
.. _class_MultiplayerPeer_method_get_packet_mode:
.. rst-class:: classref-method
:ref:`TransferMode<enum_MultiplayerPeer_TransferMode>` **get_packet_mode**\ (\ ) |const| :ref:`🔗<class_MultiplayerPeer_method_get_packet_mode>`
Повертає режим передачі, який віддалений вузол використовував для надсилання наступного доступного пакета. Див. :ref:`PacketPeer.get_available_packet_count()<class_PacketPeer_method_get_available_packet_count>`.
.. rst-class:: classref-item-separator
----
.. _class_MultiplayerPeer_method_get_packet_peer:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_packet_peer**\ (\ ) |const| :ref:`🔗<class_MultiplayerPeer_method_get_packet_peer>`
Повертає ідентифікатор **MultiplayerPeer**, який надіслав наступний доступний пакет. Див. :ref:`PacketPeer.get_available_packet_count()<class_PacketPeer_method_get_available_packet_count>`.
.. rst-class:: classref-item-separator
----
.. _class_MultiplayerPeer_method_get_unique_id:
.. rst-class:: classref-method
:ref:`int<class_int>` **get_unique_id**\ (\ ) |const| :ref:`🔗<class_MultiplayerPeer_method_get_unique_id>`
Повертає ідентифікатор цього **MultiplayerPeer**.
.. rst-class:: classref-item-separator
----
.. _class_MultiplayerPeer_method_is_server_relay_supported:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **is_server_relay_supported**\ (\ ) |const| :ref:`🔗<class_MultiplayerPeer_method_is_server_relay_supported>`
Повертає ``true``, якщо сервер може діяти як ретранслятор у поточній конфігурації. Тобто, якщо вищий рівень :ref:`MultiplayerAPI<class_MultiplayerAPI>` повинен сповіщати підключених клієнтів про інших однорангових вузлів і реалізувати протокол ретрансляції, щоб дозволити зв’язок між ними.
.. rst-class:: classref-item-separator
----
.. _class_MultiplayerPeer_method_poll:
.. rst-class:: classref-method
|void| **poll**\ (\ ) :ref:`🔗<class_MultiplayerPeer_method_poll>`
Очікується до 1 секунди, щоб отримати новий мережевий захід.
.. rst-class:: classref-item-separator
----
.. _class_MultiplayerPeer_method_set_target_peer:
.. rst-class:: classref-method
|void| **set_target_peer**\ (\ id\: :ref:`int<class_int>`\ ) :ref:`🔗<class_MultiplayerPeer_method_set_target_peer>`
Встановлює однолітків, на які будуть відправлені пакети.
\ ``id`` може бути одним з: :ref:`TARGET_PEER_BROADCAST<class_MultiplayerPeer_constant_TARGET_PEER_BROADCAST>` для надсилання всіх підключених однолітків, :ref:`TARGET_PEER_SERVER<class_MultiplayerPeer_constant_TARGET_PEER_SERVER>` для надсилання на один одному серверу, дійсного ідентифікатора однолітків для надсилання цього конкретного однолітка, негативний ідентифікатор однолітків для надсилання всіх однолітків, крім цього. За замовчуванням, цільовий одноліток :ref:`TARGET_PEER_BROADCAST<class_MultiplayerPeer_constant_TARGET_PEER_BROADCAST>`.
.. |virtual| replace:: :abbr:`virtual (Зазвичай, цей метод перевизначається користувачем, щоб він мав вплив.)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (Цей метод не має побічних ефектів. Не змінює ніяку змінну екземпляра об'єкта.)`
.. |vararg| replace:: :abbr:`vararg (Цей метод приймає будь-яке число аргументів після описаних тут.)`
.. |constructor| replace:: :abbr:`constructor (Цей метод використовується для побудови типів.)`
.. |static| replace:: :abbr:`static (Цей метод не потребує екземпляра для виклику, його можна викликати безпосередньо за допомогою назви класу.)`
.. |operator| replace:: :abbr:`operator (Цей метод описує дійсний оператор для взаємодії з цим типом як з лівим операндом.)`
.. |bitfield| replace:: :abbr:`BitField (Це значення є цілим числом, складеним у вигляді бітової маски з наступних прапорів.)`
.. |void| replace:: :abbr:`void (Значення не повертається.)`