Host/Join mit UDP
Übersicht

![]() |
ToeBBetreff: Host/Join mit UDP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie kann ich das machen, dass ich sowas wie ein HOST/JOIN-Format habe ?
Also das ich an dem einen PC mir einen HOST erstelle und an den anderen beiden dann in das Spiel von dem ersten enklinke ? Und wie kann ich dann eine Liste aller Spieler erstellen ? Könnt ihr mir da im ansatz Hilfen geben ? 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! |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Liste von Spieler: Types
Und wenn der Host eine Nachricht von einem neuen Spieler empfängt, einfach neuen Spieler erstellen ![]() Diese Nachricht kann irgendwie aussehen. Lege dir zB ein "Protokoll" fest, wo es heißt: Wenn das erste Byte in der empfangenen Nachricht 1 ist, dann ist das ein neuer Spieler, der aufgenommen werden will. Als "Kennwerte" würde ich IP, Spielernummer, Name, was dir einfällt und was sinnvoll ist, speichern. mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hä ? Ich check dat net..... mit Types check ich shcon aber wie soll ich heruas finden
1.: Wie viele Spieler überhaubt drinne sind und 2.: Welche Positionen bzw. Texte ich von ihnen empfangen kann ? 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 ![]() |
---|---|---|
1)Also, wenn ein Spieler das Spiel betritt, sendest du eine UDP-Nachricht solange an den Server, bis dieser eine Bestätigungsnachricht zurückschickt. Der Spieler bekommt ne ID.
2)Im Spiel senden die Spieler ihre Position und den Chat UND ihre ID an den Server. Mit Writeline. Der Server liest diese mit Readline aus, ordnet es der SpielerID zu und positioniert diesen anhand der Koordinaten. |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Cool, danke !!
ich werds ausprobiren ! Aber wie kommen den die anderen Clienten an die Positionen ? thx und mfg Crack93 [EDIT] Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() AppTitle "Online Test" SeedRnd MilliSecs() SetFont(LoadFont("Arial",13)) Type s Field x,y,name$,server,IP,ID End Type Global s.s Global Port = 8000 Global server,x,y,name$,IP,Join,ID = 1 .menu Cls Color 0,150,0 Print ">>>Multiplayer" Print ">>>Menu" Color 255,255,255 Print "(1) Host" Print "(2) Join" Print "(3) Quit" Repeat If KeyHit(2) Then Gosub host If KeyHit(3) Then Gosub join If KeyHit(4) Then End Forever .host server = 1 Print "" Color 0,150,0 Print ">>>Host" Color 255,255,255 Print "Hosting...." stream = CreateUDPStream(Port) Print "Gehostet !" name$ = Input(">>>Name : ") x = Rand(100,700):y = Rand(100,500) Gosub game .join server = 0 Print "" Color 0,150,0 Print ">>>Join" Color 255,255,255 IP = INT_IP(Input(">>>HOST-IP : ")) stream = CreateUDPStream(Port) Print "Gehostet !" name$ = Input(">>>Name : ") x = Rand(100,700):y = Rand(100,500) WriteLine(stream,"[New Player]"+name$) SendUDPMsg(stream,IP,Port) Gosub game .game Repeat x = x + (KeyDown(205)-KeyDown(203))*2 y = y + (KeyDown(208)-KeyDown(200))*2 If server = 1 If RecvUDPMsg(stream) Then TT$ = ReadLine(stream) If Left(TT$,12) = "[New Player]" Then s.s = New s s\x = Rand(100,700) s\y = Rand(100,500) s\name$ = Mid(TT$,12,Len(TT$)) s\IP = UDPMsgIP(stream) s\ID = ID:ID = ID + 1 WriteLine(stream,"OK") Else ;???????????????????????????????????????????????????????????????? EndIf EndIf Else ;????????????????????????????????????????????????????????? EndIf Flip Cls Until KeyHit(1) End 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 Was soll ich jetzt dahin schreiben wo die Fragezeichen sind ? mfg Crack93 |
||
T-Moe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dein Titel ist etwas irrefuehrend, denn UDP ist verbindungslos. Folglich gibt es keine "Join" Methoden | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Moved
Bitte lies dich ein wenig ins Thema von UDP und Netzwerk Programmierung ein. Speziell solltest du dich kundig machen wie das mit den "Messages" / "Packets" funktioniert, was Spieler (Client) und MessageIDs sind und dergleichen. Denn das wirst du wissen müssen bevor du überhaupt anfangen kannst mit UDP zu arbeiten. Und du solltest daran denken, dass UDP Packete auch einfach verloren gehen können (keine Zustellgarantie) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group