muss der Server das erst für den anderen Clienten bearbeiten wenn ja wie muss der Client das dann aufnehmen?
muss ich dann zum empfangen 3 puffer machen? einen für die xkoordinaten und einer für die ykoordinaten und der andere für die Welt?
oder muss das ganze der Client Verarbeiten,wobei ich doch mehr für die erste variante wäre,wäre nett wenn ihr mir helft,wenn möglich an einem klitzekleinen beispiel
natoll,jetzt muss ich noch einen Rechner zusammenbaun der 24 stunden am Tag online ist und meinen Server für mein Projekt Order of Blance laufen lässt
Beispiel - kann ich nicht bieten, aber denkanstoß:
Wenn der Server die koordinaten in ihre usrprüngliche form umwandelt müsste er alles wieder einzeln schicken - des ist ja nicht sinn der sache... Der Server forwarded des einfach zu den verschiedenen Clients und die decoden des ganze dann dementsprechend. Genauso wie deren output an koordinaten von ihnen selber in einen derartigen string geschrieben wird.
Müsste der server das jedesmal machen, bei jedem einzelnen Client hättest du bei spätestens 100 clients vom server produzierte lags, weil er einfach mit der aktualisierung der koords nicht nachkommen würde.
Einfach weiterschicken frisst weniger zeit als alles zu decodieren und dann zu verschicken. logo oder?
Um die verschiedenen werte auszulesen solltest du dir ein eigenes kleines protokoll zurechtlegen welches genau vorgibt an welcher stelle was steht...
Zum Beispiel:
0001 <<< Player bewegt sich einfach
Player1 <<< gibt den Player an
World1 <<<< gibt die Map an
PlayerX <<< X Koordinate
PlayerY <<< Y Koordinate
Nacheinander geschickt bringts das nicht, also schickst dus hintereinander... Allerdings mit einem trennzeichen, zum Beispiel @
Beispiel:
0001@Player1@World1@PlayerX@PlayerY|
Das "|" dient als Terminator - anzeiger dass der string zuende ist.
Hast du dir dein Protokoll soweit zurecht gelegt (du wirst weit mehr als nur den 0001er befehl brauchen - der Player kann ja auch kämpfen und nicht nur rennen), bastelst du dir eine Procedur, die den empfangenen string je nach "Vorzeichen" (also 0001, 0002 etc) in verschiedene Teile aufteilt und diese Teilbereiche in die passenden Variablen schreibt.
Hilfreich sind hier - dreimal darfste raten - die string befehle. Und jetzt verstehste vielleicht auf den sinn der Trennzeichen. Damit kannste leicht eingrenzen wo denn eine koordinate steht...
Und schon funzt dat ganze...
So schwer ist das garnicht - man muss sich nur die infos holen oder selber auf die ideen kommen... (auch wenn ich mir für meine proceduren hilfe geholt hab - obwohl die dinger schnell zusammengezimmert sind).
Übrigens:
Das mit 3 Puffern ist schwachsinn, das vergeudet nur speicher, vor allem wie ordnest du den jeweiligen string einem anderen Puffer zu?
Wenn du über ein bytecodeprotokoll gehst wie oben beschrieben brauchste - wenn überhaupt (auch wenn man da bereits über den sinn streiten kann) 2 Puffer - einen zum senden, einen zum empfangen.
Ich verwende einen einzigen, und bisher sind keine Probleme aufgetreten... Lasse mich aber gerne von Leuten die sich besser damit auskennen eines besseren belehren.
mmmh,hab mal in der hilfe nachgesehn und auch was gefunden,aber ich glaube in der praxis stimmt was net...ich hab das ganze mal mit einem testclient versucht,ein andere "Client" hat gesendet,auf der hoffnung das der testclient dies auch nimmt.