[Netzwerk Logik]Problem mit Positions Synchronisation

07/25/2013 11:16 dready#16
Quote:
Originally Posted by .SkyneT. View Post
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.
Zum einen hast du absolut Recht :P

Zum anderen, gut geschätzt ;)
IPv4 Header hat 20Byte + optionale Daten die nochmal maximal 40 Byte seien dürfen. Sollten also 60 seien, es seiden ich schmeiß irgendwas in meinem Kopf durcheinander.
07/27/2013 06:58 MrSm!th#17
Quote:
Originally Posted by »FlutterShy™ View Post
das war bei einem client server projekt bei mir so afgebaut
Dann war es wohl schlecht aufgebaut :f

Zumal die Verschlüsselung nichts an der Größe ändern sollte und eine binäre Speicherung von Daten, die keine Zeichenketten sind (z.B. Zahlen), weniger Platz benötigt, als sie erst in Strings umzuwandeln.
07/27/2013 07:58 Tyrar#18
Quote:
Originally Posted by MrSm!th View Post
Dann war es wohl schlecht aufgebaut :f

Zumal die Verschlüsselung nichts an der Größe ändern sollte und eine binäre Speicherung von Daten, die keine Zeichenketten sind (z.B. Zahlen), weniger Platz benötigt, als sie erst in Strings umzuwandeln.
Padding?

Grundsätzlich reicht für ein Movepacket folgender Aufbau:
Header|PosX|PosY|PlayerID
Was im gesamten nicht mehr als 13 Byte haben sollte.
07/27/2013 22:36 YatoDev#19
Quote:
Originally Posted by MrSm!th View Post
Dann war es wohl schlecht aufgebaut :f

Zumal die Verschlüsselung nichts an der Größe ändern sollte und eine binäre Speicherung von Daten, die keine Zeichenketten sind (z.B. Zahlen), weniger Platz benötigt, als sie erst in Strings umzuwandeln.
ich bin mir bewusst das es schlecht war aber für das was ich machen wollte hat es völlig ausgereicht .

Von der geröße her habe ich mich wohl ein wenig vertan denn wenn man das in eine datei schreibt und dann im windows explorer schaut sind de etwas größer
07/27/2013 23:08 Tyrar#20
Quote:
Originally Posted by »FlutterShy™ View Post
ich bin mir bewusst das es schlecht war aber für das was ich machen wollte hat es völlig ausgereicht .

Von der geröße her habe ich mich wohl ein wenig vertan denn wenn man das in eine datei schreibt und dann im windows explorer schaut sind de etwas größer
Nur weil etwas schlechtes funktioniert oder ausreicht heißt das nicht, dass man es verwenden sollte.
07/28/2013 05:19 Conrew#21
Quote:
Originally Posted by HeavyHacker View Post
Padding?

Grundsätzlich reicht für ein Movepacket folgender Aufbau:
Header|PosX|PosY|PlayerID
Was im gesamten nicht mehr als 13 Byte haben sollte.
Die Player ID brauch eigentlich nicht mit in das Packet. Ich habe ja programmier technisch für jeden Client einen Socket. Dadurch weiß ich ja welcher Client was sendet.

MFG Conrew
07/28/2013 21:04 Tyrar#22
Quote:
Originally Posted by Conrew View Post
Die Player ID brauch eigentlich nicht mit in das Packet. Ich habe ja programmier technisch für jeden Client einen Socket. Dadurch weiß ich ja welcher Client was sendet.

MFG Conrew
Aber woher wissen andere Clients um welchen es sich handelt, der sich bewegt?
07/28/2013 21:21 Conrew#23
Quote:
Originally Posted by HeavyHacker View Post
Aber woher wissen andere Clients um welchen es sich handelt, der sich bewegt?
Das regelt der Server und sagt es dem Client weil er ja weiß das der Client sich bewegt hat.

MFG Conrew
07/29/2013 12:17 dready#24
Kommt immer ein wenig auf deine Ziele an, wieviele Clients peilste den an ?

Dein Ansatz Funktioniert sicher, eine ID vergibt man meist damit du die Perfomancelast nicht auf dem Server hast + du minimierst Probleme der Synchronisation wenn es auf deiner Seite nicht nur ein Server ist der das ganze regelt. Wenn das ganze um 5 Clients geht kannst es wohl genauso so machen wie du es vor hast :P
07/30/2013 06:02 Conrew#25
Also es sollen schon ein paar mehr werden ^^ Was schlägst du den vor wenn ich mehr Clients habe ?

MFG Conrew
07/30/2013 11:14 dready#26
Bei so einem Projekt musst du die beide Größten Herausforderungen bedenken.

a) Cycles und Speicher sind Kostbar
b) Syncronisation zwischen deinen Servern muss nahezu Echtzeit sein, wenn du nicht in große Probleme rennen willst.

Übergibst du die IDs direkt beim Movepacket musst du nurnoch gegenchecken ob der jeweilige client diese ID bewegen darf, schickst du sie nicht mit musst du sie zuordnen und dafür Sorge tragen das diese Temoräre ID jedem deiner Server bekannt ist, die es dann wieder auf die jeweiligen Sockets matchen müssen, dort die Temporäre ID die sie zu anfang für das jeweilige Objekt angelegt haben und diese Wiederrum neu zuweise oder die alt übernehmen.

In jedem Fall wird es auf ne Menge "rumsuchen" rauslaufen und eine Suche ist etwas womit Computer einfach nicht gut fertig werden -> Perfomance ist mies dabei, deshalb möglichst andere Wege wählen.

So und nun der Gegenweg, für 4 Byte mehr in deinem Movepacket.

Client schickt den Move mit ID
Server prüft ob er das Recht dazu hat die ID zu bewegen.
Jeder Client der im Umkreis der ID ist bekommt das selbe Update, ID abc hat sich nach xy bewegt.
07/30/2013 15:28 VisionEP1#27
generell,
es gibt 2 Wege

1. koords

Dabei werden die Koords übertragen

2. Movement
Dabei werden die laufbefehle übertragen und der Server passt die Posi an


100mb reichen locker für die paar Packete. Dein Vorgehen ist auch sehr gut für nen 2d game, mehr Aufwand würde sich nicht lohnen. ist sogar relativ schnell