DirectPlay wirklich soo langsam?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

JustTheBest

Betreff: DirectPlay wirklich soo langsam?

BeitragMo, Apr 03, 2006 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ich habe mal eine Frage:
Kürzlich habe ich mich am Netzwerk-Spiel versucht und habe ein einfaches Spiel geproggt, bei dem man nur in einem Bildschirm rumlaufen/-hüpfen kann!
Da ich im Moment nicht die Zeit habe, mich mit TCP oder UDP (ich weis, "das ist schneller, ich sollte das verwenden, is nich so schwer,...") habe ich es erstmal mit DP versucht.

Nun habe ich es so für 2 Spieler umfunktioniert:

1 .die Koordinaten x und y und die Animations-frame-nummer ("nr") werden jeweils in einen String umgewandelt und dann in den gesamten "sp_daten"-String gepackt. Das Format hierfür ist: "x,y-nr"

2. Die Nachricht wird verschickt.

3. es wird geprüft, ob nachrichten anstehen und diese werden abgerufen.

4. sp2_daten$ (Die NetMsgData) wird wieder aufgeteilt...

5. am ende werden beide figuren gezeichnet.

Nun die Frage: Probiere ich es an einem PC aus (IP: 127.0.0.1), so wird meine Figur in dem anderen Fenster mit ca. 5 Sekunden verzögerung dargestellt! Ist DirectPlay wirklich sooo langsam?
Eine Nachricht, und so eine Verzögerung?
Oder liegt es viell. daran, dass ich es an einem pc spiele?

Hier noch der Code bezüglich der Messages:

BlitzBasic: [AUSKLAPPEN]

; Spieler-Daten verschicken

x_str$ = Str$(x) ; Koord. x wird zu string
y_str$ = Str$(y) ; Koord. x wird zu string
nr_str$ = Str$(nr); frame nr wird zu string

sp_daten$ = x_str$ + "," + y_str$ + "-" + nr_str$ ; gesamtstring: "x,y-nr"

SendNetMsg(10, sp_daten$, sp_nummer, 0) ; Nachricht senden

If RecvNetMsg() = 1 Then
If NetMsgType() = 10 Then
sp2_daten$ = NetMsgData()

x2 = Int(sp2_daten$)
y2 = Int(Mid$(sp2_daten$, Instr(sp2_daten$, ",")+1))
nr2= Int(Mid$(sp2_daten$, Instr(sp2_daten$, "-")+1))

; ^ Dient zum zurückverwandeln in Integer

EndIf
EndIf
[/code]

Ich hoffe, ihr könnt mein Problem verstehen und mir ein paar Tipps zur Optimierung geben!
Ich danke euch schonmal im Voraus!
Mfg
JTB

Hubsi

BeitragMo, Apr 03, 2006 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
SendNetMsg(10, sp_daten$, sp_nummer, 0) ; Nachricht senden


Machst Du das in jedem Hauptschleifendurchlauf? Dann ist das eindeutig zu viel Very Happy Alle 30 Millisekunden sollte allemal reichen, bei Actionspielen kann man ja auch viel interpolieren Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

JanK

BeitragMo, Apr 03, 2006 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Edit:
Crying or Very sad Zu langsam
---------------------

Ich wüsste nur, dass man vielleicht so machen könnte :

BlitzBasic: [AUSKLAPPEN]

SendNetMsg(10, sp_daten$, sp_nummer, 1) ; Nachricht senden


Ach ja...und so schwierig is UDP garnet...Also ich finds leichter Wink [/code]
Ich habe keine Zeit, mich zu beeilen.
The Pollux Conflict || The Pollux Renegades || Lipstick-live.de

JustTheBest

Betreff: Oh...

BeitragMo, Apr 03, 2006 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh!
Erstmal: Danke für die schnellen Antworten!
Das mit der Zeit hab ich völlig übersehen!
Ich hab versucht nur zu senden, wenn sich was ändert, aber das beste ist wohl eine Mischung(also beides!)!
Das mit Wichtig ist auch gut, aber ist das nicht Standart? In der Online-Hilfe steht:

"Wichtig = 0=normal, 1=wichtige Nachricht (schneller und Standard) "
Naja, müsst ihr nicht drauf antworten, nur so ne überlegung...

Also, danke für die Tipps, hab ich irgendwie komplett vergessen!

Mfg
JTB

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group