7536d15fe3
MultiplayerPeer changes: - Adds is_server_relay_supported virtual method Informs the upper MultiplayerAPI layer if it can signal peers connected to the server to other clients, and perform packet relaying among them. - Adds get_packet_channel and get_packet_mode virtual methods Allows the MultiplayerAPI to retrieve the channel and transfer modes to use when relaying the last received packet. SceneMultiplayerPeer changes: - Implement peer signaling and packet relaying when the MultiplayerPeer advertise they are supported. ENet, WebRTC, WebSocket changes: - Removed custom code for relaying from WebSocket and ENet, and let it be handled by the upper layer. - Update WebRTC to split create_client, create_server, and create_mesh, with the latter behaving like the old initialize with "server_compatibility = false", and the first two supporting the upper layer relaying protocol.
59 lines
4.2 KiB
XML
59 lines
4.2 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<class name="SceneMultiplayer" inherits="MultiplayerAPI" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
|
|
<brief_description>
|
|
High-level multiplayer API implementation.
|
|
</brief_description>
|
|
<description>
|
|
This class is the default implementation of [MultiplayerAPI], used to provide multiplayer functionalities in Godot Engine.
|
|
This implementation supports RPCs via [method Node.rpc] and [method Node.rpc_id] and requires [method MultiplayerAPI.rpc] to be passed a [Node] (it will fail for other object types).
|
|
This implementation additionally provide [SceneTree] replication via the [MultiplayerSpawner] and [MultiplayerSynchronizer] nodes, and the [SceneReplicationConfig] resource.
|
|
[b]Note:[/b] The high-level multiplayer API protocol is an implementation detail and isn't meant to be used by non-Godot servers. It may change without notice.
|
|
[b]Note:[/b] When exporting to Android, make sure to enable the [code]INTERNET[/code] permission in the Android export preset before exporting the project or using one-click deploy. Otherwise, network communication of any kind will be blocked by Android.
|
|
</description>
|
|
<tutorials>
|
|
</tutorials>
|
|
<methods>
|
|
<method name="clear">
|
|
<return type="void" />
|
|
<description>
|
|
Clears the current SceneMultiplayer network state (you shouldn't call this unless you know what you are doing).
|
|
</description>
|
|
</method>
|
|
<method name="send_bytes">
|
|
<return type="int" enum="Error" />
|
|
<param index="0" name="bytes" type="PackedByteArray" />
|
|
<param index="1" name="id" type="int" default="0" />
|
|
<param index="2" name="mode" type="int" enum="MultiplayerPeer.TransferMode" default="2" />
|
|
<param index="3" name="channel" type="int" default="0" />
|
|
<description>
|
|
Sends the given raw [code]bytes[/code] to a specific peer identified by [code]id[/code] (see [method MultiplayerPeer.set_target_peer]). Default ID is [code]0[/code], i.e. broadcast to all peers.
|
|
</description>
|
|
</method>
|
|
</methods>
|
|
<members>
|
|
<member name="allow_object_decoding" type="bool" setter="set_allow_object_decoding" getter="is_object_decoding_allowed" default="false">
|
|
If [code]true[/code], the MultiplayerAPI will allow encoding and decoding of object during RPCs.
|
|
[b]Warning:[/b] Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threat such as remote code execution.
|
|
</member>
|
|
<member name="refuse_new_connections" type="bool" setter="set_refuse_new_connections" getter="is_refusing_new_connections" default="false">
|
|
If [code]true[/code], the MultiplayerAPI's [member MultiplayerAPI.multiplayer_peer] refuses new incoming connections.
|
|
</member>
|
|
<member name="root_path" type="NodePath" setter="set_root_path" getter="get_root_path" default="NodePath("")">
|
|
The root path to use for RPCs and replication. Instead of an absolute path, a relative path will be used to find the node upon which the RPC should be executed.
|
|
This effectively allows to have different branches of the scene tree to be managed by different MultiplayerAPI, allowing for example to run both client and server in the same scene.
|
|
</member>
|
|
<member name="server_relay" type="bool" setter="set_server_relay_enabled" getter="is_server_relay_enabled" default="true">
|
|
Enable or disable the server feature that notifies clients of other peers' connection/disconnection, and relays messages between them. When this option is [code]false[/code], clients won't be automatically notified of other peers and won't be able to send them packets through the server.
|
|
[b]Note:[/b] Support for this feature may depend on the current [MultiplayerPeer] configuration. See [method MultiplayerPeer.is_server_relay_supported].
|
|
</member>
|
|
</members>
|
|
<signals>
|
|
<signal name="peer_packet">
|
|
<param index="0" name="id" type="int" />
|
|
<param index="1" name="packet" type="PackedByteArray" />
|
|
<description>
|
|
Emitted when this MultiplayerAPI's [member MultiplayerAPI.multiplayer_peer] receives a [code]packet[/code] with custom data (see [method send_bytes]). ID is the peer ID of the peer that sent the packet.
|
|
</description>
|
|
</signal>
|
|
</signals>
|
|
</class>
|