MultiplayerAPI
Наследует: RefCounted < Object
Наследуется от: MultiplayerAPIExtension, SceneMultiplayer
Высокоуровневый многопользовательский API-интерфейс.
Описание
Базовый класс для высокоуровневых реализаций многопользовательского API. См. также MultiplayerPeer.
По умолчанию SceneTree имеет ссылку на реализацию этого класса и использует ее для предоставления многопользовательских возможностей (т. е. RPC) по всей сцене.
Можно переопределить экземпляр MultiplayerAPI, используемый определенными ветвями дерева, вызвав метод SceneTree.set_multiplayer(), что фактически позволяет запускать как клиент, так и сервер в одной сцене.
Также можно расширить или заменить реализацию по умолчанию с помощью скриптов или собственных расширений. См. MultiplayerAPIExtension для получения подробной информации о расширениях, SceneMultiplayer для получения подробной информации о реализации по умолчанию.
Свойства
Методы
create_default_interface() static |
|
get_default_interface() static |
|
object_configuration_add(object: Object, configuration: Variant) |
|
object_configuration_remove(object: Object, configuration: Variant) |
|
poll() |
|
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 не может установить соединение с сервером. Выдается только на клиентах.
Выдается, когда multiplayer_peer этого MultiplayerAPI подключается к новому пиру. ID — это идентификатор пира нового пира. Клиенты получают уведомления, когда другие клиенты подключаются к тому же серверу. При подключении к серверу клиент также получает этот сигнал для сервера (с ID, равным 1).
Выдается, когда 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 🔗
void set_multiplayer_peer(value: MultiplayerPeer)
MultiplayerPeer get_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.
Возвращает идентификатор однорангового узла отправителя для RPC, который в данный момент выполняется.
Примечание: Этот метод возвращает 0 при вызове вне RPC. Таким образом, исходный идентификатор однорангового узла может быть утерян, если выполнение кода задерживается (например, с ключевым словом await GDScript).
Возвращает уникальный идентификатор однорангового узла multiplayer_peer этого MultiplayerAPI.
Возвращает true, если установлен multiplayer_peer.
Возвращает 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.
Метод, используемый для опроса 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 при запуске движка.