AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Netzwerkspiel (WinSockets + Genesis 3D)
Thema durchsuchen
Ansicht
Themen-Optionen

Netzwerkspiel (WinSockets + Genesis 3D)

Ein Thema von Patrick · begonnen am 8. Jun 2006 · letzter Beitrag vom 14. Jun 2006
Antwort Antwort
Patrick

Registriert seit: 15. Sep 2003
184 Beiträge
 
Delphi 2010 Professional
 
#1

Netzwerkspiel (WinSockets + Genesis 3D)

  Alt 8. Jun 2006, 11:09
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...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?
Genieße jede Minute deines Lebens, denn sie wird nicht wieder kommen.
  Mit Zitat antworten Zitat
Patrick

Registriert seit: 15. Sep 2003
184 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Netzwerkspiel (WinSockets + Genesis 3D)

  Alt 14. Jun 2006, 09:33
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?
Genieße jede Minute deines Lebens, denn sie wird nicht wieder kommen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:18 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