SceneMultiplayer

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

Високорівнева реалізація багатокористувацького API.

Опис

Цей клас є впровадженням за замовчуванням MultiplayerAPI, який використовується для забезпечення багатокористувацьких функціональних можливостей в Godot Engine.

Ця реалізація підтримує RPC через Node.rpc() і Node.rpc_id() і вимагає MultiplayerAPI.rpc(), щоб бути передані Node (це не буде для інших типів об'єктів).

Ця реалізація додатково забезпечує повторення SceneTree через MultiplayerSpawner та MultiplayerSynchronizer вузлів, а також ресурс SceneReplicationConfig.

Примітка: Високий рівень багатокористувацького API протоколу – це деталь впровадження і не призначено використовуватися не-Godot серверів. Може змінитися без повідомлення.

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

Властивості

bool

allow_object_decoding

false

Callable

auth_callback

Callable()

float

auth_timeout

3.0

int

max_delta_packet_size

65535

int

max_sync_packet_size

1350

bool

refuse_new_connections

false

NodePath

root_path

NodePath("")

bool

server_relay

true

Методи

void

clear()

Error

complete_auth(id: int)

void

disconnect_peer(id: int)

PackedInt32Array

get_authenticating_peers()

Error

send_auth(id: int, data: PackedByteArray)

Error

send_bytes(bytes: PackedByteArray, id: int = 0, mode: TransferMode = 2, channel: int = 0)


Сигнали

peer_authenticating(id: int) 🔗

Викликається, коли MultiplayerAPI.multiplayer_peer цього MultiplayerAPI підключається до нового вузла, і встановлено дійсний auth_callback. У цьому випадку MultiplayerAPI.peer_connected не буде викликано, доки не буде викликано complete_auth() із заданим вузлом id. У цьому стані вузол не буде включено до списку, що повертається MultiplayerAPI.get_peers() (але до списку, що повертається get_authenticating_peers()), і будуть надіслані або отримані лише дані автентифікації. Див. send_auth() для надсилання даних автентифікації.


peer_authentication_failed(id: int) 🔗

Виникає, коли цей MultiplayerAPI MultiplayerAPI.multiplayer_peer відключається від вузла, автентифікація якого ще не завершена. Див. peer_authenticating.


peer_packet(id: int, packet: PackedByteArray) 🔗

Викликається, коли цей MultiplayerAPI MultiplayerAPI.multiplayer_peer отримує packet з користувацькими даними (див. send_bytes()). ID — це ідентифікатор вузла, який надіслав пакет.


Описи властивостей

bool allow_object_decoding = false 🔗

  • void set_allow_object_decoding(value: bool)

  • bool is_object_decoding_allowed()

Якщо true, MultiplayerAPI дозволить кодування та декодування об'єкта під час RPC.

Попередження: Десеріалізовані об'єкти можуть містити код, який отримує виконану. Не використовуйте цей параметр, якщо послідовний об'єкт надходить від ненадійних джерел, щоб уникнути загрози безпеки, таких як віддалене виконання коду.


Callable auth_callback = Callable() 🔗

Зворотний виклик для виконання під час отримання даних автентифікації, надісланих через send_auth(). Якщо поле Callable порожнє (за замовчуванням), однорангові вузли будуть автоматично прийняті, щойно вони з’єднаються.


float auth_timeout = 3.0 🔗

  • void set_auth_timeout(value: float)

  • float get_auth_timeout()

Якщо встановлено значення більше за 0.0, максимальна тривалість у секундах однорангові вузли можуть залишатися в стані автентифікації, після чого автентифікація автоматично завершується помилкою. Перегляньте сигнали peer_authenticating і peer_authentication_failed.


int max_delta_packet_size = 65535 🔗

  • void set_max_delta_packet_size(value: int)

  • int get_max_delta_packet_size()

Максимальний розмір кожного пакета дельта. Вищі значення підвищують ймовірність отримання повноцінних оновлень в одному кадрі, але також шанс викликати мереживність (висока надійність, відключення). Див. MultiplayerSynchronizer.


int max_sync_packet_size = 1350 🔗

  • void set_max_sync_packet_size(value: int)

  • int get_max_sync_packet_size()

Максимальний розмір кожного пакета синхронізації. Вищі значення підвищують ймовірність отримання повного оновлення в одному кадрі, але також шанс втрати пакету. Див. MultiplayerSynchronizer.


bool refuse_new_connections = false 🔗

  • void set_refuse_new_connections(value: bool)

  • bool is_refusing_new_connections()

Якщо true, MultiplayerAPI MultiplayerAPI.multiplayer_peer відмовляється від нових вхідних з'єднань.


NodePath root_path = NodePath("") 🔗

Кореневий шлях до застосування для РПК і реплікації. Замість абсолютного шляху, відносний шлях буде використовуватися для пошуку вершини, на якому повинна бути виконана РПК.

Цей ефект дозволяє мати різні гілки дерева сцени, які будуть керуватися різними MultiplayerAPI, що дозволяє використовувати як клієнт, так і сервер в одній сцені.


bool server_relay = true 🔗

  • void set_server_relay_enabled(value: bool)

  • bool is_server_relay_enabled()

Увімкнути або вимкнути функцію сервера, яка повідомляє клієнтів інших підключень/відключень, а також відредагувати повідомлення між ними. Коли цей параметр є false, клієнти не будуть автоматично повідомлені про інших однолітків і не зможуть надсилати їх пакети через сервер.

Примітка: Зміна цього параметра, а інші однолітки підключені можуть призвести до несподіваних поведінок.

Примітка: Підтримка цієї функції може залежати від поточного MultiplayerPeer конфігурації. MultiplayerPeer.is_server_relay_supported().


Описи методів

void clear() 🔗

Очищає поточний стан мережі SceneMultiplayer (Ви не повинні викликати це, якщо ви знаєте, що ви робите).


Error complete_auth(id: int) 🔗

Позначте автентифікаційний крок, як завершено для дистанційного з’єднання id. MultiplayerAPI.peer_connected сигнал буде видана для цього однолітків, коли віддалена сторона також завершує автентифікацію. Повідомляємо про те, що з цього річного віку не допускаються.

У разі відключення однолітків перед завершенням автентифікації, або через мережевий номер, параметр auth_timeout, або ручний дзвінок відключення_peer(), сигнал односторонній_authentication_failed буде видано замість MultiplayerAPI.peer_disconnected.


void disconnect_peer(id: int) 🔗

Відключення однолітків, визначених id, знімаючи його з переліку підключених однолітків, і закриваючи основне з'єднання з ним.


PackedInt32Array get_authenticating_peers() 🔗

Повертає ідентифікатори однолітків, які намагаються автентифікувати з цим MultiplayerAPI.


Error send_auth(id: int, data: PackedByteArray) 🔗

Відправляє зазначені data до віддалених однолітків, визначених id в складі автентифікації повідомлення. Це може бути використана для автентифікації однолітків, а також контролю при MultiplayerAPI.peer_connected (і віддалений одноліток, прийнятий як один з підключених однолітків).


Error send_bytes(bytes: PackedByteArray, id: int = 0, mode: TransferMode = 2, channel: int = 0) 🔗

Надійшла сира bytes до конкретного однолітника, визначеного id (див. MultiplayerPeer.set_target_peer()). За замовчуванням ID 0, тобто трансляція всіх однолітків.