You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
[Net] Modularize multiplayer, expose MultiplayerAPI to extensions.
- RPC configurations are now dictionaries. - Script.get_rpc_methods renamed to Script.get_rpc_config. - Node.rpc[_id] and Callable.rpc now return an Error. - Refactor MultiplayerAPI to allow extension. - New MultiplayerAPI.rpc method with Array argument (for scripts). - Move the default MultiplayerAPI implementation to a module.
This commit is contained in:
@@ -57,7 +57,7 @@
|
||||
Initialize the multiplayer peer with the given [code]peer_id[/code] (must be between 1 and 2147483647).
|
||||
If [code]server_compatibilty[/code] is [code]false[/code] (default), the multiplayer peer will be immediately in state [constant MultiplayerPeer.CONNECTION_CONNECTED] and [signal MultiplayerPeer.connection_succeeded] will not be emitted.
|
||||
If [code]server_compatibilty[/code] is [code]true[/code] the peer will suppress all [signal MultiplayerPeer.peer_connected] signals until a peer with id [constant MultiplayerPeer.TARGET_PEER_SERVER] connects and then emit [signal MultiplayerPeer.connection_succeeded]. After that the signal [signal MultiplayerPeer.peer_connected] will be emitted for every already connected peer, and any new peer that might connect. If the server peer disconnects after that, signal [signal MultiplayerPeer.server_disconnected] will be emitted and state will become [constant MultiplayerPeer.CONNECTION_CONNECTED].
|
||||
You can optionally specify a [code]channels_config[/code] array of [enum TransferMode] which will be used to create extra channels (WebRTC only supports one transfer mode per channel).
|
||||
You can optionally specify a [code]channels_config[/code] array of [enum MultiplayerPeer.TransferMode] which will be used to create extra channels (WebRTC only supports one transfer mode per channel).
|
||||
</description>
|
||||
</method>
|
||||
<method name="remove_peer">
|
||||
|
||||
@@ -197,14 +197,14 @@ Error WebRTCMultiplayerPeer::initialize(int p_self_id, bool p_server_compat, Arr
|
||||
cfg["ordered"] = true;
|
||||
|
||||
switch (mode) {
|
||||
case Multiplayer::TRANSFER_MODE_UNRELIABLE_ORDERED:
|
||||
case TRANSFER_MODE_UNRELIABLE_ORDERED:
|
||||
cfg["maxPacketLifetime"] = 1;
|
||||
break;
|
||||
case Multiplayer::TRANSFER_MODE_UNRELIABLE:
|
||||
case TRANSFER_MODE_UNRELIABLE:
|
||||
cfg["maxPacketLifetime"] = 1;
|
||||
cfg["ordered"] = false;
|
||||
break;
|
||||
case Multiplayer::TRANSFER_MODE_RELIABLE:
|
||||
case TRANSFER_MODE_RELIABLE:
|
||||
break;
|
||||
default:
|
||||
ERR_FAIL_V_MSG(ERR_INVALID_PARAMETER, vformat("The 'channels_config' array must contain only enum values from 'MultiplayerPeer.Multiplayer::TransferMode'. Got: %d", mode));
|
||||
@@ -339,13 +339,13 @@ Error WebRTCMultiplayerPeer::put_packet(const uint8_t *p_buffer, int p_buffer_si
|
||||
int ch = get_transfer_channel();
|
||||
if (ch == 0) {
|
||||
switch (get_transfer_mode()) {
|
||||
case Multiplayer::TRANSFER_MODE_RELIABLE:
|
||||
case TRANSFER_MODE_RELIABLE:
|
||||
ch = CH_RELIABLE;
|
||||
break;
|
||||
case Multiplayer::TRANSFER_MODE_UNRELIABLE_ORDERED:
|
||||
case TRANSFER_MODE_UNRELIABLE_ORDERED:
|
||||
ch = CH_ORDERED;
|
||||
break;
|
||||
case Multiplayer::TRANSFER_MODE_UNRELIABLE:
|
||||
case TRANSFER_MODE_UNRELIABLE:
|
||||
ch = CH_UNRELIABLE;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
#ifndef WEBRTC_MULTIPLAYER_PEER_H
|
||||
#define WEBRTC_MULTIPLAYER_PEER_H
|
||||
|
||||
#include "core/multiplayer/multiplayer_peer.h"
|
||||
#include "scene/main/multiplayer_peer.h"
|
||||
#include "webrtc_peer_connection.h"
|
||||
|
||||
class WebRTCMultiplayerPeer : public MultiplayerPeer {
|
||||
|
||||
Reference in New Issue
Block a user