Multiplayer Server auflisten
Übersicht

![]() |
MilgoBetreff: Multiplayer Server auflisten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo ![]() Ich bin dabei ein Spiel zu machen, welches auch einen Multiplayer behandeln soll. Eines meiner Ziele ist es, alle gehosteten Spiele aufzulisten, ich habe aber keine Idee wie das funktionieren soll. Ich habe mir das Robsite-Tutorial durchgelesen - mit "HostNetGame" startet man ja ein Netzwerkspiel, mit "JoinNetGame" kann ein anderer darauf zugreifen, allerdings muss bei JoinNetGame ja der Spielname und die IP vorgegeben werden. Ich würde aber gerne alle mit HostNetGame gestarteten Spiele auflisten (und das natürlich ohne die blöde DirectPlay-Box). Mir ist aufgefallen, dass ich für die IP 0 angeben kann - dann wird ein beliebiger Server gesucht, aber ich würde ja gerne wirklich mehrere Server auflisten. Ist das irgendwie möglich, oder muss ich dafür auf UDP oder dieses TCP aufweichen (wobei letzteres irgendwie nicht bei Robsite behandelt wurde?). Wenn es so einen Thread schon geben sollte steinigt mich bitte nicht, ich habe ihn dann einfach nicht gefunden. |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
UDP oder TCP. Direct Play ist langsamer, und nichtmehr ganz so modern, will ich jetzt mal sagen.
Das ganze solltest du mit einem Server machen. Dieser verwaltet die Liste der gehosteten Spiele, und alle Clients können dann dort zugreifen. Ebenso können Clients natürlich an den Server senden, dass sie ein Spiel hosten. Das ist aber ziemlich schwierig für den Anfang ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eines mal vorneweg: Wenn du noch im Robsite-"Alter" (verzeiht mir den Ausdruck) bist, dann lass die Finger von Netzwerkkrams ![]() ![]() Für später - sag ich jetzt mal, in der Hoffnung, ernstgenommen zu werden - kann ich dir empfehlen, dass ganze auf einem Server mit einem kleinen PHP-Script zu erledigen. Der Host meldet sich via TCP beim Script an, Script aktualisiert Liste, Client lädt via TCP die Liste runter - et voilà, schon hat man die Serverlist. Zusätzlich könnte man dann noch einfügen, dass die Liste auch über ein Script geladen wird, welches beim Aufruf nuch kurz alle Server aus der Liste löscht, die in den letzen ~10 Minuten nicht mehr von sich hören liessen, um Ghosts zu entfernen etc... mfG PS: Irgendwo gabs doch mal ne Liste voller Argumente gegen DirectPlay? Hat die grad jemand griffbereit? |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oder falls du wirklich noch nie vorher was damit zu tun hattest, nimm meine SimpleUDP - Lib. Die ist ähnlich aufgebaut wie Direct play, nur viel kürzere Ladezeiten, schnellere Verbindungen und eine Function ist auch dabei : UDP_CountServers. Damit kann man alles verfügbaren Spielserver im Netzwerk anzeigen lassen. Willst du die Listen Online sichtbar machen, dann musst du MySQL,php und sonstwas können (ich kanns auch net aber ich arbeite mich rein´und schreib da auch später in die Lib).
mfg ToeB |
||
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! |
![]() |
Milgo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich kann schon durchaus einiges, nur mit Netzwerk bin ich noch nicht vertraut und da wollte ich erstmal klein anfangen. ![]() ![]() ![]() |
||
![]() |
Milgo |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, habe nun eine weitere Frage zu dem Thema.
Ich würde gerne auf meinen Webspace-Server zugreifen, funktioniert leider nicht. Ich habe mir ein Stück Code aus dem Codearchiv kopiert - der funktioniert mit anderen Testseiten und erkennt deren Inhalt, aber bei meinem Server streikt die Verbindung und gibt nur 400 - Bad Request zurück. Liegt das am Server? An der PHP-Datei die aufgerufen wird? An dem Skript? ![]() Code: [AUSKLAPPEN] tcpstream = OpenTCPStream("www.milgo.de",80)
WriteLine tcpstream, "GET /index.php HTTP 1.1" WriteLine tcpstream, "Host: milgo.de" WriteLine tcpstream,"User-Agent: BB" WriteLine tcpstream,"Accept: */*" WriteLine tcpstream, "" Repeat httpline$ = ReadLine(tcpstream) Print httpline$ Until Eof(tcpstream) WaitKey() |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuchs mal so:
BlitzBasic: [AUSKLAPPEN] tcpstream = OpenTCPStream("www.milgo.de",80) Das Protokoll wird mit "HTTP/1.1" bezeichnet, nicht mit "HTTP 1.1" mfG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Milgo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke. ![]() |
||
![]() |
Milgo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm - eins verstehe ich nicht: Für UDP ist jeder Mitspieler gezwungen einen entsprechenden Port freizuschalten, wenn man hinter einem Router sitzt. Bei TCP muss der Host den entsprechenden Port freischalten. Warum kommen denn so viele (kommerzielle) Spiele damit klar, dass keine Ports freigeschaltet werden? Kann ich das auch irgendwie machen?
Gibts eigentlich auch ne vernünftige Lib wie SimpleUDP für TCP? |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du nur einen Stream für Lesen und Schreiben benutzt, klappt das auch in UDP.
Dass es nicht klappt, wenn du die Streams separierst, liegt daran, dass dein Router ja nicht weiss, was die Daten nun sollen, die da auf den Lese-Port geschickt werden, weil von diesem Port von innen noch nichts nach draussen ging ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das kann man so machen, geht aber bei vielen spielern wieder auf die Geschwindigkeit, da man immer abwarten muss bis die letzte datei zu ende versendet wurde oder eine nachricht empfangen wurde. Deshalb benutze ich dieses system :
Der Server hat einen Generellen Stream auf Port 8000. Wenn ein Client hinzukommt, erstellt der Client zwei Streams(senden/empfangen) und der Server erstellt eine verbindung zum Client (senden, empfangen macht der Port 8000). Das ist die (glaub ich) schnellste methode mit UDP nachrichten zu versenden.... Aber du must dich entscheiden... Wenn du ein benutzerfreundliches Spiel machen willst, dann nimm die o´ben genánnte methode oder nim eine DLL, z.B. enet oder wie das heißt, oder du willst eine schnelle (Fast) zufallässige verbindung, dann nehm meine Methode... Und es gibt bestimmt Libs zum thema TCP, aber eine allgemeine wie SimpleUDP wirds net geben weil TCP für so viele unterschiedliche bereíche da ist... mfg ToeB |
||
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! |
![]() |
Milgo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und warum muss man für kommerzielle Spiele keine Ports freischalten? Die arbeiten doch auch mit TCP oder UDP. Ich habe noch nie Ports freigeschaltet und habe dennoch mit vielen Spielen über das Internet spielen können - auch als Host. | ||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Client schickt dem Server (der Port ist beim Server immer offen) die Nachrichten. Die Firewall des Clients erwartet jetzt eine Nachricht vom Server, und wenn der Server dem Client dann was sendet kommt es an, ohne am Router die Ports freigeben zu müssen. | ||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Auch ist es ja so bei den Kommerziellen spielen,das der Host die Ports freigeschaltet haben muss.
mfg ToeB |
||
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