Hallo zusammen
ich wollte mal in die Runde fragen, wie Ihr eine Game-Serverlogik aufbauen würdet!
Zum Hintergrund:
ich und ein Freund wollten ein kleines Spiel in Java programmieren... man hat ein Pixel und kann damit über den Bildschirm huschen, also nix großes für den Anfang! Da wir das ganze natürlich auch über Internet machen wollten muss ein Server her! Nun zu meinen Fragen:
Wir hatten uns das so überlegt, das auf dem Server folgende Sachen laufen:
- Ein Thread um eingehende Verbindungen (TCP) anzunehmen, jede eingehende Verbindung wird an einen weiteren Thread übergeben (Threadpool), welcher dem Player zugeordnet ist
- Ein Thread, welcher UDP-Pakete versendet, die Umgebungsrelevante Daten enthalten, z.B. Position der anderen Spieler
- Ein Thread um UDP-Pakete anzunehmen, wird benötigt um Portnummer des Clients herauszufinden
Alle Daten die vom Spieler gesendet werden, werden aktuell per TCP an den Server geschickt, und der Server schickt alle Daten (aktuell nur Positionen der Spieler) per UDP an alle raus!
Erstmal bis hierhin ok, oder gibt es da Verbesserungsvorschläge?
=======================================
Weiterhin haben wir das aktuelle Problem, das die Pixelpositionen nicht übereinstimmen und das ganze doch recht "laggt". Zumindest sieht die Bewegung der anderen Spieler nicht gerade flüssig aus... liegt das daran das der TCP-Part zu langsam ist?
Eine vorerst letzte Frage: Wie würdet Ihr die Versendung der UDP-Pakete realisieren? Einfach einen Vector nehmen mit Spielerdaten und den dauerhaft rausballern? Würdet Ihr z.B. die Positionsdaten für jeden Spieler einzeln an alle Spieler senden oder eine Art Array, was die Daten aller Spieler enthält an jeden Spieler senden?
Danke schonmal im Vorraus!
MfG