UDP - Auf einem PC geht - über LAN nicht richtig
Übersicht

onkelz89Betreff: UDP - Auf einem PC geht - über LAN nicht richtig |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
erstmal der Code: Code: [AUSKLAPPEN] Graphics 640,480,0,2
SetBuffer = BackBuffer() Global art$,save$ Global timer=CreateTimer(20) Global play[35],geg[35] For i=0 To 350 Step 10 play[i/10]=LoadImage("DATA/Car1.bmp") MidHandle play[i/10] RotateImage play[i/10],i geg[i/10]=LoadImage("DATA/Car2.bmp") MidHandle geg[i/10] RotateImage geg[i/10],i Next Global x#,y#,xx#,yy#,grad,dd=10 Global speed#=1 CountHostIPs(Input("IP des Anderen?")) ;Umwandeln der eingegebenen String-IP nach IntegerIP IP=HostIP(1) ;Abspeichern der ersten möglichen Umgewandelten IP host=Input("Spielernummer(0/1)?") ;Spielernummer zum Bestimmen des Ports, wenn das Programm auf 2PCs läuft kann die nummer gleich sein stream=CreateUDPStream(6000+host) ;Erstellen eines UDPStreams zum Senden und Empfangen Repeat Cls speed=speed*0.98 If speed<0 Then speed=0 x=x+Sin(grad*10)*speed y=y-Cos(grad*10)*speed If KeyDown(200) Then speed=speed*1.31 If speed=0 Then speed=1 ElseIf KeyDown(208) Then speed=speed*0.9 EndIf If KeyDown(203) Then grad=grad-1 If KeyDown(205) Then grad=grad+1 If grad<0 Then grad=35 If grad>35 Then grad=0 recv=RecvUDPMsg(stream);Nachrichten empfangen If(recv<>0) ;Wenn eine Nachricht da ist art=ReadString(stream) dd=RSet(art,Len(art)-Instr(art,"#")) xx=LSet(art,Instr(art,"/")-1) save = LSet(art,Instr(art,"#")-1) yy=RSet(save,Len(save)-Instr(save,"/")) EndIf If x>640 Then x=630 If x<0 Then x=0 If y>470 Then y=470 If y<0 Then y=0 WriteString(stream,x+"/"+y+"#"+grad) SendUDPMsg(stream,IP,6001-host) ;Absenden einer Nachricht DrawImage geg[dd],xx,yy DrawImage play[grad],x,y WaitTimer(timer) Flip Until KeyHit(1) CloseUDPStream stream ;Stream schließen Das Auto vom Gegner hat erstens eine leichte Verzögerung... diese erkläre ich mir einfach durch die Verbindung ... allerdings ... 100MBit/s und nur ein String... naja wie auch immer.... Problem: Auto drehung (Variable dd) wird i-wie nicht mit übermittelt... zumindest dreht sich das Gegnerauto nicht (WENN ich im LAN spiele... auf einem PC geht es doch) Erkennt Jemand den Fehler oder auch gute Tuts für UDP / TCP allg. um kleinere Online/Netzwerk Games zu erstellen... Danke im Voraus |
||
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm...
du sendest Pakete, soweit so gut, aber was seh ich da: du sendest sie jedes Frame ![]() Das sollte der Ursprung für die Verzögerung sein, dadurch entsteht ein Datenstau und die neusten Pakete sind immer hintem am Stau und werden später gelesen also hier 2 Vorschläge: entweder du ließt, falls ein Paket da ist nicht nur eins sondern alle: Code: [AUSKLAPPEN] While RecvUDPMsg(und so weiter) oder du sendest die nicht jedes Frame, sodern nur dann wenn es nötig ist ![]() Hoffe ich konnte helfen ![]() |
||
Portfolio |LinkedIn |XING |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Erstmal Danke für die schnelle Antwort ![]() Leider hilft mir das noch nicht weiter, das habe ich vorher so gehabt, allerdings haben sich die Autos dann gar nicht bewegt... wahrscheinlich weil zu viel gesendet wird? |
||
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
auf jeden Fall steigt die zeit die das Paket braucht um vom anderen ausgelsen zu werden, auf diese Weise, proportional zur Spieltgesammt zeit an ![]() |
||
Portfolio |LinkedIn |XING |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] recv=RecvUDPMsg(stream);Nachrichten empfangen
If(recv<>0) ;Wenn eine Nachricht da ist while not Eof(stream) art=ReadString(stream) dd=RSet(art,Len(art)-Instr(art,"#")) xx=LSet(art,Instr(art,"/")-1) save = LSet(art,Instr(art,"#")-1) yy=RSet(save,Len(save)-Instr(save,"/")) Wend EndIf Versuchs mal so. Vermutlich ein Datenstau. Man sollte zuerst immer den ganzen Stream auslesen. Sonst gibts nur Fehler |
||
Twitter
Download Jewel Snake! Windows|Android |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Habe leider keinen 2ten PC in näherer Reichweite momentan... aber auf einem PC läuft es damit schon etwas schneller als davor ![]() Danke, falls es immer noch nicht klappen sollte werde ich nochmal was schreiben - hier Schönen Abend noch |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group