Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
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 при запуске движка.