uLink - Server und Client

Saturday, October 19, 2013

uLink - Server und Client

Nach Rücksprache mit meinem Dozenten habe ich mich für die Netzwerklösung "uLink"  von MuchDifferent entschieden.


Der Vorteil daran war, dass mein eigener Laptop oder Rechner einen Server darstellen kann, sodass ich keine auftauchenden Verzögerungen bei meiner Prüfung haben werde, da ich innerhalb eines Netzwerkes arbeiten kann. Zudem kann ich Server- und Clientbasiert programmieren was in manchen Situationen bestimmt hilfreich werden kann.
Außerdem gibt es für uLink eine für mich gut nachvollziehbare Dokumentation mit Tutorials und einiges an Material im Web zu finden.

Ich habe also damit angefangen, wie bei Photon auch, die ersten Dokumentationen zu lesen und mir ein Grundgerüst aufzubauen. Bald hat auch schon mein Server funktioniert, zu welchem sich meine Clients verbinden konnten. 
Um euch auch einmal einen kleinen Einblick in die Programmierung zu geben, seht ihr hier das GUI-System, mit welchem ich entweder einen Server darstellen oder mich zum Server verbinden kann:

void OnGUI()
{
    // Checking if you are connected to the server or not
    if (uLink.Network.peerType == uLink.NetworkPeerType.Disconnected)
    {
        // Show fields to insert ip address and port
        serverIP = GUI.TextField(new Rect(120, 10, 100, 20), serverIP);
        serverPort = int.Parse(GUI.TextField(new
        Rect(230, 10, 40, 20), serverPort.ToString()));
        if (GUI.Button(new Rect(10, 10, 100, 30), "Connect"))
        {
            //This code is run on the client
            uLink.Network.Connect(serverIP, serverPort);
            Debug.Log("Did send call to server");
        }
        if (GUI.Button(new Rect(10, 50, 100, 30), "Start Server"))
        {
            //This code is run on the server
            uLink.Network.InitializeServer(32, serverPort);
        }
    }
}

Falls das jemanden genauer interessiert, hier der Link zur Website mit MuchDifferent-eigenen Tutorials. Dort findet man unter anderem ein PDF welches den Einstieg ausführlich erklärt.
Das ganze sieht im Spiel dann so aus:

GUI - Server starten oder Client verbinden

In den ersten Schritten wird zudem gezeigt wie man definiert was passieren soll wenn sich ein Client beispielsweise vom Server trennt oder die Verbindung abbricht:

    void uLink_OnPlayerDisconnected(uLink.NetworkPlayer player)
    {
        uLink.Network.DestroyPlayerObjects(player);
        uLink.Network.RemoveRPCs(player);
    }

In diesem Fall werden alle "netzwerkverbundenen" Objekte, welche zum getrennten Client gehören und natürlich dessen hinterlassenen RPCs zerstört. RPCs sind Funktionen mit denen man grob gesagt zwischen Clients und Server kommunizieren kann. Die werden im Laufe meiner Arbeit mit Sicherheit noch des öfteren auftauchen!

No comments:

Post a Comment