Usche Geschrieben 2. März 2013 Melden Share Geschrieben 2. März 2013 Hallo UnityCommunity, gibt es die Möglichkeit Network.Instantiate nur auf bestimmten Clients auszuführen? Hintergrund: Es geht um die Erstellung eines Servers, der die Clients lediglich mit Informationen versorgen soll, ohne, dass er selber die Objekte in seiner Oberfläche anlegt. Ich weiß, dass solche Sachen eigentlich über Sockets (z.b. mit Photon) erledigt werden sollen. Da mein Projekt aber tatsächlich nur aus einer Szene besteht , und auch die Spieleranzahl überschaubar sein soll (< 50), dachte ich mir, kann ich mich um sowas drücken und das Unity eigene Networkingsystem zu verwenden. Gruß Usche Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 2. März 2013 Melden Share Geschrieben 2. März 2013 Willst du eigentlich nicht machen, weil der NetworkView deines instanziierten Objekts versucht, mit allen Clients zu kommunizieren und dann auf die Nase fällt, wenn das Gegenstück irgendwo fehlt. Ich lasse mich da aber ggf. gerne eines Besseren belehren. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Schlumpf Geschrieben 2. März 2013 Melden Share Geschrieben 2. März 2013 btw warum soll der server die objekte nicht auch anlegen ? und instanzieren bzw aktionen nur bei einem definierten client machen ist ja nicht wirklich das problem da jeder client eine eigene nummer gegenüber dem server hat networkView.RPC("FunctionName", playerToSendMessageTo, paramaters); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Usche Geschrieben 2. März 2013 Autor Melden Share Geschrieben 2. März 2013 Naja gut, nun ist ja ein RPC ersteinmal etwas anderes als das Instantiate, ich werde nacher aber mal Testen, ob man via RPC erstellte Objects , die nicht auf allen Clients verfügbar sind, über einen Networkview synchronisieren kann. Ansonsten muss ich wohl in den sauren Apfel beissen und mich mit einer eigenen Netzwerklösung auseinandersetzen Warum ich nicht will, dass auf dem Server die Objekte erzeugt werden? Naja ganz einfach: wozu? Es soll ja keiner auf dem "Serverclient" spielen, Und ja ich weiß, so ist das Networking von Unity nicht gedacht Gruß Usche Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Schlumpf Geschrieben 2. März 2013 Melden Share Geschrieben 2. März 2013 bitte ? du erstellst per rpc kein object du sagst per rpc dem DEFINIERTEN CLIENT er soll ein instantiate machen du solltest dir dringend das client server prinzip durcharbeiten und lernen warum der server das maß aller dinge ist und nicht die clients btw : einfach den mesh renderer auf dem server deaktivieren von den clients und sie stören dich nicht oder gleich den consolenmode ohne grafik nutzen Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Usche Geschrieben 2. März 2013 Autor Melden Share Geschrieben 2. März 2013 Ich glaube du denkst da ein wenig falsch... weil das was du schreibst überhaupt nichts mit meinem Posting zutun hat Was ich eigentlich wollte, war mit Network.Instantiate ein Prefab nur auf bestimmten Clients zu instanzieren, das geht wohl nicht. Die Alternative dazu sind RPCs, die ich ja je nach target auf bestimmten Clients Funktionen ausführen Also auch ein Objekt (Lokal natürlich) instanzieren können Wenn ich also auf bestimmten Clients Objekte instanzieren will, muss ich das wohl oder übel über nen RPC machen , gell? Aber ja, der Consolenmodus wäre sicherlich eine adäquate Lösung Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 2. März 2013 Melden Share Geschrieben 2. März 2013 Naja gut, nun ist ja ein RPC ersteinmal etwas anderes als das Instantiate, Nö. Network.Instantiate ist nichts als ein RPC mit RPCMode.AllBuffered Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.