![]() |
[Netzwerk Logik]Problem mit Positions Synchronisation
Guten morgen liebe Epvpler,
ich habe jetzt schon einige Erfahrungen gesammelt im 2D Spiele Bereich und möchte mich nun an ein Netzwerk basiertes Spiel wagen. Ich habe allerdings ein paar Probleme bei der umsetzung. Insbesonder bei der Positions Synchronisation. Wie ich es geplant habe würde es im groben so ablaufen: Hier steht das > für das senden und empfangen etc. ;) Client bewegt sich > (Positions Packet) > Server Server überprüft ab bewegung "legal" wenn legal dann: Server > (Positions Packet) > Alle Clients Ergo: Bei allen Clients wird der Spieler auf die neue position gesetzt Ich habe aber das Gefühl das dieses System bei mehreren Clients zu Netzwerklastig ist. Beispiel: Server läuft auf angepasstem Linux Server hat eine 100 Mbit/s anbindung 564 Clients Online. Alle bewegen sich. Bei diesem Beispiel könnte ich mir Vorstellen das der Server ziemlich laggt. Da ich leider noch relativ neu in der Netzwerk Programmierung bin kann ich das ja nicht so gut einschätzen. Wenn dieses System zu Netzwerklastig ist, könntet ihr mir dann einen Vorschlag zeigen wie es besser ist ? Freu mich schon auf eure Antwort MFG Conrew |
spieler die außer sicht des zielclienten sind garnicht oder nur alle ~5 sekunden übertragen.
|
Quote:
|
Was hast du denn für gigantische Movepackets, dass 500 Clients reichen, eine 100 Mbit Leitung auszulasten?
|
Quote:
MFG Conrew |
Quote:
lässt es sich einfach beim Server anzeigen. |
Quote:
MFG Conrew |
Quote:
ansonsten einfach mal implementieren und ausprobieren, wozu gibts netzwerkmonitoringtools? |
ein movepacket dürfte doch nur ein paar kilobyte groß sein ? der server sollte di positionen aber abgleichen.
Ich würde die ja so senden : coordx|coordy|coordz|nochn paar andere sachen |
Ein paar Kilobytes? Das sollte doch weit unter einem sein (ein paar Bytes Daten + Header).
|
Quote:
Code:
Function|Parameter1|Parameter2|Parameter3|Parameter4|OptionalerParameter|Ip des absenders|ip des servers|ip von dem der die antwort empfängt|timestamp |
Quote:
Quote:
Header|posx|posy mehr brauch es ja nicht sein oder ? ;) ist ja nur 2D. Der Server macht die überprüfung usw. oder hat einer einen besseren Vorschlag ? Bin offen für alle Ideen MFG Conrew |
Quote:
Was spricht dagegen, das Paket so aufzubauen? Befehl:2 Bytes X: 8 Bytes Y: 8 Bytes Z: 8 Bytes Befehl entspricht der Funktion, X, Y und Z sind die Parameter. Wieso muss die IP des Servers übertragen werden? Wieso die IP des Clients? Wieso darf der Client bestimmen, welche andere Clients das Paket erhalten; wieso macht das nicht der Server (oder was ist mit "ip von dem der die antwort empfängt" gemeint)? Wieso ist der Timestamp hier relevant? Aber wenn er das ist, sind das nur vier Bytes mehr. Das sind dann insgesamt 26 bzw. 30 Bytes Daten (exklusive Verschlüsselung). (Mir ist schon klar, dass deine Variante mehr in Richtung RMI geht; aber ob das bei einem Spiel wirklich angebracht ist, halte ich für fragwürdig). |
Quote:
Empfängers/Senders ohnehin im Header steht. Wenn ich mal grob schätze dürfte ein TCP/IPv4 Packet 40byte + Daten haben. |
Quote:
|
| All times are GMT +2. The time now is 07:29. |
Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.