Character synchronisieren

Monday, October 21, 2013

Character synchronisieren

Nachdem sich nun zwei Clients mit dem Server verbinden konnten war mein nächstes Ziel mit dem Stand meines Photon-Projektes gleichzuziehen. Je Client wird ein Character instanziiert und die eigenen Bewegungen sollen für den anderen Client sichtbar werden. 


Da ich das mit Photon schon geschafft hatte, konnte ich mir in etwa vorstellen wie es funktioniert und musste nur noch die uLink-Schreibweise herausfinden. Nach kurzer Recherche bin ich auf diese Übersicht gestoßen die wunderbar erklärt wie ich meine Bewegungsinformationen per Skript sende bzw. andere Bewegungen empfange:

private Vector3 correctPlayerPos; 

void uLink_OnSerializeNetworkView(uLink.BitStream stream, uLink.NetworkMessageInfo info) 
{ 
    if (stream.isWriting) 
    {
        // We own this player: send the others our data
        stream.Write(transform.position);
    }
    else 
    { 
 // Network player, receive data
        this.correctPlayerPos = stream.Read(); 
    }
}

Alleine diese Funktion im Skript wird nichts bewirken. Diese funktioniert nämlich wie der Name schon sagt nur mit einem NetworkView auf dem jeweiligen Objekt.
Unity3D hat eine eigene NetworkView-Komponente, die aber nicht genutzt werden kann, da im Skript eine uLink-Funktion aufgerufen wird. Also bekommt das Playerobjekt die uLink-NetworkView-Komponente.
Darauf findet man wieder eine Komponente mit dem Namen "observed". Hier muss das Skript drauf, dessen Daten im Netzwerk gesendet werden sollen. In meinem Beispiel heißt das Skript movealternativ.cs und beinhaltet außer der oben gezeigten Funktion die Keyboardsteuerung (was in diesem Post aber noch keine Rolle spielt) des Players.

                


Wenn mit dieser Voraussetzung das Spiel gestartet wird, kann man im Inspektor die Position eines Characters verändern, was dem anderen Client mitgeteilt und angezeigt wird.

7 comments:

  1. Hi Maren!

    Cooler Artikel... :)

    Eine andere Sache. Ich habe gelesen das MDiff. wohl die Verwendung von uLink geändert hat. Es ist wohl mittlerweile so, dass man uLink frei und unbegrenzt verwenden kann, solange man es nicht für ein kommerzielles Projekt verwendet. Wäre spannend, wenn Du das mal bestätigen könntest...

    LG,
    Dirk

    ReplyDelete
    Replies
    1. Hi Dirk,
      ich habe auch schon davon gelesen, dass es eine freie Version geben wird, jedoch habe ich noch nicht mitbekommen, dass diese schon zur Verfügung steht. Deshalb kann ich das nicht bestätigen da man sich ja auch nur die Trial Version kostenlos herunterladen kann.

      Zudem ist das letzte was ich dazu finde:
      "Is there any news on the uLink updated licensing/free version?"
      "Sorry for the delayed answer (I know you emailed me before). We'll have different licenses with different feature sets (one of which will be free). Unfortunately there is still no ETA for the new licenses. "
      Das war am 22. Januar 2013.
      ( https://groups.google.com/forum/?fromgroups=#!topic/unitypark-beta/ARZQZLmo_CU )

      Auch im offiziellen Forum scheint man drauf zu warten aber eine aktuelle Auskunft gibt es wohl nicht:

      http://forum.muchdifferent.com/unitypark/index.php?p=/discussion/608/ulink-free-announced-help-us-decide-its-features-/p1

      Zudem finde ich auch nichts auf der Website dazu. Falls du aber was neueres dazu weißt, immer her mit den Infos :)

      Delete
  2. This comment has been removed by the author.

    ReplyDelete
  3. Hi Maren,

    Mist, dann stimmt das wohl nicht so ganz, was die Jungs hier behauptet haben... ich hatte auch diesen Fred http://forum.unity3d.com/threads/162749-uLink-Free-announced!-Help-us-decide-its-features gelesen... allerdings nicht bis zum Ende... und da wird ja stramm behauptet, dass es bereits eine freie Version gäbe... hmm...

    Grüße,
    Dirk

    ReplyDelete
    Replies
    1. Ja das habe ich gerade eben auch gefunden. Es gibt wohl ne UnityPark Cloud die recht günstig ist und einer behauptet auch, dass die Trial Version nicht nach den 30 Tagen endet:
      "You can use current version's 30-day trial as long as you don't give the game to players."
      Vielleicht war das gemeint? Da müsste ich aber auch nochmal nachforschen ob das stimmt.

      Delete
  4. So, hab den Chef von MuchDiff mal kontaktiert, der mir damals die Serial für uLink gegeben hat... mal sehen ob er nun auf den oben genannten Fred antwortet...

    LG,
    Dirk
    PS: Kannst Du das Captcha mal deaktivieren... ist ja super nervig... :)

    ReplyDelete
  5. Habe heute folgende Info vom Chef von MD erhalten:

    Hi there!

    We actually have a free academic license that Zakk handles. As it happens, we have mainly provided Korean universities and students with it so far.

    And we have amazing new features and tools to be announced shortly. :)

    Sincerely,
    Christian Lönnholm, CEO
    www.muchdifferent.com

    So richtig beantwortet hat er meine Frage damit nicht... hört sich aber eher danach an, als wäre die "normale" Version echt noch mit einem 30-Tage Trial verbunden...

    Grüße,
    Dirk

    ReplyDelete