elitepvpers

elitepvpers (https://www.elitepvpers.com/forum/)
-   General Coding (https://www.elitepvpers.com/forum/general-coding/)
-   -   [Netzwerk Logik]Problem mit Positions Synchronisation (https://www.elitepvpers.com/forum/general-coding/2739891-netzwerk-logik-problem-mit-positions-synchronisation.html)

Conrew 07/24/2013 04:00

[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

Dr. Coxxy 07/24/2013 05:48

spieler die außer sicht des zielclienten sind garnicht oder nur alle ~5 sekunden übertragen.

Conrew 07/24/2013 06:02

Quote:

Originally Posted by Dr. Coxxy (Post 23998485)
spieler die außer sicht des zielclienten sind garnicht oder nur alle ~5 sekunden übertragen.

Aber ansonsten würde das System so funktionieren ? oder doch zu Netzwerklastig

MrSm!th 07/24/2013 09:37

Was hast du denn für gigantische Movepackets, dass 500 Clients reichen, eine 100 Mbit Leitung auszulasten?

Conrew 07/24/2013 09:52

Quote:

Originally Posted by MrSm!th (Post 23999807)
Was hast du denn für gigantische Movepackets, dass 500 Clients reichen, eine 100 Mbit Leitung auszulasten?

Ich kann die Dimensionen von Packets im Verhältnis zu den Leitungen noch nicht so einschätzen. Aber aufgrund der antworten nehme ich mal an das es ohne Probleme funktionieren sollte. Dankeschön :)

MFG Conrew

.SkyneT. 07/24/2013 13:06

Quote:

Originally Posted by Conrew (Post 23999994)
Ich kann die Dimensionen von Packets im Verhältnis zu den Leitungen noch nicht so einschätzen.

Deswegen rechnet man sich das auch aus, oder
lässt es sich einfach beim Server anzeigen.

Conrew 07/24/2013 21:24

Quote:

Originally Posted by .SkyneT. (Post 24002980)
Deswegen rechnet man sich das auch aus, oder
lässt es sich einfach beim Server anzeigen.

Wie genau meinst du das mit ausrechnen ? sry stehe ein bisschen auf dem Schlauch grad :D

MFG Conrew

Dr. Coxxy 07/24/2013 22:00

Quote:

Originally Posted by Conrew (Post 24013915)
Wie genau meinst du das mit ausrechnen ? sry stehe ein bisschen auf dem Schlauch grad :D

MFG Conrew

PacketSize*NumberOfPacketsPerSecondPerClient*Numbe rOfClients

ansonsten einfach mal implementieren und ausprobieren, wozu gibts netzwerkmonitoringtools?

YatoDev 07/24/2013 22:01

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

dowhile 07/24/2013 22:08

Ein paar Kilobytes? Das sollte doch weit unter einem sein (ein paar Bytes Daten + Header).

YatoDev 07/24/2013 22:19

Quote:

Originally Posted by dowhile (Post 24014859)
Ein paar Kilobytes? Das sollte doch weit unter einem sein (ein paar Bytes Daten + Header).

ja paar kilobytes . ich hatte mal ein kleines server client script da wurde das packet so abgesendet :
Code:

Function|Parameter1|Parameter2|Parameter3|Parameter4|OptionalerParameter|Ip des absenders|ip des servers|ip von dem der die antwort empfängt|timestamp
das dann noch binär und crypted und schon hat man 3 kb

Conrew 07/24/2013 22:39

Quote:

Originally Posted by Dr. Coxxy (Post 24014685)
PacketSize*NumberOfPacketsPerSecondPerClient*Numbe rOfClients

ansonsten einfach mal implementieren und ausprobieren, wozu gibts netzwerkmonitoringtools?

Ok ich werde es ausprobieren :)

Quote:

Originally Posted by »FlutterShy™ (Post 24014700)
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

Ja also ich werde eine diesen Aufbau nehmen:
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

dowhile 07/24/2013 23:19

Quote:

Originally Posted by »FlutterShy™ (Post 24015118)
ja paar kilobytes . ich hatte mal ein kleines server client script da wurde das packet so abgesendet :
Code:

Function|Parameter1|Parameter2|Parameter3|Parameter4|OptionalerParameter|Ip des absenders|ip des servers|ip von dem der die antwort empfängt|timestamp
das dann noch binär und crypted und schon hat man 3 kb

Was meinst du mit "binär"?

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).

.SkyneT. 07/25/2013 02:21

Quote:

Originally Posted by dowhile (Post 24016305)
Wieso muss die IP des Servers übertragen werden?
Wieso die IP des Clients?

Das ist einfach nur extrem überflüssig, da die IP des
Empfängers/Senders ohnehin im Header steht.

Wenn ich mal grob schätze dürfte ein TCP/IPv4 Packet
40byte + Daten haben.

YatoDev 07/25/2013 02:23

Quote:

Originally Posted by dowhile (Post 24016305)
(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).

das war bei einem client server projekt bei mir so afgebaut


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.