SCRIPTING API / Multiplayer / Network
Network
Networked play from scripts: connecting to servers, the local player, and custom messages between clients and the server.
Kindclass
NamespaceKroys.EngineScripting
Members32
Source
Network.csEXAMPLE
In a script
A complete script that uses Network; copy it into your scripts project.
Multiplayer.cs
// Client side: ask the server, show its answer. [ClientOnly] public sealed class CraftingClient : EntityScript { protected override void OnUpdate(float deltaTime) { if (!Network.IsClient || !Network.IsConnected || !Input.IsKeyPressed(KeyCode.F)) return; NetworkWriter writer = new(); writer.Write("IronSword"); writer.Write(Transform.WorldPosition); Network.SendToServer("Craft.Start", writer, NetworkDelivery.ReliableOrdered); } protected override void OnNetworkMessage(NetworkMessage message) { if (message.Name != "Craft.Accepted") return; NetworkReader reader = message.CreateReader(); Debug.Log($"crafting {reader.ReadString()} for {reader.ReadSingle():0.0} s"); } }
REFERENCE
Members
Properties
#public static NetworkConnectionState ConnectionState { get; }The state of the connection started by Connect.
#public static NetworkRuntimeMode Mode { get; }Whether this world is a client, the dedicated server, or not networked.
#public static bool IsServer { get; }True on the dedicated server.
#public static bool IsClient { get; }True in a client connected (or connecting) to a server.
#public static bool IsConnected { get; }True while a client is connected to a server.
#public static uint LocalClientId { get; }The client id the server gave this client (zero when not connected).
#public static Entity LocalPlayer { get; }The local player's network object as an entity handle (invalid when not connected).
#public static NetId LocalPlayerNetId { get; }Network id of the local player's object (invalid when not connected).
#public static NetworkMessage[] Messages { get; }Custom messages received for this world and not cleared yet (OnNetworkMessage receives them one by one).
Methods
#public static bool Connect(string address, string playerName)Joins a server from a shipped game. Watch ConnectionState for the result.
#public static void Disconnect()Leaves the server.
#public static void SearchServers()Asks servers on the local network to identify themselves.
#public static NetworkServerInfo[] GetServers()Servers that have answered the latest search so far.
#public static NetworkMessage[] ConsumeMessages()Returns the received messages and clears them.
#public static void ClearMessages()Drops the received messages.
#public static bool SendToServer(string name, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable)Client: sends a custom message to the server; its scripts receive it in OnNetworkMessage. False when it cannot be sent.
#public static bool SendToServer(string name, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable)Client: sends raw bytes to the server as a custom message.
#public static bool SendToClient(uint clientId, string name, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable)Server: sends a custom message to one client.
#public static bool SendToClient(uint clientId, string name, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable)Server: sends raw bytes to one client.
#public static bool SendToAllClients(string name, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable)Server: sends a custom message to every client.
#public static bool SendToAllClients(string name, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable)Server: sends raw bytes to every client.
#public static bool SendToAllClientsExceptSender(string name, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable)Server: sends a custom message to every client except the sender of the message being handled.
#public static bool SendToAllClientsExceptSender(string name, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable)Server: sends raw bytes to every client except the sender of the message being handled.
#public static bool SendToAllClientsExceptSender(NetworkMessage sourceMessage, string name, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable)Server: forwards to every client except the one that sent sourceMessage.
#public static bool SendToAllClientsExceptSender(NetworkMessage sourceMessage, string name, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable)Server: forwards raw bytes to every client except the one that sent sourceMessage.
#public static bool SendToAllClientsExcept(uint excludedClientId, string name, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable)Server: sends a custom message to every client except one.
#public static bool SendToAllClientsExcept(uint excludedClientId, string name, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable)Server: sends raw bytes to every client except one.
#public static bool SendToServerTarget(string name, Entity target, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable)Client: sends a custom message to the server addressed to one network object (NetworkMessage.Target).
#public static bool SendToServerTarget(string name, Entity target, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable)Client: sends raw bytes to the server addressed to one network object.
#public static bool SendToServerTarget(string name, NetId target, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable)Client: sends a custom message addressed to the network object with this id.
#public static bool SendToServerTarget(string name, uint targetNetId, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable)Client: sends a custom message addressed to the network object with this id.
#public static bool SendToServerTarget(string name, uint targetNetId, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable)Client: sends raw bytes addressed to the network object with this id.
Signatures
public static bool Connect(string address, string playerName) public static void Disconnect() public static NetworkConnectionState ConnectionState { get; } public static void SearchServers() public static NetworkServerInfo[] GetServers() public static NetworkRuntimeMode Mode { get; } public static bool IsServer { get; } public static bool IsClient { get; } public static bool IsConnected { get; } public static uint LocalClientId { get; } public static Entity LocalPlayer { get; } public static NetId LocalPlayerNetId { get; } public static NetworkMessage[] Messages { get; } public static NetworkMessage[] ConsumeMessages() public static void ClearMessages() public static bool SendToServer(string name, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToServer(string name, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToClient(uint clientId, string name, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToClient(uint clientId, string name, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToAllClients(string name, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToAllClients(string name, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToAllClientsExceptSender(string name, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToAllClientsExceptSender(string name, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToAllClientsExceptSender(NetworkMessage sourceMessage, string name, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToAllClientsExceptSender(NetworkMessage sourceMessage, string name, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToAllClientsExcept(uint excludedClientId, string name, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToAllClientsExcept(uint excludedClientId, string name, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToServerTarget(string name, Entity target, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToServerTarget(string name, Entity target, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToServerTarget(string name, NetId target, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToServerTarget(string name, uint targetNetId, NetworkWriter writer, NetworkDelivery delivery = NetworkDelivery.Reliable) public static bool SendToServerTarget(string name, uint targetNetId, byte[] payload, NetworkDelivery delivery = NetworkDelivery.Reliable)
KroysEngine 0.1.0 documentation, built from the engine repository by Tools/BuildDocsSite.py.