MultiplayerAPI

Наследует: RefCounted < Object

Наследуется от: MultiplayerAPIExtension, SceneMultiplayer

Высокоуровневый многопользовательский API-интерфейс.

Описание

Базовый класс для высокоуровневых реализаций многопользовательского API. См. также MultiplayerPeer.

По умолчанию SceneTree имеет ссылку на реализацию этого класса и использует ее для предоставления многопользовательских возможностей (т. е. RPC) по всей сцене.

Можно переопределить экземпляр MultiplayerAPI, используемый определенными ветвями дерева, вызвав метод SceneTree.set_multiplayer(), что фактически позволяет запускать как клиент, так и сервер в одной сцене.

Также можно расширить или заменить реализацию по умолчанию с помощью скриптов или собственных расширений. См. MultiplayerAPIExtension для получения подробной информации о расширениях, SceneMultiplayer для получения подробной информации о реализации по умолчанию.

Свойства

MultiplayerPeer

multiplayer_peer

Методы

MultiplayerAPI

create_default_interface() static

StringName

get_default_interface() static

PackedInt32Array

get_peers()

int

get_remote_sender_id()

int

get_unique_id()

bool

has_multiplayer_peer()

bool

is_server()

Error

object_configuration_add(object: Object, configuration: Variant)

Error

object_configuration_remove(object: Object, configuration: Variant)

Error

poll()

Error

rpc(peer: int, object: Object, method: StringName, arguments: Array = [])

void

set_default_interface(interface_name: StringName) static


Сигналы

connected_to_server() 🔗

Выдается, когда multiplayer_peer этого MultiplayerAPI успешно подключается к серверу. Выдается только на клиентах.


connection_failed() 🔗

Выдается, когда multiplayer_peer этого MultiplayerAPI не может установить соединение с сервером. Выдается только на клиентах.


peer_connected(id: int) 🔗

Выдается, когда multiplayer_peer этого MultiplayerAPI подключается к новому пиру. ID — это идентификатор пира нового пира. Клиенты получают уведомления, когда другие клиенты подключаются к тому же серверу. При подключении к серверу клиент также получает этот сигнал для сервера (с ID, равным 1).


peer_disconnected(id: int) 🔗

Выдается, когда multiplayer_peer этого MultiplayerAPI отключается от пира. Клиенты получают уведомления, когда другие клиенты отключаются от того же сервера.


server_disconnected() 🔗

Выдается, когда multiplayer_peer этого MultiplayerAPI отключается от сервера. Выдается только на клиентах.


Перечисления

enum RPCMode: 🔗

RPCMode RPC_MODE_DISABLED = 0

Используется с Node.rpc_config() для отключения метода или свойства для всех вызовов RPC, делая его недоступным. По умолчанию для всех методов.

RPCMode RPC_MODE_ANY_PEER = 1

Используется с Node.rpc_config() для установки метода, который может быть вызван удаленно любым пиром. Аналогично аннотации @rpc("any_peer"). Вызовы принимаются от всех удаленных пиров, независимо от того, являются ли они авторитетом узла или нет.

RPCMode RPC_MODE_AUTHORITY = 2

Используется с Node.rpc_config() для установки метода, который будет вызываться удаленно только текущим многопользовательским полномочием (по умолчанию сервером). Аналогично аннотации @rpc("authority"). См. Node.set_multiplayer_authority().


Описания свойств

MultiplayerPeer multiplayer_peer 🔗

Объект peer для обработки системы RPC (эффективно включающей сетевое взаимодействие при установке). В зависимости от самого peer, MultiplayerAPI станет сетевым сервером (проверьте с помощью is_server()) и установит сетевой режим корневого узла на authority, или он станет обычным клиентским peer. Все дочерние узлы настроены на наследование сетевого режима по умолчанию. Обработка событий, связанных с сетью (подключение, отключение, новые клиенты), выполняется путем подключения к сигналам MultiplayerAPI.


Описания метода

MultiplayerAPI create_default_interface() static 🔗

Возвращает новый экземпляр MultiplayerAPI по умолчанию.


StringName get_default_interface() static 🔗

Возвращает имя класса реализации MultiplayerAPI по умолчанию. Обычно это "SceneMultiplayer", когда доступен SceneMultiplayer. См. set_default_interface().


PackedInt32Array get_peers() 🔗

Возвращает идентификаторы всех подключенных одноранговых узлов этого MultiplayerAPI multiplayer_peer.


int get_remote_sender_id() 🔗

Возвращает идентификатор однорангового узла отправителя для RPC, который в данный момент выполняется.

Примечание: Этот метод возвращает 0 при вызове вне RPC. Таким образом, исходный идентификатор однорангового узла может быть утерян, если выполнение кода задерживается (например, с ключевым словом await GDScript).


int get_unique_id() 🔗

Возвращает уникальный идентификатор однорангового узла multiplayer_peer этого MultiplayerAPI.


bool has_multiplayer_peer() 🔗

Возвращает true, если установлен multiplayer_peer.


bool is_server() 🔗

Возвращает true, если multiplayer_peer этого MultiplayerAPI действителен и находится в режиме сервера (прослушивает соединения).


Error object_configuration_add(object: Object, configuration: Variant) 🔗

Уведомляет MultiplayerAPI о новой configuration для данного object. Этот метод используется внутренне SceneTree для настройки корневого пути для этого MultiplayerAPI (передавая null и допустимый NodePath как configuration). Этот метод может далее использоваться реализациями MultiplayerAPI для предоставления дополнительных функций, см. конкретную реализацию (например, SceneMultiplayer) для получения подробной информации о том, как они его используют.

Примечание: Этот метод в основном актуален при расширении или переопределении поведения MultiplayerAPI через MultiplayerAPIExtension.


Error object_configuration_remove(object: Object, configuration: Variant) 🔗

Уведомляет MultiplayerAPI об удалении configuration для данного object. Этот метод используется внутренне SceneTree для настройки корневого пути для этого MultiplayerAPI (передавая null и пустой NodePath как configuration). Этот метод может быть дополнительно использован реализациями MultiplayerAPI для предоставления дополнительных функций, см. конкретную реализацию (например, SceneMultiplayer) для получения подробной информации о том, как они его используют.

Примечание: Этот метод в основном актуален при расширении или переопределении поведения MultiplayerAPI через MultiplayerAPIExtension.


Error poll() 🔗

Метод, используемый для опроса MultiplayerAPI. Вам нужно беспокоиться об этом, только если вы установите SceneTree.multiplayer_poll на false. По умолчанию SceneTree будет опрашивать свои MultiplayerAPI для вас.

Примечание: Этот метод приводит к вызову RPC, поэтому они будут выполняться в том же контексте этой функции (например, _process, physics, Thread).


Error rpc(peer: int, object: Object, method: StringName, arguments: Array = []) 🔗

Отправляет RPC в целевой peer. Указанный method будет вызван на удаленном object с предоставленными arguments. RPC также может быть вызван локально в зависимости от реализации и конфигурации RPC. См. Node.rpc() и Node.rpc_config().

Примечание: Предпочитайте использовать Node.rpc(), Node.rpc_id() или my_method.rpc(peer, arg1, arg2, ...) (в GDScript), так как они быстрее. Этот метод в основном полезен в сочетании с MultiplayerAPIExtension при расширении или замене многопользовательских возможностей.


void set_default_interface(interface_name: StringName) static 🔗

Устанавливает класс реализации MultiplayerAPI по умолчанию. Этот метод может использоваться модулями и расширениями для настройки того, какая реализация будет использоваться SceneTree при запуске движка.