Ich programmiere ein Multiplayer-Spiel und ich habe eine harte Zeit mit der Größe von UDP-Paketen. Ich möchte mehrere Feindstatistiken (HP, Position, ID) über UDP-Pakete senden. Hier ist der wichtige Code-Teil:UDP-Paket: Wie werden verschiedene Datentypen in einem Paket gesendet?
Byte[] datagramPacketData = ("11" + String.valueOf(entityAmount) + "," + gamename + "," + username + entitiesToBeSent).getBytes();
Wie Sie sehen können, ich alle Daten in einen String an Zusammenführung und dann konvertieren byte [], bevor ich es senden. Aber Chars verbrauchen viel mehr Bytes als kleine Ints (für ID und Position) und Longs (HP). Zum Beispiel: ein Mob hat 2.000.000 PS. diese Nummer wird 7 Zeichen (= 7 Byte) verbrauchen, aber es würde nur 4 Byte für lange benötigen. Wie kann ich all diese Daten senden, indem ich weniger Bytes benutze, ohne Objektströme zu verwenden?
Ich würde mich sehr über einige Vorschläge freuen! Vielen Dank im Voraus.
Konvertieren Sie jeden einzelnen Chunk in Bytes, anstatt sie in Strings und dann alle in Bytes auf einmal zu konvertieren? – Natecat
Wie parsen Sie sie dann auf der Empfangsseite? Ich meine, wie kann ich wissen, welcher Teil von Bytes was ist. Weil ich nur ein Byte erhalten werde [] mesh – Madness
Es gibt mehrere Dinge, die Sie tun könnten. Sie können ein Standardlängenpaket erstellen, so dass Bereiche von Positionen im Bytearray konsistent bestimmten Variablen entsprechen, oder Sie könnten Bytes an das Array anhängen, die Ihnen die Position des Anfangs jeder Variablen usw. mitteilen. – Natecat