Jump to content
Unity Insider Forum

Network.Instantiate(...) Auf Server nicht ausführen


Usche

Recommended Posts

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

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

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

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

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

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 :P 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

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...