Multiplayer einfach zu langsam ?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

KHORN

Betreff: Multiplayer einfach zu langsam ?

BeitragFr, Aug 05, 2005 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi leutz..
nach lager pause bschäftige ich mich wieder mit bb ^_^
Und schon wieder ein Problem Sad
Ich hab etwas simples erstellt :
Ein Spieler ist host und der andere Client...jeder Spieler kann ein Rect bewegen.
Das ganze über DirectPlay.
Nun mein problem, was ich auch schon bei UDP hatte..
Das ganze ist einfach zu langsam und mit Zeitverzögerung.
Ich weiß nicht ob es daran liegt, das ich dasselbe Programm 2 Mal auf einem Rechner starte...

Wie auch imme..Hier ist Code :
BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,24,2
SetBuffer BackBuffer()

Print \"1[HOST] or 2[CLIENT]\"
wahl = Input(\"-> \")
If(wahl = 1)
spiel = HostNetGame(\"TestGame\")
EndIf
If(wahl = 2)
spiel = JoinNetGame(\"TestGame\", \"127.0.0.1\")
EndIf

timer = CreateTimer(60)
name$ = Input(\"Name : \")
spieler = CreateNetPlayer(name)
spieler2 = 0

;Varis
p1_x = 10
p1_y = 10

p2_x = 10
p2_y = 10

Repeat
Cls;##################################

Rect p1_x,p1_y,20,20
Rect p2_x,p2_y,20,20

var = RecvNetMsg()
If(var = 1)
nachricht_typ = NetMsgType()
spieler_nummer = NetMsgFrom()
spieler_name$ = NetPlayerName$(spieler_nummer)
Select nachricht_typ
Case 100
Print spieler_name+\" Spieler hat das Spiel betreten\"
spieler2 = spieler_nummer
Case 101
Print spieler_name+\" Spieler hat das Spiel verlassen\"
Case 1
nachricht$ = NetMsgData()
For i = 1 To Len(nachricht)
If Mid(nachricht$, i, 1) = \"|\"
p2_x = Mid(nachricht$, 1, i-1)
p2_y = Mid(nachricht$, i+1, -1)
EndIf
Next
End Select
EndIf


If KeyDown(200);OBEN
p1_y = p1_y - 2
EndIf
If KeyDown(208);UNTEN
p1_y = p1_y + 2
EndIf
If KeyDown(203);LINKS
p1_x = p1_x - 2
EndIf
If KeyDown(205);RECHTS
p1_x = p1_x + 2
EndIf

If KeyDown(200) Or KeyDown(208) Or KeyDown(205) Or KeyDown(203)
SendNetMsg 1, p1_x+\"|\"+p1_y, spieler
EndIf

WaitTimer(timer)
Flip;#################################
Until KeyHit(1)

StopNetGame


Ich hoffe ihr könnt mir Tipps geben wie ich das ganze schneller bekommen kann..
Danke schonmal Very Happy

PS : Ja, ich hab schon gesucht.

MfG
KHORN

Ninja

BeitragFr, Aug 05, 2005 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, die nachricht nicht jedes frame absenden, sondern alle 5 ms oder so. b
btw.: der timer hat keinen sinn flip hat automatisch eine 60 FPs begrenzung.
Natürlich kann es auch so langsam sein weil wenn du es auf einem pc testest gehts immer bisschen lahmer weil du ja 2 programme am laufen hast.

mfg Ninja
 

KHORN

BeitragFr, Aug 05, 2005 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für die Tipps..
bin ein bissl eingerostet Embarassed
wie soll ich das realisieren, dass die Nachricht alle 5 ms abgeschickt wird ?

bruZard

BeitragFr, Aug 05, 2005 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ninja hat Folgendes geschrieben:
btw.: der timer hat keinen sinn flip hat automatisch eine 60 FPs begrenzung.


Kompletter Blödsinn:
Code: [AUSKLAPPEN]

Graphics 800,600,32,1
SetBuffer BackBuffer()

FPS         = 0
FPS_temp   = 0
FPS_time   = MilliSecs()

Repeat
   Cls
   
   time = MilliSecs()
   
   FPS_temp = FPS_temp +1
   If time-FPS_time>1000
      FPS = FPS_temp
      FPS_temp = 0
      FPS_time = time
   EndIf
   
   Text 4,4,"FPS: "+Str(FPS)
   
   Flip
Until KeyHit(1)
End


Bei mir ca. 600 FPS ...

@KHORN

Du realisierst einen Timer ähnlich wie ich es oben mit der FPS Anzeige gemacht habe. Dort werden jede Sekunde die temp. FPS in die Ausgabe FPS geschrieben, die temp. FPS auf Null gesetzt und die neue Zeit in FPS_time übertragen.
Mache eine andere Aktion draus, ändere die 1000 auf 5000 und der Ausdruck wird alle 5 Sekunden ausgeführt.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Ninja

BeitragFr, Aug 05, 2005 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm bruzard, bei mir hat das aber immer nur um die 60 FPS...
wenn ich flip 0 eingebe (schlatet die 60 FPS begrenzung von flip aus) dan habe ich an die 800. Komischen PC hast du da.

bruZard

BeitragFr, Aug 05, 2005 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Gucke mal in Deine Treibereinstellungen ... dort ist wahrscheinlich "Wird von Anwendung kontrolliert" (o.ä.) aktiviert. Schalte VSync direkt im Treiber aus.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image
 

KHORN

BeitragFr, Aug 05, 2005 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
oki..danke euch
läuft schon viel besser Very Happy

PS : Bei mir ists wie bei Ninja



Gruß KHORN

Mattis_the_brain

BeitragFr, Aug 05, 2005 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Bähh, Programme mit viel horrizontaler Bewegung sind ohne VSync ja einfach gesagt wiederlich... das würde ich von Anwendung zu Anwendung entscheiden ob ich es einschalte oder nicht...

bruZard

BeitragFr, Aug 05, 2005 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
@Mattis_the_brain

Genau das ist der Sinn von erweiterten Treibereinstellungen: Man hat die Möglichkeit seine Optionen selbst zu entscheiden Wink
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group