Performance: Client-server architecture
This affects how quickly the game communicates with the server and updates the game state, impacting responsiveness and load times.
void Start() {
InvokeRepeating(nameof(FetchPlayerDataFromServer), 0f, 5f);
}
IEnumerator FetchPlayerDataFromServer() {
using (UnityWebRequest request = UnityWebRequest.Get("https://gameapi.com/playerdata")) {
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.Success) {
ProcessData(request.downloadHandler.text);
}
}
}void Update() {
StartCoroutine(FetchPlayerDataFromServer());
}
IEnumerator FetchPlayerDataFromServer() {
using (UnityWebRequest request = UnityWebRequest.Get("https://gameapi.com/playerdata")) {
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.Success) {
ProcessData(request.downloadHandler.text);
}
}
}| Pattern | Network Requests | Frame Drops | Input Delay | Verdict |
|---|---|---|---|---|
| Request every frame | 100+ per second | High | High | [X] Bad |
| Request every 5 seconds | 0.2 per second | Low | Low | [OK] Good |
using System;
using System.Net.Sockets;
using System.Text;
TcpClient client = new TcpClient("127.0.0.1", 9000);
NetworkStream stream = client.GetStream();
byte[] data = new byte[256];
int bytes = stream.Read(data, 0, data.Length);
string response = Encoding.ASCII.GetString(data, 0, bytes);
Console.WriteLine(response);TcpClient client = new TcpClient();
client.Connect("192.168.1.10", 7000);
NetworkStream stream = client.GetStream();
byte[] message = Encoding.ASCII.GetBytes("Ping");
stream.Write(message, 0, message.Length);
stream.Close();
client.Close();Pass the test and this pattern moves unknown