MLAPI (Mid level API) is a framework that simplifies building networked games in Unity. It offers low level access to core networking while at the same time offering high level abstractions. The MLAPI aims to remove the repetetive tasks and reduces the network code dramatically, no matter how many of the modular features you use.
The MLAPI has features matched by nobody else, any more features are added when requested. The MLAPI is constantly evolving. Read about our features here.
To get started, check the Wiki. This is also where most documentation lies. Follow the quickstart, join our discord and get started today!
For bug reports or feature requests you want to propose, please use the Issue Tracker on GitHub. For general questions, networking advice or to discuss changes before proposing them, please use the Discord server.
The MLAPI is built to work everywhere. It will run in the web, on many Unity versions, .NET runtimes and such.
The requirements for the MLAPI are:
- Unity >= 2017
Special thanks to Gabriel Tofvesson for writing the BitWriter, BitReader & ECDH implementation.
If there are any issues, bugs or features that are missing. Please open an issue on the GitHub issues page.
Here is a sample MonoBehaviour showing a chat script where everyone can write and read from. This shows the basis of the MLAPI and the abstractions it adds.
public class Chat : NetworkedBehaviour
{
private NetworkedList<string> ChatMessages = new NetworkedList<string>(new MLAPI.NetworkedVar.NetworkedVarSettings()
{
ReadPermission = MLAPI.NetworkedVar.NetworkedVarPermission.Everyone,
WritePermission = MLAPI.NetworkedVar.NetworkedVarPermission.Everyone,
SendTickrate = 5
}, new List<string>());
private string textField = "";
private void OnGUI()
{
if (IsClient)
{
textField = GUILayout.TextField(textField, GUILayout.Width(200));
if (GUILayout.Button("Send") && !string.IsNullOrWhiteSpace(textField))
{
ChatMessages.Add(textField);
textField = "";
}
for (int i = ChatMessages.Count - 1; i >= 0; i--)
{
GUILayout.Label(ChatMessages[i]);
}
}
}
}