UDP Probleme bei Cube Game

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

GearTechDE

ehemals 'KillerJo96'

Betreff: UDP Probleme bei Cube Game

BeitragDo, Jun 09, 2011 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich möchte jetzt mal endlich mit UDP anfangen und habe da schon einiges an Problemen und Fragen.
Ich fange einfach mal mit meinem Projekt an, was ich wirklich verwirklichen möchte. Voraus möchte ich noch sagen, dass ich mit der SimpleUDP von ToeB überhaupt nicht klarkomme und alles deshalb so lernen möchte, ohne externe Hilfe etc. Ihr wisst was ich meine!

1. Ich möchte mir einen Server erstellen, wo dann am Anfang drin steht, dass er gestartet wurde und der UDP Stream erfolgreich erstellt wurde auf Port 6543.
2. Der Server sollte außerdem mit Print ausgeben, wenn ein neuer Client joint und dessen IP Adresse.
3. Dann soll für jeden Client der sich einloggt, ein Würfel erstellt werden, wo die IP Adresse des Clients drüber steht oder ein Name wenn das geht.
4. Die Koordinaten sollen die ganze Zeit hin und her gesendet werden, zwischen Server und Client.
5. Was also passieren soll, das jeder Client der Joint vom Server immer die Koordinaten von den anderen Clients bekommt, sodass man da mit sag ich mal 10 Cubes oder so rumlaufen kann xD

Ich hoffe so was dauert nicht 5 Stunden oder so, dann hab ich mich da wirklich getäuscht.

Also, was ich jetzt für Fragen habe:

Ich kann mit CreateUDPStream einen UDP Stream errichten, aber wie kann man den denn dann abrufen. Ich glaube das hab ich nicht wirklich verstanden. Wie z.B. bei TCP. Da kann man ja auch CreateTCPStream und OpenTCPStream.
Wie geht das bei UDP?

Mein bisheriges Projekt besteht aus folgenden Daten:

Client.bb -> Mein Projekt, wo jetzt ein Würfel erstellt wird und man den mit W,A,S,D rumsteuren kann, während die Kamera folgt.
Server.bb -> Stehen nur Kommentare drinne weil ich das nicht hinkriege Sad
MultiplayerSettings.bb -> Hier sollen dann die Multiplayer Sachen rein, damit das Game damit läuft, Krieg ich natürlich überhaupt nicht hin. Sad(
Functions.bb steht eine Funktion drin, die ich nicht kapiere.

Inhalt: Client.bb
BlitzBasic: [AUSKLAPPEN]

;
;Client
;

;Hier habe ich den kleinen Einzelspieler Test schon programmiert.
;Er soll jetzt in Multiplayer verwandelt werden und mit dem beigelegten Server.bb Datei kommunizieren.
;Es soll beim start eine Frage kommen, wo drin steht welche IP man joinen möchte. Dann wird gejoint aber nur wenn der server existiert.
;Und ein Cube als Spieler soll für jeden Client erstellt werden.
;Koordinaten jedes Clients sollen an den Server gesendet und von dort aus an alle anderen Clients gesendet werden.

;Start

Graphics3D 800,600,16,2
SetBuffer BackBuffer()

;Include
Include ".\Include\MultiplayerSettings.bb"
Include ".\Include\Functions.bb"
;Include

;Spieler
Player = CreateCube()
;Spieler

;Kamera
MainCam = CreateCamera()
EntityParent MainCam,Player
PositionEntity MainCam,0,3,-5
RotateEntity MainCam,20,0,0
;Kamera

;Boden
Terrain = CreateCube()
ScaleEntity Terrain,50,0.1,50
Grass = LoadTexture("grass.png")
EntityTexture Terrain,Grass
ScaleTexture Grass,-0.1,-0.1
;Boden

;Main Loop
While Not KeyHit(1)

If KeyDown(17) Then MoveEntity Player,0,0,0.05
If KeyDown(31) Then MoveEntity Player,0,0,-0.05
If KeyDown(32) Then TurnEntity Player,0,-1,0
If KeyDown(30) Then TurnEntity Player,0,1,0

RenderWorld()
UpdateWorld()
Flip
Wend
End
;Main Loop


Inhalt: Server.bb
BlitzBasic: [AUSKLAPPEN]

;
;Dragon Legends | Server
;

;Das ist der externe Server von Dragon Legends.
;Ich möchte, dass er einen UDP Stream startet und wenn ein Client verbindet, eine Nachricht hier ausgegeben wird, wer gejoint hat.
;Und der Server soll immer die Koordinaten aller Spieler an alle Clients weiterverbinden.
;Könnte mir das einer machen?
;Dadurch will ich UDP erlernen. Ich kann leider nicht learning by doing, ich kann besser lernen wenn ich es vor mir habe und studiere.


Inhalt: MultiplayerSettings.bb
BlitzBasic: [AUSKLAPPEN]

;
;MultiplayerSettings.bb
;

;Global
Global stream
Global mx#,my#,mz#
Global gegnerX#,gegnerY#,gegnerZ#,gegnerIP,gegnerPORT,gegnerDOT$
Global server = Input("Server Erstellen(1) / Server Beitreten(2): ")
;Global

;ServerCode
If server = 1 Then
stream = CreateUDPStream(6543)
ElseIf server = 2
stream=CreateUDPStream()
gegnerDOT=Input("Server Adresse: ")
gegnerPORT=6543
gegnerIP=INT_IP(gegnerDOT)
WriteByte stream,1
SendUDPMsg stream,gegnerIP,gegnerPORT
End If
;ServerCode

;
;End Script
;

Ist wahrscheinlich nicht zu gebrauchen!!

Inhalt: Functions.bb
BlitzBasic: [AUSKLAPPEN]

;
;Functions.bb
;

;INT_IP
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
;INT_IP

;
;End Script
;


Ich wollt mir könnte jetzt mal jemand erklären wie das alles geht, und wozu diese ganzen Sachen da sind und und und.

Vielleicht könnte mir jemand das mal umsetzen, so wie ich das will damit ich daraus lerne.
Was natürlich dann noch besser wäre, das es alles gut kommentiert wird.

Ich glaube sowas darf ich hier nicht erwarten aber ich hoffe ihr könnt mir ein kleinen Einblick geben.

Lg Killerjo96
Mit freundlichen Grüßen: GearTechDE

tft

BeitragDo, Jun 09, 2011 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Hilfe bekommst du hier eigentlich immer ......... aber das beste für dich ist ( Learning by duing ). Du wirst einiges an Zeit investieren müssen um die Befehle und Ihre Funktionsweise zu verstehen. Dazu nimmst du am besten die Codes aus der Hilfe oder dem Archiv zu diesen Themen und schaust sie dir genau an. UDP ist zum einstieg nochdazu nicht wirklich geeignet. Du solltest zuerst lernen eine funktionierende Verbindung zwischen zwei Rechnern mit den Netzwerk Befehlen von Blitz herzustellen. Hast du das geschafft kannst du es mit TCP in eigen regie versuchen. Wenn du das kannst wirst du feststellen das diese Verbindung für das meiste ausreicht. Brauchst du dann schnellere Verbindungen kannst du versuchen UDP mit ein zu binden. Das hat aber so manche Logische Falle und wird dich richtig auf die Palme bringe Smile

Fiel Spass beim Lernen ... TFT
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

GearTechDE

ehemals 'KillerJo96'

BeitragDo, Jun 09, 2011 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, also was meinst du jetzt wo ich mit anfangen soll? dieses DirectPlay????
Oder TCP?

Lg Killerjo96
Mit freundlichen Grüßen: GearTechDE

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group