Hey,
Ich sende jetzt für jedes Reliable-Packet eine Sequenz-Nummer mit (ein Int) die der Empfänger dann wieder zurück sendet damit der Sender weis, dass das Packet angekommen ist.
hm davon würde ich - wenn es sich vermeiden lässt - eher abraten. Was passiert, wenn ein Paket nicht ankam? Schickst du es dann nach? Wie lange soll der Server das zwischenspeichern, bevor er es einfach verwirft? Was ist, wenn die Information längst veraltet ist, sobald sie ankommt? Wartet der Client ggf. mit der Prozessierung neuerer Pakete bis ältere Pakete ankamen? Falls ja, dann wäre TCP das bessere Protokoll, weil es all das für dich erledigt.
Und genau das macht es ja langsam. Idealerweise wählst du jedoch die Art der Informationen, die du verschickst, so, dass es egal ist, wenn da mal was verloren gegangen ist. Zum Beispiel würde es Sinn ergeben statt einem "Der Gegner hat sich 2 Schritte nach rechts begeben" lieber ein "Der Gegner ist an Position xy und bewegt sich mit Geschwindigkeit yz" zu verschicken.
Es gibt sicherlich Beispiele, wo sowas schwer möglich ist (z.B. beim Verschicken von Spieler-Eingaben vom Client an den Server) aber zumindest bei der Kommunikationsrichtung "Server an Client" ist das meist möglich.
Was mir sehr geholfen hat ist das Developer-Wiki von Valve. Da geht es speziell um Multiplayer-Shooter, aber auch für andere Projekte ist es als Anregung sicher spannend:
https://developer.valvesoftware.com/wiki…ayer_Networking
https://developer.valvesoftware.com/wiki…nd_Optimization
Gruß!