:github_url: hide .. meta:: :keywords: network .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/MultiplayerPeerExtension.xml. .. _class_MultiplayerPeerExtension: MultiplayerPeerExtension ======================== **Inherits:** :ref:`MultiplayerPeer` **<** :ref:`PacketPeer` **<** :ref:`RefCounted` **<** :ref:`Object` Class that can be inherited to implement custom multiplayer API networking layers via GDExtension. .. rst-class:: classref-introduction-group Description ----------- This class is designed to be inherited from a GDExtension plugin to implement custom networking layers for the multiplayer API (such as WebRTC). All the methods below **must** be implemented to have a working custom multiplayer implementation. See also :ref:`MultiplayerAPI`. .. rst-class:: classref-reftable-group Methods ------- .. table:: :widths: auto +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_close`\ (\ ) |virtual| |required| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_disconnect_peer`\ (\ p_peer\: :ref:`int`, p_force\: :ref:`bool`\ ) |virtual| |required| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`_get_available_packet_count`\ (\ ) |virtual| |required| |const| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`ConnectionStatus` | :ref:`_get_connection_status`\ (\ ) |virtual| |required| |const| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`_get_max_packet_size`\ (\ ) |virtual| |required| |const| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`_get_packet`\ (\ r_buffer\: ``const uint8_t **``, r_buffer_size\: ``int32_t*``\ ) |virtual| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`_get_packet_channel`\ (\ ) |virtual| |required| |const| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`TransferMode` | :ref:`_get_packet_mode`\ (\ ) |virtual| |required| |const| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`_get_packet_peer`\ (\ ) |virtual| |required| |const| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedByteArray` | :ref:`_get_packet_script`\ (\ ) |virtual| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`_get_transfer_channel`\ (\ ) |virtual| |required| |const| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`TransferMode` | :ref:`_get_transfer_mode`\ (\ ) |virtual| |required| |const| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`_get_unique_id`\ (\ ) |virtual| |required| |const| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`_is_refusing_new_connections`\ (\ ) |virtual| |const| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`_is_server`\ (\ ) |virtual| |required| |const| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`_is_server_relay_supported`\ (\ ) |virtual| |const| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_poll`\ (\ ) |virtual| |required| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`_put_packet`\ (\ p_buffer\: ``const uint8_t*``, p_buffer_size\: :ref:`int`\ ) |virtual| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`_put_packet_script`\ (\ p_buffer\: :ref:`PackedByteArray`\ ) |virtual| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_set_refuse_new_connections`\ (\ p_enable\: :ref:`bool`\ ) |virtual| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_set_target_peer`\ (\ p_peer\: :ref:`int`\ ) |virtual| |required| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_set_transfer_channel`\ (\ p_channel\: :ref:`int`\ ) |virtual| |required| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_set_transfer_mode`\ (\ p_mode\: :ref:`TransferMode`\ ) |virtual| |required| | +----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Method Descriptions ------------------- .. _class_MultiplayerPeerExtension_private_method__close: .. rst-class:: classref-method |void| **_close**\ (\ ) |virtual| |required| :ref:`🔗` Called when the multiplayer peer should be immediately closed (see :ref:`MultiplayerPeer.close()`). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__disconnect_peer: .. rst-class:: classref-method |void| **_disconnect_peer**\ (\ p_peer\: :ref:`int`, p_force\: :ref:`bool`\ ) |virtual| |required| :ref:`🔗` Called when the connected ``p_peer`` should be forcibly disconnected (see :ref:`MultiplayerPeer.disconnect_peer()`). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__get_available_packet_count: .. rst-class:: classref-method :ref:`int` **_get_available_packet_count**\ (\ ) |virtual| |required| |const| :ref:`🔗` Called when the available packet count is internally requested by the :ref:`MultiplayerAPI`. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__get_connection_status: .. rst-class:: classref-method :ref:`ConnectionStatus` **_get_connection_status**\ (\ ) |virtual| |required| |const| :ref:`🔗` Called when the connection status is requested on the :ref:`MultiplayerPeer` (see :ref:`MultiplayerPeer.get_connection_status()`). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__get_max_packet_size: .. rst-class:: classref-method :ref:`int` **_get_max_packet_size**\ (\ ) |virtual| |required| |const| :ref:`🔗` Called when the maximum allowed packet size (in bytes) is requested by the :ref:`MultiplayerAPI`. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__get_packet: .. rst-class:: classref-method :ref:`Error` **_get_packet**\ (\ r_buffer\: ``const uint8_t **``, r_buffer_size\: ``int32_t*``\ ) |virtual| :ref:`🔗` Called when a packet needs to be received by the :ref:`MultiplayerAPI`, with ``r_buffer_size`` being the size of the binary ``r_buffer`` in bytes. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__get_packet_channel: .. rst-class:: classref-method :ref:`int` **_get_packet_channel**\ (\ ) |virtual| |required| |const| :ref:`🔗` Called to get the channel over which the next available packet was received. See :ref:`MultiplayerPeer.get_packet_channel()`. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__get_packet_mode: .. rst-class:: classref-method :ref:`TransferMode` **_get_packet_mode**\ (\ ) |virtual| |required| |const| :ref:`🔗` Called to get the transfer mode the remote peer used to send the next available packet. See :ref:`MultiplayerPeer.get_packet_mode()`. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__get_packet_peer: .. rst-class:: classref-method :ref:`int` **_get_packet_peer**\ (\ ) |virtual| |required| |const| :ref:`🔗` Called when the ID of the :ref:`MultiplayerPeer` who sent the most recent packet is requested (see :ref:`MultiplayerPeer.get_packet_peer()`). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__get_packet_script: .. rst-class:: classref-method :ref:`PackedByteArray` **_get_packet_script**\ (\ ) |virtual| :ref:`🔗` Called when a packet needs to be received by the :ref:`MultiplayerAPI`, if :ref:`_get_packet()` isn't implemented. Use this when extending this class via GDScript. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__get_transfer_channel: .. rst-class:: classref-method :ref:`int` **_get_transfer_channel**\ (\ ) |virtual| |required| |const| :ref:`🔗` Called when the transfer channel to use is read on this :ref:`MultiplayerPeer` (see :ref:`MultiplayerPeer.transfer_channel`). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__get_transfer_mode: .. rst-class:: classref-method :ref:`TransferMode` **_get_transfer_mode**\ (\ ) |virtual| |required| |const| :ref:`🔗` Called when the transfer mode to use is read on this :ref:`MultiplayerPeer` (see :ref:`MultiplayerPeer.transfer_mode`). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__get_unique_id: .. rst-class:: classref-method :ref:`int` **_get_unique_id**\ (\ ) |virtual| |required| |const| :ref:`🔗` Called when the unique ID of this :ref:`MultiplayerPeer` is requested (see :ref:`MultiplayerPeer.get_unique_id()`). The value must be between ``1`` and ``2147483647``. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__is_refusing_new_connections: .. rst-class:: classref-method :ref:`bool` **_is_refusing_new_connections**\ (\ ) |virtual| |const| :ref:`🔗` Called when the "refuse new connections" status is requested on this :ref:`MultiplayerPeer` (see :ref:`MultiplayerPeer.refuse_new_connections`). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__is_server: .. rst-class:: classref-method :ref:`bool` **_is_server**\ (\ ) |virtual| |required| |const| :ref:`🔗` Called when the "is server" status is requested on the :ref:`MultiplayerAPI`. See :ref:`MultiplayerAPI.is_server()`. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__is_server_relay_supported: .. rst-class:: classref-method :ref:`bool` **_is_server_relay_supported**\ (\ ) |virtual| |const| :ref:`🔗` Called to check if the server can act as a relay in the current configuration. See :ref:`MultiplayerPeer.is_server_relay_supported()`. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__poll: .. rst-class:: classref-method |void| **_poll**\ (\ ) |virtual| |required| :ref:`🔗` Called when the :ref:`MultiplayerAPI` is polled. See :ref:`MultiplayerAPI.poll()`. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__put_packet: .. rst-class:: classref-method :ref:`Error` **_put_packet**\ (\ p_buffer\: ``const uint8_t*``, p_buffer_size\: :ref:`int`\ ) |virtual| :ref:`🔗` Called when a packet needs to be sent by the :ref:`MultiplayerAPI`, with ``p_buffer_size`` being the size of the binary ``p_buffer`` in bytes. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__put_packet_script: .. rst-class:: classref-method :ref:`Error` **_put_packet_script**\ (\ p_buffer\: :ref:`PackedByteArray`\ ) |virtual| :ref:`🔗` Called when a packet needs to be sent by the :ref:`MultiplayerAPI`, if :ref:`_put_packet()` isn't implemented. Use this when extending this class via GDScript. .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__set_refuse_new_connections: .. rst-class:: classref-method |void| **_set_refuse_new_connections**\ (\ p_enable\: :ref:`bool`\ ) |virtual| :ref:`🔗` Called when the "refuse new connections" status is set on this :ref:`MultiplayerPeer` (see :ref:`MultiplayerPeer.refuse_new_connections`). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__set_target_peer: .. rst-class:: classref-method |void| **_set_target_peer**\ (\ p_peer\: :ref:`int`\ ) |virtual| |required| :ref:`🔗` Called when the target peer to use is set for this :ref:`MultiplayerPeer` (see :ref:`MultiplayerPeer.set_target_peer()`). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__set_transfer_channel: .. rst-class:: classref-method |void| **_set_transfer_channel**\ (\ p_channel\: :ref:`int`\ ) |virtual| |required| :ref:`🔗` Called when the channel to use is set for this :ref:`MultiplayerPeer` (see :ref:`MultiplayerPeer.transfer_channel`). .. rst-class:: classref-item-separator ---- .. _class_MultiplayerPeerExtension_private_method__set_transfer_mode: .. rst-class:: classref-method |void| **_set_transfer_mode**\ (\ p_mode\: :ref:`TransferMode`\ ) |virtual| |required| :ref:`🔗` Called when the transfer mode is set on this :ref:`MultiplayerPeer` (see :ref:`MultiplayerPeer.transfer_mode`). .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` .. |void| replace:: :abbr:`void (No return value.)`