Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Netzwerkspiel (WinSockets + Genesis 3D) (https://www.delphipraxis.net/71064-netzwerkspiel-winsockets-genesis-3d.html)

Patrick 8. Jun 2006 11:09


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:
ClientSocket1.Socket.SendBuf('V'+Player.ViewVector,Sizeof(Player.ViewVector)+1);
... was allerdings nicht funktioniert. Auf der anderen Seite hätte ich den Buffer einfach wieder auseinandergenommen.

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?

Patrick 14. Jun 2006 09:33

Re: Netzwerkspiel (WinSockets + Genesis 3D)
 
Also ich habe es jetzt gelöst, ist aber nicht so schön:
Delphi-Quellcode:
type
  TPacket=record
    Sign : string[3];
    Num : byte;
    ViewVector,TurnVector : geVec3D;
  end;
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?

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 00:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz