[Neues Thema] => UDP zu langsam !?
Übersicht

![]() |
ToeBBetreff: [Neues Thema] => UDP zu langsam !? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab jetzt ein kleines Mini-"UDP-game" gemacht. Nur ist das viel zu langsam und beim Client Blinken die Images immer so ! Warum ist das so ?
Aber hier erstmal der Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() Global stream,server,Port = 7777,anzahl Global P_col=10,ID=1,mapName$ Global Jump,fy# Dim p_IP(p_col) Dim p_Name$(p_col) Dim p_Port(p_col) Dim p_x(p_col) Dim p_y#(p_col) Dim p_winkel(p_col) Dim p_RI(p_col) Dim SF(90) Dim W(90) Dim map(31,23) SetFont(LoadFont("New Times Roman",13,0,0,0)) Print "(1) => HOST" Print "(2) => JOIN" Repeat If KeyHit(1) Then End If KeyHit(2) Then Server=1:Exit If KeyHit(3) Then Server=0:Exit Forever If Server = 1 EmpfangPort = 8000 Print ">>> HOST" Print "Gib bitte deinen Name ein !" Delay 1000 FlushKeys() p_name(1) = Input("(>)") If p_name(1) = "" Then Print "Du hast keinen Namen eingegeben ! Dein Name ist nun "+Chr(34)+"NoName"+Chr(34)+" !" p_name(1) = "NoName" EndIf Delay 1000 Print "Okay...." Print "Erstelle ein Spiel ..." stream = CreateUDPStream(Port) Delay 1000 If stream = 0 Then Color 255,0,0:Print "Spiel konnte nicht erstellt werden !":Delay 2000:End Print "Spiel erstellt !" Print "Warte auf andere Spieler..." AppTitle "SmILeY FigHTerS -online- (Server)" FlushKeys() Repeat If KeyHit(1) Then End If RecvUDPMsg(stream) And ReadByte(stream) = 1 If ID < p_col ID = ID + 1 p_Name(ID) = ReadString(stream) p_IP(ID) = UDPMsgIP(stream) p_Port(ID) = UDPMsgPort(stream) Print p_name(ID)+" ist in dein Spiel eingetreten ! (ID : "+ID+"/IP : "+DottedIP(p_IP(ID))+")" WriteByte(stream,1) WriteInt(stream,ID) WriteString(stream,p_name(1)) SendUDPMsg(stream,p_IP(ID),p_port(ID)) Delay 100 Else pp = UDPMsgPort(stream) pp2= UDPMsgIP(stream) WriteByte stream,p_col+1 SendUDPMsg(stream,pp2,pp) EndIf EndIf Until KeyHit(28) anzahl = ID ID = 1 For i = 2 To anzahl WriteString(stream,"Los") WriteInt(stream,anzahl) SendUDPMsg(stream,p_IP(i),p_Port(i)) Next Else Print ">>> JOIN" Print "Gib bitte die HOST-IP ein !" Delay 1000 FlushKeys() IpIp$ = Input("(>)") If IpIp$ = "" Then IpIp$ = "127.0.0.1" p_IP(1) = INT_IP(IpIp) Print "Gib bitte deinen Name ein !" Delay 1000 FlushKeys() name$ = Input("(>)") If name$ = "" Then Print "Du hast keinen Namen eingegeben ! Dein Name ist nun "+Chr(34)+"NoName"+Chr(34)+" !" name$ = "NoName" EndIf Delay 1000 FlushKeys() Print "Verbinde mit Host ..." stream = CreateUDPStream() Delay 1000 If stream = 0 Then Color 255,0,0:Print "Verbindung konnte nicht aufgebaut werden !":Delay 2000:End WriteByte(stream,1) WriteString(stream,name$) SendUDPMsg(stream,p_IP(1),Port) Print "Warte auf Antwort ..." Delay 1000 Repeat If KeyHit(1) Then End pp = RecvUDPMsg(stream) Until pp <> 0 pp = ReadByte(stream) If pp = 1 Then ID = ReadInt(stream) p_name(1) = ReadString(stream) p_IP(1) = UDPMsgIP(stream) p_name(ID)= name$ ElseIf pp = p_col+1 Color 255,0,0 Print "Zu viele Spieler !" Delay 2000 End EndIf Print "Der Server hat geantwortet !" Print "Name : "+p_name(1) Delay 1000 Print "Warte auf Spielstart ..." Delay 100 AppTitle "SmILeY FigHTerS -online- (Client)" Repeat If KeyHit(1) Then End pp = RecvUDPMsg(stream) Until pp <> 0 And ReadString(stream) = "Los" anzahl = ReadInt(stream) EndIf Print "Es geht los !" Print "Lade daten ..." Smiley = LoadAnimImage("gfx\Smiley.bmp",21,21,0,2):MaskImage Smiley,192,192,192:MidHandle Smiley:TFormFilter 2 Guns = LoadAnimImage("gfx\Guns.bmp",21,41,0,4):MaskImage Guns,180,180,180:MidHandle Guns TileSet = LoadAnimImage("gfx\TileSet.bmp",25,25,0,3):MaskImage TileSet,255,0,255 BackGround = LoadImage("gfx\Background.bmp") Pointer = LoadImage("gfx\Pointer.bmp"):MaskImage Pointer,255,0,255 Explosion = LoadAnimImage("gfx\Explosion30x30.bmp",30,30,0,64):MaskImage Explosion,0,0,0 Stuze = LoadAnimImage("gfx\Stutze.bmp",25,25,0,3):MaskImage Stuze,255,0,255 Print "--Figur" Print "--Waffen" Delay 100 For i = 0 To 90 SF(i) = CopyImage(Smiley) W(i) = CopyImage(Guns) RotateImage SF(i),i*4 RotateImage W(i),i*4 Next FreeImage Smiley FreeImage Guns Print "--Map" Delay 100 Read MapName For y = 0 To 23 For x = 0 To 31 Read map(x,y) Next Next Print "Fertig ! Alle Daten geladen !" Print "Map : "+MapName Delay 2500 Timer = MilliSecs() Repeat ox = p_x(ID):oy = p_y(ID) p_winkel(ID) = -ATan2(MouseX()-p_x(ID),MouseY()-p_y(ID))+180 If p_winkel(ID) < 0 Then p_winkel(ID) = 360 If p_winkel(ID) > 360 Then p_winkel(ID) = 0 If p_winkel(ID) => 0 And p_winkel(ID) < 180 Then p_RI(ID) = 0 If p_winkel(ID) => 180 And p_winkel(ID) <= 360 Then p_RI(ID) = 1 If KeyDown(30) Then p_x(ID) = p_x(ID) - 2 If KeyDown(32) Then p_x(ID) = p_x(ID) + 2 If KeyHit(17) And Jump < 2 Then Jump = Jump + 1:fy = 13 If Jump > 0 Then fy = fy - 0.9 p_y(ID) = p_y(ID) - fy Else fy = fy + 0.9 p_y(ID) = p_y(ID) + fy EndIf If p_x(ID) < 10 Then p_x(ID) = 10 If p_x(ID) > 790 Then p_x(ID) = 790 For xx = 0 To 31 For yy = 0 To 23 DrawImage TileSet,xx*25,yy*25,map(xx,yy) If map(xx,yy) > 0 If RectsOverlap(p_x(1)-10,p_y(1)-12,20,1,xx*25,yy*25,25,25) Then fy = 0:p_y(ID) = oy If RectsOverlap(p_x(1)-10,p_y(1)+12,20,1,xx*25,yy*25,25,25) Then Jump = 0:fy = 0:p_y(ID) = oy If RectsOverlap(p_x(1)-12,p_y(1)-10,1,20,xx*25,yy*25,25,25) Then p_x(ID) = ox If RectsOverlap(p_x(1)+12,p_y(1)-10,1,20,xx*25,yy*25,25,25) Then p_x(ID) = ox EndIf Next Next For i = 1 To anzahl DrawImage SF(p_winkel(i)/4),p_x(i),p_y(i),p_RI(i) DrawImage W(p_winkel(i)/4),p_x(i),p_y(i),p_RI(i) Color 255,0,0:Text p_x(i),p_y(i)-20,p_name(i),1,0:Color 255,255,255 Next If timer <= MilliSecs() - 30 Then If Server = 1 For i = 2 To anzahl For j = 1 To anzahl WriteInt(stream,p_x(j)) WriteInt(stream,p_y(j)) WriteInt(stream,p_winkel(j)) WriteInt(stream,p_RI(j)) SendUDPMsg(stream,p_IP(i),p_Port(i)) Next Next Else WriteInt(stream,ID) WriteInt(stream,p_x(ID)) WriteInt(stream,p_y(ID)) WriteInt(stream,p_winkel(ID)) WriteInt(stream,p_RI(ID)) SendUDPMsg(stream,p_IP(1),Port) EndIf If RecvUDPMsg(stream) <> 0 If Server = 1 Then ID = ReadInt(stream) p_x(ID) = ReadInt(stream) p_y(ID) = ReadInt(stream) p_winkel(ID) = ReadInt(stream) p_RI(ID) = ReadInt(stream) Else For i = 1 To anzahl If i <> ID Then p_x(i) = ReadInt(stream) p_y(i) = ReadInt(stream) p_winkel(i) = ReadInt(stream) p_RI(i) = ReadInt(stream) EndIf Next EndIf EndIf timer = MilliSecs() EndIf Flip Cls Until KeyHit(1) Function INT_IP(IP$) A1 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A2 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A3 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A4 = Int(IP$) Return (A1 Shl 24) + (A2 Shl 16) + (A3 Shl 8 ) + A4 End Function .MapData Data "Geometric" Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 Ich hab echt keine anhnug ![]() thx und mfg Crack93 |
||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es macht keinen Spaß, sich diesen unformatierten Quellcode durchzulesen. Und ein paar Kommentare wären auch nett. ![]() Zitat: Ich hab echt keine anhnug
![]() War das eine Frage oder eine Feststellung? ![]() |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nimm die Delays raus.
Was erwartest du da genau was er tun soll wenn die Anwendung immer wieder für mehrere Sekunden in den Sleep versetzt wird. UDP ist schnell, schneller wirds nimmer, wenn dir UDP zu langsam ist, würd ich ma so arrogant sein und behaupten, dass du dir erst noch weitere Grundlagen der Netzrprogrammierung aneignen musst, damit du dein Projekt so designen kannst, dass es richtig arbeitet mit Netzwerk. Weil "frame-identische" netzwerk übertragung etc gibts nicht. 30-100ms millisekunden dauerts minimum bis die anderen spieler deine update daten haben (wenn du ein spieler bist) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das blinken:
UDP-Nachrichten kommen nicht immer an. Deshalb erreicht manchmal auch die Nachricht 0 den Client. Mach einfach, dass es nur ausliest wenn der instream <>0 ist. MfG |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also so :
Code: [AUSKLAPPEN] If RecvUDPMsg(stream) And stream <> 0 then LeseMessage()
?? thx und mfg Crack93 |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Reicht schon wenn du nur RecvUDPMsg abfragst. | ||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
aber das hab ich doch gemacht !
thx und mfg Crack93 [EDIT] Ich hab das jetzt so gemacht, das wenn der HOST einen Nacjricht vom Client kriegt, das dan eine Variable (p_MSG()) auf 1 gesetzt wird. Diese Variable wird immer an die Clienten mitgeschikt, so können die gucken, ob der Client mit der ID überhaubteinen Nachricht an den HOST geschickt hat... Hier der Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() Global stream,server,Port = 7777,anzahl Global P_col=10,ID=1,mapName$ Global Jump,fy# Dim p_IP(p_col) Dim p_Name$(p_col) Dim p_Port(p_col) Dim p_x(p_col) Dim p_y#(p_col) Dim p_winkel(p_col) Dim p_RI(p_col) Dim p_MSG(p_col) Dim SF(90) Dim W(90) Dim map(31,23) SetFont(LoadFont("New Times Roman",13,0,0,0)) Print "ONLINE => SmILeY FigHTerS" Print "" Print "Lade daten ..." Smiley = LoadAnimImage("gfx\Smiley.bmp",21,21,0,2):MaskImage Smiley,192,192,192:MidHandle Smiley:TFormFilter 2 Guns = LoadAnimImage("gfx\Guns.bmp",21,41,0,4):MaskImage Guns,180,180,180:MidHandle Guns TileSet = LoadAnimImage("gfx\TileSet.bmp",25,25,0,3):MaskImage TileSet,255,0,255 BackGround = LoadImage("gfx\Background.bmp") Pointer = LoadImage("gfx\Pointer.bmp"):MaskImage Pointer,255,0,255 Explosion = LoadAnimImage("gfx\Explosion30x30.bmp",30,30,0,64):MaskImage Explosion,0,0,0 Stuze = LoadAnimImage("gfx\Stutze.bmp",25,25,0,3):MaskImage Stuze,255,0,255 Print "--Figur" Print "--Waffen" Delay 100 For i = 0 To 90 SF(i) = CopyImage(Smiley) W(i) = CopyImage(Guns) RotateImage SF(i),i*4 RotateImage W(i),i*4 Next FreeImage Smiley FreeImage Guns Print "--Map" Delay 100 Read MapName For y = 0 To 23 For x = 0 To 31 Read map(x,y) Next Next Print "Fertig ! Alle Daten geladen !" Print "Map : "+MapName Delay 2500 Print "(1) => HOST" Print "(2) => JOIN" Repeat If KeyHit(1) Then End If KeyHit(2) Then Server=1:Exit If KeyHit(3) Then Server=0:Exit Forever If Server = 1 EmpfangPort = 8000 Print ">>> HOST" Print "Gib bitte deinen Name ein !" Delay 1000 FlushKeys() p_name(1) = Input("(>)") If p_name(1) = "" Then Print "Du hast keinen Namen eingegeben ! Dein Name ist nun "+Chr(34)+"NoName"+Chr(34)+" !" p_name(1) = "NoName" EndIf Delay 1000 Print "Okay...." Print "Erstelle ein Spiel ..." stream = CreateUDPStream(Port) Delay 1000 If stream = 0 Then Color 255,0,0:Print "Spiel konnte nicht erstellt werden !":Delay 2000:End Print "Spiel erstellt !" Print "Warte auf andere Spieler..." AppTitle "SmILeY FigHTerS -online- (Server)" FlushKeys() Repeat If KeyHit(1) Then End If RecvUDPMsg(stream) And ReadByte(stream) = 1 If ID < p_col ID = ID + 1 p_Name(ID) = ReadString(stream) p_IP(ID) = UDPMsgIP(stream) p_Port(ID) = UDPMsgPort(stream) Print p_name(ID)+" ist in dein Spiel eingetreten ! (ID : "+ID+"/IP : "+DottedIP(p_IP(ID))+"/Port : "+p_Port(ID)+")" WriteByte(stream,1) WriteInt(stream,ID) WriteString(stream,p_name(1)) SendUDPMsg(stream,p_IP(ID),p_port(ID)) Delay 100 Else pp = UDPMsgPort(stream) pp2= UDPMsgIP(stream) WriteByte stream,p_col+1 SendUDPMsg(stream,pp2,pp) EndIf EndIf Until KeyHit(28) anzahl = ID ID = 1 For i = 2 To anzahl WriteString(stream,"Los") WriteInt(stream,anzahl) For j = 1 To anzahl WriteString(stream,p_name(j)) Next SendUDPMsg(stream,p_IP(i),p_Port(i)) Next Else Print ">>> JOIN" Print "Gib bitte die HOST-IP ein !" Delay 1000 FlushKeys() IpIp$ = Input("(>)") If IpIp$ = "" Then IpIp$ = "127.0.0.1" p_IP(1) = INT_IP(IpIp) Print "Gib bitte deinen Name ein !" Delay 1000 FlushKeys() name$ = Input("(>)") If name$ = "" Then Print "Du hast keinen Namen eingegeben ! Dein Name ist nun "+Chr(34)+"NoName"+Chr(34)+" !" name$ = "NoName" EndIf Delay 1000 FlushKeys() Print "Verbinde mit Host ..." stream = CreateUDPStream() Delay 1000 If stream = 0 Then Color 255,0,0:Print "Verbindung konnte nicht aufgebaut werden !":Delay 2000:End WriteByte(stream,1) WriteString(stream,name$) SendUDPMsg(stream,p_IP(1),Port) Print "Warte auf Antwort ..." Delay 1000 Repeat If KeyHit(1) Then End pp = RecvUDPMsg(stream) Until pp <> 0 pp = ReadByte(stream) If pp = 1 Then ID = ReadInt(stream) p_name(1) = ReadString(stream) p_IP(1) = UDPMsgIP(stream) p_name(ID)= name$ ElseIf pp = p_col+1 Color 255,0,0 Print "Zu viele Spieler !" Delay 2000 End EndIf Print "Der Server hat geantwortet !" Print "Name : "+p_name(1) Delay 1000 Print "Warte auf Spielstart ..." Delay 100 AppTitle "SmILeY FigHTerS -online- (Client)" Repeat If KeyHit(1) Then End pp = RecvUDPMsg(stream) Until pp <> 0 And ReadString(stream) = "Los" anzahl = ReadInt(stream) For i = 1 To anzahl p_name(i) = ReadString(stream) Next EndIf Print "Es geht los !" If Server = 1 Then p_MSG(1) = 1 Timer = MilliSecs() Repeat ox = p_x(ID):oy = p_y(ID) p_winkel(ID) = -ATan2(MouseX()-p_x(ID),MouseY()-p_y(ID))+180 If p_winkel(ID) < 0 Then p_winkel(ID) = 360 If p_winkel(ID) > 360 Then p_winkel(ID) = 0 If p_winkel(ID) => 0 And p_winkel(ID) < 180 Then p_RI(ID) = 0 If p_winkel(ID) => 180 And p_winkel(ID) <= 360 Then p_RI(ID) = 1 If KeyDown(30) Then p_x(ID) = p_x(ID) - 2 If KeyDown(32) Then p_x(ID) = p_x(ID) + 2 If KeyHit(17) And Jump < 2 Then Jump = Jump + 1:fy = 13 If Jump > 0 Then fy = fy - 0.9 p_y(ID) = p_y(ID) - fy Else fy = fy + 0.9 p_y(ID) = p_y(ID) + fy EndIf If p_x(ID) < 10 Then p_x(ID) = 10 If p_x(ID) > 790 Then p_x(ID) = 790 For xx = 0 To 31 For yy = 0 To 23 DrawImage TileSet,xx*25,yy*25,map(xx,yy) If map(xx,yy) > 0 If RectsOverlap(p_x(ID)-10,p_y(ID)-12,20,1,xx*25,yy*25,25,25) Then fy = 0:p_y(ID) = oy If RectsOverlap(p_x(ID)-10,p_y(ID)+12,20,1,xx*25,yy*25,25,25) Then Jump = 0:fy = 0:p_y(ID) = oy If RectsOverlap(p_x(ID)-12,p_y(ID)-10,1,20,xx*25,yy*25,25,25) Then p_x(ID) = ox If RectsOverlap(p_x(ID)+12,p_y(ID)-10,1,20,xx*25,yy*25,25,25) Then p_x(ID) = ox EndIf Next Next If RecvUDPMsg(stream) <> 0 If ReadAvail(stream) If Server = 1 Then ID_ID = ReadInt(stream) p_x(ID_ID) = ReadInt(stream) p_y(ID_ID) = ReadInt(stream) p_winkel(ID_ID) = ReadInt(stream) p_RI(ID_ID) = ReadInt(stream) p_MSG(ID_ID) = 1 Else For i = 1 To anzahl p_MSG(i) = ReadInt(stream) If p_MSG(i) = 1 p_x(i) = ReadInt(stream) p_y(i) = ReadInt(stream) p_winkel(i) = ReadInt(stream) p_RI(i) = ReadInt(stream) EndIf Next EndIf EndIf EndIf If timer <= MilliSecs() - 30 Then If Server = 1 For i = 2 To anzahl For j = 1 To anzahl WriteInt(stream,p_MSG(j)) WriteInt(stream,p_x(j)) WriteInt(stream,p_y(j)) WriteInt(stream,p_winkel(j)) WriteInt(stream,p_RI(j)) SendUDPMsg(stream,p_IP(i),p_Port(i)) If j > 1 p_MSG(j) = 0 Next Next Else WriteInt(stream,ID) WriteInt(stream,p_x(ID)) WriteInt(stream,p_y(ID)) WriteInt(stream,p_winkel(ID)) WriteInt(stream,p_RI(ID)) SendUDPMsg(stream,p_IP(1),Port) EndIf timer = MilliSecs() EndIf For i = 1 To anzahl DrawImage SF(p_winkel(i)/4),p_x(i),p_y(i),p_RI(i) DrawImage W(p_winkel(i)/4),p_x(i),p_y(i),p_RI(i) Color 255,0,0:Text p_x(i),p_y(i)-20,p_name(i),1,0:Color 255,255,255 Next Flip Cls Until KeyHit(1) Function INT_IP(IP$) A1 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A2 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A3 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A4 = Int(IP$) Return (A1 Shl 24) + (A2 Shl 16) + (A3 Shl 8 ) + A4 End Function .MapData Data "Geometric" Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 Troztdem kann iwie nur der HOST alle Daten fehlerfrei erkennen, der CLIENT aber net .... Warum ? thx und mfg Crack93 |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Könntest du den Code endlich formatieren?
Falls nicht, möchte ich dich bitten, dass du dich alleine damit auseinander setzt, der grauselcode ist definitiv nicht akzeptabel bie der Länge des Codes |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay okay.... Hier hab ich mit mal 10 minuten beschäftigt :
Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() Global stream,server,Port = 7777,anzahl Global P_col=10,ID=1,mapName$ Global Jump,fy# Dim p_IP(p_col) Dim p_Name$(p_col) Dim p_Port(p_col) Dim p_x(p_col) Dim p_y#(p_col) Dim p_winkel(p_col) Dim p_RI(p_col) Dim p_MSG(p_col) Dim SF(90) Dim W(90) Dim map(31,23) SetFont(LoadFont("New Times Roman",13,0,0,0)) Print "ONLINE => SmILeY FigHTerS" Print "" Print "Lade daten ..." Print "--Images ..." Delay 100 Smiley = LoadAnimImage("gfx\Smiley.bmp",21,21,0,2):MaskImage Smiley,192,192,192:MidHandle Smiley:TFormFilter 2 Guns = LoadAnimImage("gfx\Guns.bmp",21,41,0,4):MaskImage Guns,180,180,180:MidHandle Guns TileSet = LoadAnimImage("gfx\TileSet.bmp",25,25,0,3):MaskImage TileSet,255,0,255 BackGround = LoadImage("gfx\Background.bmp") Pointer = LoadImage("gfx\Pointer.bmp"):MaskImage Pointer,255,0,255 Explosion = LoadAnimImage("gfx\Explosion30x30.bmp",30,30,0,64):MaskImage Explosion,0,0,0 Stuze = LoadAnimImage("gfx\Stutze.bmp",25,25,0,3):MaskImage Stuze,255,0,255 Print "--Figur" Print "--Waffen" Delay 100 For i = 0 To 90 SF(i) = CopyImage(Smiley) W(i) = CopyImage(Guns) RotateImage SF(i),i*4 RotateImage W(i),i*4 Next FreeImage Smiley FreeImage Guns Print "--Map" Delay 100 Read MapName For y = 0 To 23 For x = 0 To 31 Read map(x,y) Next Next Print "Fertig ! Alle Daten geladen !" Print "Map : "+MapName Delay 2500 Print "(1) => HOST" Print "(2) => JOIN" Repeat If KeyHit(1) Then End If KeyHit(2) Then Server=1:Exit If KeyHit(3) Then Server=0:Exit Forever If Server = 1 Print ">>> HOST" Print "Gib bitte deinen Name ein !" Delay 1000 FlushKeys() p_name(1) = Input("(>)") If p_name(1) = "" Then Print "Du hast keinen Namen eingegeben ! Dein Name ist nun "+Chr(34)+"NoName"+Chr(34)+" !" p_name(1) = "NoName" EndIf Delay 1000 Print "Okay...." Print "Erstelle ein Spiel ..." stream = CreateUDPStream(Port) Delay 1000 If stream = 0 Then Color 255,0,0:Print "Spiel konnte nicht erstellt werden !":Delay 2000:End Print "Spiel erstellt !" Print "Warte auf andere Spieler..." AppTitle "SmILeY FigHTerS -online- (Server)" FlushKeys() Repeat If KeyHit(1) Then End If RecvUDPMsg(stream) And ReadByte(stream) = 1 If ID < p_col ID = ID + 1 p_Name(ID) = ReadString(stream) p_IP(ID) = UDPMsgIP(stream) p_Port(ID) = UDPMsgPort(stream) Print p_name(ID)+" ist in dein Spiel eingetreten ! (ID : "+ID+"/IP : "+DottedIP(p_IP(ID))+"/Port : "+p_Port(ID)+")" WriteByte(stream,1) WriteInt(stream,ID) WriteString(stream,p_name(1)) SendUDPMsg(stream,p_IP(ID),p_port(ID)) Delay 100 Else pp = UDPMsgPort(stream) pp2= UDPMsgIP(stream) WriteByte stream,p_col+1 SendUDPMsg(stream,pp2,pp) EndIf EndIf Until KeyHit(28) anzahl = ID ID = 1 For i = 2 To anzahl WriteString(stream,"Los") WriteInt(stream,anzahl) For j = 1 To anzahl WriteString(stream,p_name(j)) Next SendUDPMsg(stream,p_IP(i),p_Port(i)) Next Else Print ">>> JOIN" Print "Gib bitte die HOST-IP ein !" Delay 1000 FlushKeys() IpIp$ = Input("(>)") If IpIp$ = "" Then IpIp$ = "127.0.0.1" p_IP(1) = INT_IP(IpIp) Print "Gib bitte deinen Name ein !" Delay 1000 FlushKeys() name$ = Input("(>)") If name$ = "" Then Print "Du hast keinen Namen eingegeben ! Dein Name ist nun "+Chr(34)+"NoName"+Chr(34)+" !" name$ = "NoName" EndIf Delay 1000 FlushKeys() Print "Verbinde mit Host ..." stream = CreateUDPStream() Delay 1000 If stream = 0 Then Color 255,0,0:Print "Verbindung konnte nicht aufgebaut werden !":Delay 2000:End WriteByte(stream,1) WriteString(stream,name$) SendUDPMsg(stream,p_IP(1),Port) Print "Warte auf Antwort ..." Delay 1000 Repeat If KeyHit(1) Then End pp = RecvUDPMsg(stream) Until pp <> 0 pp = ReadByte(stream) If pp = 1 Then ID = ReadInt(stream) p_name(1) = ReadString(stream) p_IP(1) = UDPMsgIP(stream) p_name(ID)= name$ ElseIf pp = p_col+1 Color 255,0,0 Print "Zu viele Spieler !" Delay 2000 End EndIf Print "Der Server hat geantwortet !" Print "Name : "+p_name(1) Delay 1000 Print "Warte auf Spielstart ..." Delay 100 AppTitle "SmILeY FigHTerS -online- (Client)" Repeat If KeyHit(1) Then End pp = RecvUDPMsg(stream) Until pp <> 0 And ReadString(stream) = "Los" anzahl = ReadInt(stream) For i = 1 To anzahl p_name(i) = ReadString(stream) Next EndIf Print "Es geht los !" Timer = MilliSecs() Repeat ox = p_x(ID):oy = p_y(ID) p_winkel(ID) = -ATan2(MouseX()-p_x(ID),MouseY()-p_y(ID))+180 If p_winkel(ID) < 0 Then p_winkel(ID) = 360 If p_winkel(ID) > 360 Then p_winkel(ID) = 0 If p_winkel(ID) => 0 And p_winkel(ID) < 180 Then p_RI(ID) = 0 If p_winkel(ID) => 180 And p_winkel(ID) <= 360 Then p_RI(ID) = 1 If KeyDown(30) Then p_x(ID) = p_x(ID) - 2 If KeyDown(32) Then p_x(ID) = p_x(ID) + 2 If KeyHit(17) And Jump < 2 Then Jump = Jump + 1:fy = 13 If Jump > 0 Then fy = fy - 0.9 p_y(ID) = p_y(ID) - fy Else fy = fy + 0.9 p_y(ID) = p_y(ID) + fy EndIf If p_x(ID) < 10 Then p_x(ID) = 10 If p_x(ID) > 790 Then p_x(ID) = 790 For xx = 0 To 31 For yy = 0 To 23 DrawImage TileSet,xx*25,yy*25,map(xx,yy) If map(xx,yy) > 0 If RectsOverlap(p_x(ID)-10,p_y(ID)-12,20,1,xx*25,yy*25,25,25) Then fy = 0:p_y(ID) = oy If RectsOverlap(p_x(ID)-10,p_y(ID)+12,20,1,xx*25,yy*25,25,25) Then Jump = 0:fy = 0:p_y(ID) = oy If RectsOverlap(p_x(ID)-12,p_y(ID)-10,1,20,xx*25,yy*25,25,25) Then p_x(ID) = ox If RectsOverlap(p_x(ID)+12,p_y(ID)-10,1,20,xx*25,yy*25,25,25) Then p_x(ID) = ox EndIf Next Next For i = 1 To anzahl DrawImage SF(p_winkel(i)/4),p_x(i),p_y(i),p_RI(i) DrawImage W(p_winkel(i)/4),p_x(i),p_y(i),p_RI(i) Color 255,0,0:Text p_x(i),p_y(i)-20,p_name(i),1,0:Color 255,255,255 Next Flip Cls Until KeyHit(1) Function INT_IP(IP$) A1 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A2 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A3 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A4 = Int(IP$) Return (A1 Shl 24) + (A2 Shl 16) + (A3 Shl 8 ) + A4 End Function .MapData Data "Geometric" Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 (Ich hatte aber schon das senden und empfangen von Nachrichten rausgenommen,weil ich das nochmal von anfang an machen muss ![]() thx und mfg Crack93 |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sry wegen Doppelpost :
Habs gelöst ! Es lag an folgender Zeile : Code: [AUSKLAPPEN] If timer <= MilliSecs() - 30 Then
If Server = 1 For i = 2 To anzahl For j = 1 To anzahl WriteInt(stream,p_MSG(j)) WriteInt(stream,p_x(j)) WriteInt(stream,p_y(j)) WriteInt(stream,p_winkel(j)) WriteInt(stream,p_RI(j)) SendUDPMsg(stream,p_IP(i),p_Port(i)) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Next Next Else WriteInt(stream,ID) WriteInt(stream,p_x(ID)) WriteInt(stream,p_y(ID)) WriteInt(stream,p_winkel(ID)) WriteInt(stream,p_RI(ID)) SendUDPMsg(stream,p_IP(1),Port) EndIf timer = MilliSecs() EndIf Es hätte so heißen müssen : Code: [AUSKLAPPEN] If timer <= MilliSecs() - 30 Then
If Server = 1 For i = 2 To anzahl For j = 1 To anzahl WriteInt(stream,p_MSG(j)) WriteInt(stream,p_x(j)) WriteInt(stream,p_y(j)) WriteInt(stream,p_winkel(j)) WriteInt(stream,p_RI(j)) Next SendUDPMsg(stream,p_IP(i),p_Port(i)) Next Else WriteInt(stream,ID) WriteInt(stream,p_x(ID)) WriteInt(stream,p_y(ID)) WriteInt(stream,p_winkel(ID)) WriteInt(stream,p_RI(ID)) SendUDPMsg(stream,p_IP(1),Port) EndIf timer = MilliSecs() EndIf mfg Crack93 |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group