Das Spiel im Entwickeln wird derzeit verwendet ServerSocket und Socket, um den Multiplayer bereitzustellen. Wenn ich nicht lokal laufe, ist es sehr viel zu spät, also frage ich mich, ob ich die Multiplayer-Struktur über TCP (ServerSocket, Socket) und UDP (DatagramSocket) neu erstellen sollte. Derzeit wie ich erwähnt bin nur mit TCP und es ist nur rund 60 Pakete pro Sekunde senden (30 empfangen und 30 gesendet), wenn nicht lokal lief.Multiplayer Game Networking
Informationen, die zwischen Server und Client gesendet werden:
Bewegung, Handel, ItemUsage, EnvironmentDetails und mehr Zeug.
Also meine Fragen sind:
Wäre es einen großen Unterschied machen, wenn ich TCP und UDP beide TCP statt nur verwendet?
Wenn ich zu TCP und UDP wechselte, was sollte ich in jedem Protokoll senden?
Vielen Dank im Voraus!
Edit:
Auftraggeber:
Instancing: this.out = new ObjectOutputStream(new BufferedOutputStream(this.requestSocket.getOutputStream())); this.in = new ObjectInputStream(new BufferedInputStream(this.requestSocket.getInputStream()));
Senden:
this.out.writeObject(temp.toString()); this.out.flush();
Temp ist ein JSONObject
Server:
Instancing: this.out = new ObjectOutputStream(new BufferedOutputStream(c.getOutputStream())); this.out.flush(); this.in = new ObjectInputStream(new BufferedInputStream(c.getInputStream()));
Senden: this.out.writeObject(temp.toString()); this.out.flush();
Temp ist ein JSONObject
UDP kann Pakete löschen, sodass Daten verloren gehen können. Wird sich das negativ auf dein Spiel auswirken? Ich könnte sehen, dass es möglicherweise ein Problem ist. – Carcigenicate
Nun, UDP bietet keine Fehlerüberprüfung per se, so dass es in der Theorie schneller sein wird, solange Sie keinen genauen Informationsfluss benötigen. – Mena
Es ist auch möglich, dass es aufgrund Ihres Codes hängt, abhängig davon, wie Ihr Kommunikationscode die Dinge behandelt. Spülen Sie Ihre Streams? In welchem Format senden Sie Daten usw. – Kayaman