![]() |
Netzwerkspiel (WinSockets + Genesis 3D)
Hallo,
Ich habe angefangen ein 3D- Spiel mit Genesis 3D zu programmieren. Damit das ganze grundlegend im Netzwerk funktioniert muss ich zwei Verctoren (geVec3D) übertragen. Ich suche nun einen Weg die Übertrageung sehr simpel zu gestalten. Da ich die Vektoren unterscheiden muss habe ich mir gedacht, ich sende den Vector und ein Zeichen davor per SendBuf...
Delphi-Quellcode:
... was allerdings nicht funktioniert. Auf der anderen Seite hätte ich den Buffer einfach wieder auseinandergenommen.
ClientSocket1.Socket.SendBuf('V'+Player.ViewVector,Sizeof(Player.ViewVector)+1);
Ich will auf jeden Fall verhindern, dass er zwei Packete pro Vector sendet. Ich habe so schon bedenken dass der Netzwerk-Traffic zu groß wird. Nach meinen aktuellen hochrechnungen sollte er dann etwa alle 10 ms zwei Packete senden und auch empfangen... Wie lässt sich das am Besten gestalten? |
Re: Netzwerkspiel (WinSockets + Genesis 3D)
Also ich habe es jetzt gelöst, ist aber nicht so schön:
Delphi-Quellcode:
Das ganze wird einfach per SendBuf gesendet und empfangen (29 Bytes). Wenn ich jetzt aber nur die anzahl der Mitspieler übermitteln will brauche ich von den 29 Bytes nur 5 Bytes. Der Rest wird leer übermittelt. Wie kann ich es anstellen, dass meine Packete unterschiedliche größe haben?
type
TPacket=record Sign : string[3]; Num : byte; ViewVector,TurnVector : geVec3D; end; Gibt es vielleicht eine Möglichkeit das erste Byte des Bufs zu setzen und auszulesen und je nach dem den Rest in einen anderen Record zu schreiben? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz