ENetMultiplayerPeer

Наследует: MultiplayerPeer < PacketPeer < RefCounted < Object

Реализация MultiplayerPeer с использованием библиотеки ENet.

Описание

Реализация MultiplayerPeer, которая должна быть передана MultiplayerAPI.multiplayer_peer после инициализации в качестве клиента, сервера или сетки. События затем можно обрабатывать, подключаясь к сигналам MultiplayerAPI. См. ENetConnection для получения дополнительной информации о библиотеке-оболочке ENet.

Примечание: ENet использует только UDP, а не TCP. При переадресации порта сервера для того, чтобы сделать ваш сервер доступным в общедоступном Интернете, вам нужно переадресовать только порт сервера в UDP. Вы можете использовать класс UPNP, чтобы попытаться автоматически переадресовать порт сервера при запуске сервера.

Обучающие материалы

Свойства

ENetConnection

host

Методы

Error

add_mesh_peer(peer_id: int, host: ENetConnection)

Error

create_client(address: String, port: int, channel_count: int = 0, in_bandwidth: int = 0, out_bandwidth: int = 0, local_port: int = 0)

Error

create_mesh(unique_id: int)

Error

create_server(port: int, max_clients: int = 32, max_channels: int = 0, in_bandwidth: int = 0, out_bandwidth: int = 0)

ENetPacketPeer

get_peer(id: int) const

void

set_bind_ip(ip: String)


Описания свойств

ENetConnection host 🔗

Базовый ENetConnection создается после create_client() и create_server().


Описания метода

Error add_mesh_peer(peer_id: int, host: ENetConnection) 🔗

Добавьте новый удаленный узел с указанным peer_id, подключенный к указанному host.

Примечание: host должен иметь ровно одного узла в состоянии ENetPacketPeer.STATE_CONNECTED.


Error create_client(address: String, port: int, channel_count: int = 0, in_bandwidth: int = 0, out_bandwidth: int = 0, local_port: int = 0) 🔗

Создайте клиента, который подключается к серверу по адресу address, используя указанный port. Указанный адрес должен быть либо полностью определенным доменным именем (например, "www.example.com"), либо IP-адресом в формате IPv4 или IPv6 (например, "192.168.1.1"). port — это порт, который прослушивает сервер. Параметр channel_count можно использовать для указания количества каналов ENet, выделенных для соединения. Параметры in_bandwidth и out_bandwidth можно использовать для ограничения входящей и исходящей пропускной способности указанным количеством байт в секунду. Значение по умолчанию 0 означает неограниченную пропускную способность. Обратите внимание, что ENet будет стратегически отбрасывать пакеты на определенных сторонах соединения между одноранговыми узлами, чтобы гарантировать, что пропускная способность однорангового узла не будет перегружена. Параметры пропускной способности также определяют размер окна соединения, что ограничивает количество надежных пакетов, которые могут передаваться в любой момент времени. Возвращает @GlobalScope.OK, если клиент был создан, @GlobalScope.ERR_ALREADY_IN_USE, если этот экземпляр ENetMultiplayerPeer уже имеет открытое соединение (в этом случае вам нужно сначала вызвать MultiplayerPeer.close()) или @GlobalScope.ERR_CANT_CREATE, если клиент не может быть создан. Если указан local_port, клиент также будет прослушивать указанный порт; это полезно для некоторых методов обхода NAT.


Error create_mesh(unique_id: int) 🔗

Инициализируйте этот MultiplayerPeer в режиме сетки. Предоставленный unique_id будет использоваться как уникальный идентификатор локальной одноранговой сети после назначения в качестве MultiplayerAPI.multiplayer_peer. В конфигурации сетки вам нужно будет вручную настроить каждый новый одноранговый узел с помощью ENetConnection перед вызовом add_mesh_peer(). Хотя этот метод более продвинут, он позволяет лучше контролировать процесс подключения (например, при работе с NAT punch-through) и лучше распределять сетевую нагрузку (которая в противном случае была бы более обременительной для сервера).


Error create_server(port: int, max_clients: int = 32, max_channels: int = 0, in_bandwidth: int = 0, out_bandwidth: int = 0) 🔗

Создайте сервер, который прослушивает соединения через port. Порт должен быть доступным, неиспользуемым портом в диапазоне от 0 до 65535. Обратите внимание, что порты ниже 1024 являются привилегированными и могут потребовать повышенных прав в зависимости от платформы. Чтобы изменить интерфейс, который прослушивает сервер, используйте set_bind_ip(). IP по умолчанию — это подстановочный знак "*", который прослушивает все доступные интерфейсы. max_clients — это максимальное количество клиентов, которые разрешены одновременно, можно использовать любое число до 4095, хотя достижимое количество одновременных клиентов может быть намного меньше и зависит от приложения. Дополнительные сведения о параметрах пропускной способности см. в create_client(). Возвращает @GlobalScope.OK, если сервер был создан, @GlobalScope.ERR_ALREADY_IN_USE, если у этого экземпляра ENetMultiplayerPeer уже есть открытое соединение (в этом случае сначала необходимо вызвать MultiplayerPeer.close()), или @GlobalScope.ERR_CANT_CREATE, если сервер не удалось создать.


ENetPacketPeer get_peer(id: int) const 🔗

Возвращает ENetPacketPeer, связанный с указанным id.


void set_bind_ip(ip: String) 🔗

IP, используемый при создании сервера. По умолчанию он установлен на подстановочный знак "*", который привязывается ко всем доступным интерфейсам. Указанный IP должен быть в формате адреса IPv4 или IPv6, например: "192.168.1.1".