3D UDP Problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ToeB

Betreff: 3D UDP Problem

BeitragFr, Feb 08, 2008 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wollte mal wasa übers internet in 3D machen, nur ich krig iwie die Daten nicht rübergeschickt... Woran liegt das ? Was mache ich falsch ?

Code: [AUSKLAPPEN]
Graphics3D 800,600,16,1
SetBuffer BackBuffer()

Dim name$(1)

Color 0,255,150
Print "3D EgoShooter ONLINE"
Color 255,150,0
Delay 1000:FlushKeys()
Print "Gib bitte die IP des anderen Spielers ein ! "
Color 150,0,255
Global IP = INT_IP(Input("[>]"))
Color 255,150,0
Print "Gib bitte deinen gewünschten Name ein !"
Color 150,0,255
name(0) = Input("[>]")
Color 150,255,50
Print ""
Print "IP   : "+DottedIP(IP)
Print "Name : "+name(0)
Color 255,150,0
Print "Erstelle ein Spiel ..."
Global stream = CreateUDPStream(8000)
Delay 1000
If stream <> 0
Print "Spiel Erstellt !"
Print "Sende Paket alle 30ms"
Delay 1000
Else
Color 255,0,0
Print "Spiel konnte nicht erstellt werden !"
Print "Timeout !"
Delay 3000
End
EndIf
If KeyHit(1) Then End

Global c = CreateCamera()
Global mm = LoadMesh("Models\Fig1.b3d"):ScaleEntity mm,0.05,0.05,0.05
Global send_ms = MilliSecs()
Repeat
TurnEntity c,MouseYSpeed()/3,0,0
TurnEntity c,0,-MouseXSpeed()/3,0,0
If KeyDown(17) Then MoveEntity c,0,0,0.1
MoveMouse 400,300
UpdateWorld()
RenderWorld()
If send_ms <= MilliSecs() - 30 Then
WriteByte(stream,1)
WriteFloat(stream,EntityX(c))
WriteFloat(stream,EntityY(c))
WriteFloat(stream,EntityZ(c))
WriteFloat(stream,EntityPitch(c))
WriteFloat(stream,EntityYaw(c))
WriteFloat(stream,EntityRoll(c))
SendUDPMsg(stream,IP,8000)
send_ms = MilliSecs()
EndIf
If RecvUDPMsg(stream) Then
byte = ReadByte(stream)
Select Byte
Case 1
x = ReadFloat(stream)
y = ReadFloat(stream)
z = ReadFloat(stream)
p = ReadFloat(stream)
yw = ReadFloat(stream)
r = ReadFloat(stream)
PositionEntity mm,x,y,z
RotateEntity mm,p,yw,r
End Select
EndIf
Flip
Cls
Until KeyHit(1)
End


Function INT_IP(IP_$)
   
   If CountB(IP_$,".") = 3
      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
   Else
      Return 0
   EndIf
   
End Function

Function CountB(tt$,Zeich$)
Local Count = 0
For i = 1 To Len(tt)
If Mid(tt$,i,1) = Zeich$ Then Count = Count + 1
Next
Return Count
End Function   

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

BeitragFr, Feb 08, 2008 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
ist beim Server der UDP Port im Router auf die Server Maschine geforwardet?
Weil ohne wird UDP nicht durch den router durchkommen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

ToeB

BeitragFr, Feb 08, 2008 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie "geforwardet" ? Was ist das und was mus ich da machen ?

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

BeitragFr, Feb 08, 2008 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Das heisst alle UDP packete die auf einem bestimmten Port am Router ankommen müssen weitergeleitet werden an den Server.

Für das wie, lies einfach deine Router anleitung, das ist auf jedem Router anders.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

ToeB

BeitragFr, Feb 08, 2008 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Das komische ist aber dass ich schonmal was mit UDP gemacht habe, auch mit dem Port 8000 und es hat funtzioniert.... Warum dass nicht ?
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

BeitragFr, Feb 08, 2008 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
weiss ich nicht, finds raus, du bist der entwickler Smile

das Portforwarding muss auf dem Server eingerichtet sein, nicht beim User. Das nur so am Rande.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group