Network Functions
Network Functions
Network Functions allow for two-way client to server communication and follow a request and response format.

Overview
An example of when a RemoteFunction
would be appropriate is a player requesting to open a loot crate. First the player tells the server the kind of crate it would like to open, and the server responds with what the player received.
interface CrateResponse {
item: string;
rarity: string;
}
export default class CrateManager extends AirshipSingleton {
// Creating a NetworkFunction
private open =
new NetworkFunction<{ crateType: string }, CrateResponse>("LootCrate");
public override Start(): void {
if (Game.IsClient()) {
// Tell the server that you'd like to open a loot crate
const loot = this.open.client.FireServer({ crateType: "weapon" });
print(`You received a ${loot.rarity} ${loot.item}`);
}
if (Game.IsServer()) {
// Listen for player crate open requests
this.openCrate.server.SetCallback((player, event) => {
return {
item: "sword",
rarity: "legendary",
}
});
}
}
}
Example Use Cases
Purchase Request
Client requests to purchase an item, server validates the transaction, client is notified of the result
Creating a Network Function
Like Network Signals, Network Functions can be created inside of any script. A NetworkFunction
expects two generic parameters: a request type and response type.
interface CrateResponse {
item: string;
rarity: string;
}
const openCrate =
new NetworkFunction<{ crateType: string }, CrateResponse>("LootCrate");
Client -> Server -> Client
Firing a Network Function on the client
const loot = openCrate.client.FireServer({ crateType: "weapon" });
print(`You received a ${loot.rarity} ${loot.item}`);
Listening to Network Functions on the server
openCrate.server.SetCallback((player, event) => {
return {
item: "sword",
rarity: "legendary",
};
});
SetCallback
's first parameter is always the Player
who fired the network function.
Server -> Client -> Server
Network Functions that originate on the server behave exactly the same.
Last updated