Hallo liebe Community,
immer wieder klagen unschuldige Mitspieler über unvollständige Serverlisten... Dies soll sich ab heute ändern !
Nun, was ihr dafür braucht ?
- Grundlegende Computerkenntnisse (sind nie verkehrt)
- Zugang zu den Port-Freigaben bzw. Weiterleitungen in eurem Router
- Gegebenenfalls Adminrechte, Task-Manage, Konsole
- Ein paar Minuten deiner Zeit
Wie soll das gehen ? Ich habe doch schon alles Mögliche versucht ... Wirst du mir vielleicht entgegnen :D
Die Antwort darauf ist relativ einfach und hat mit der eingebauten Firewall im Router zu tun. Diese blockt teilweise Pakete zu einigen Ports, weshalb z.B. Server-Informationen den Client nicht erreichen können.
(Möglicherweise blockiert die Firewall von Windows bereits die Pakete -> Programm über die Windows-Firewall kommunizieren lassen )
Wie können wir diese Blockade denn nun lösen ?
Indem wir die entsprechenden Ports im Router freigeben.
Teeworlds nutzt jedoch standardmäßig eine dynamische Portzuweisung, weshalb man gleich alle Ports freigeben müsste. Jedoch wird so die Schutz-Funktion schnell zunichte gemacht ...
Aber wer hätte gedacht, das Teeworlds bereits eine simple Config-Variable besitzt, die genau unseren Zweck eines festen Ports erfüllt ?
Die dafür notwendige Variable heißt "bindaddr" und bindet den lokalen Socket an die übergebene Adresse.
In den meisten Fällen ist die Variable nicht gesetzt, weshalb sich TW einfach einen freien Port zuweisen lässt.
Um nun den lokalen Port festzulegen, gehst du in deinen Roaming/Teeworlds-Ordner und editierst deine settings.cfg oder deine Parameter, mit denen du Teeworlds aufrufst.
(Ich empfehle letzteres, da Teeworlds die Variable NICHT wieder speichert, so dass sie beim "ordentlichen" Quit aus der settings.cfg verschwindet)
Teeworlds mit Parametern aufrufen
Das ganze kansnt du z.B. über eine Batch-Datei lösen, oder du erstellst eine Verküpfung, gehst dort auf Eigenschaften und fügst hinter Ziel ein Leerzeichen und ein.
So sieht die gesamte Zeile in Ziel bei mir so aus:
Um eine Batch-Datei zu bekommen, erstellen wir z.B. eine Text-Datei (.txt) und ändern die Endung in .bat (Falls die Endungen nicht angezeigt werden: ALT->Extras->Ordneroptionen->Ansicht->"Bekannte Dateierweiterungen ausblenden" -> Haken weg )
Dort fügen wir folgenden Code ein:
(Natürlich mit deiner Port-Nummer)
Dann die Datei noch im gleichen Order wie die Teeworlds.exe speichern.
Nun hast du beim Ausführen der Batch-Datei den Parameter immer mit dabei ;)
Das ganze ist eine ganze Adresse als Text (-> "" ), weshalb wir localhost als Adresse des eigenen PCs einfügen.
Die Port-Nummer kommt ohne weitere Leerzeichen, durch einen Doppelpunkt getrennt dahinter.
Zu beachten ist, dass der Port aus 2 Byte (16 Bits) besteht, weshalb seine Möglichkeiten auf 2^16 = 65536 begrenzt sind.
Zudem sind bestimmte Ports standardisiert, weshalb man lieber andere Ports wählen sollte.
Ich empfehle die Wahl des Portes nach dieser Liste, da so die Wahrscheinlichkeit sinkt, einen Port zu erwischen, der bereits benutzt wird.
HINWEIS: Die Ports in der Liste sind möglicherweise bereits vergeben und sollten vermieden werden !
Da die Zählung bei 0 anfängt ist der höchste mögliche Port 65535.
z.B:
(Speichern nicht vergessen ;)
Falls jedoch die Bindung an den spezifischen Port scheitert, dann sucht sich TW wie gewohnt einen freien Port, oder spuckt eine Fehlermeldung aus.
Um nun zu überprüfen, ob Teeworlds sich an den richtigen Port gebunden hat nutzen wir den Task-Manager und unsere Konsole in Verbindung mit "netstat.exe", das uns die aktuellen Verbindungen anzeigt.
Dafür müssen wir als erstes Teeworlds starten.
Im Taskmanager finden wir die Process-ID:
Um sie anzuzeigen, oben auf Ansicht->Spalten auswählen.
Und dann einen Haken bei PID setzen:
Nun wissen wir, welche ID unser Prozess hat und können ihn eindeutig zuordnen.
Im nächsten Schritt öffnen wir die Konsole (Ausführen->cmd) und geben ein: "netstat -a -n -o"
Dies sollte uns eine Übersicht der TCP und UDP Verbindungen in die Konsole drucken.
Etwas weiter unten (bei den UDP-Sockets) sollte sich nun auch unser Teeworlds-Prozess befinden.
Hier ein kleiner Ausschnitt:
Auf der rechten Seite bzw. in der rechten Spalte sind die PIDs zu sehen, während links die gebundenen Adressen zu finden sind.
Wie gewohnt steht der Port hinter den Doppelpunkten, der in diesem Beispiel gerade 65535 ist, was meinem zuvor eingestellten Port entspricht.
Falls die Port-Nummer nun von deiner übergebenen abweicht, ist es sehr wahrscheinlich, dass der Port gerade anderwaltig benutzt wird. Suche dir einfach einen neuen aus und probiere es nochmal.
Jetzt haben wir den ersten Schritt gemeistert, wir haben einen festen Port !
Der folgende Schritt ist weniger komplex, jedoch von Router zu Router unterschiedlich.
In meinem Fall handelt es sich um eine schöne Fritz!Box, jedoch sollte das ganze auf anderen Routern analog funktionieren.
Meldet euch in der Benutzeroberfläche des Routers an und geht zu den Port-Freigaben oder Weiterleitungen.
Dort erstellst du zwei neue Weiterleitungen. Eine mit dem Protokoll UDP für die Pakete der Serverinformation und eine mit dem Protokoll TCP für die Verbindung mit dem Server.
sowohl Eingangs- als auch als Ziel-Port deinen gewählten Port festlegen.
Als Ziel-Computer musst du entweder deine lokale Netzwerk-IP (kannst du über ipconfig herausfinden) angeben oder deinen Computer aus einer Liste wählen.
Beispielkonfiguration für UDP (TCP analog, lediglich Protkoll->TCP auswählen):
Nur noch auf "OK" / "Übernehmen" klicken und eigentlich sollte es das auch schon gewesen sein.
Da ich keine Probleme mit der Serverkommunikation hatte, konnte ich meine Lösung nicht testen und bitte um Rückmeldung.
Eventuell kann eine Port-Freigabe auch die Verbindung allgemein verbessern ;) (Wie gesagt, Rückmeldungen wären schön ).
Somit wünsche ich nur noch eine Gute Nacht.
Mit freundlichen Grüßen,
Pata
Achso: Für die Nutzer anderer Systeme ist dieser Vorgang ähnlich.
PS: Wer mal neugierig ist, der kann in der Port-Liste nach dem Teeworlds-Server suchen :P
immer wieder klagen unschuldige Mitspieler über unvollständige Serverlisten... Dies soll sich ab heute ändern !
Nun, was ihr dafür braucht ?
- Grundlegende Computerkenntnisse (sind nie verkehrt)
- Zugang zu den Port-Freigaben bzw. Weiterleitungen in eurem Router
- Gegebenenfalls Adminrechte, Task-Manage, Konsole
- Ein paar Minuten deiner Zeit
Wie soll das gehen ? Ich habe doch schon alles Mögliche versucht ... Wirst du mir vielleicht entgegnen :D
Die Antwort darauf ist relativ einfach und hat mit der eingebauten Firewall im Router zu tun. Diese blockt teilweise Pakete zu einigen Ports, weshalb z.B. Server-Informationen den Client nicht erreichen können.
(Möglicherweise blockiert die Firewall von Windows bereits die Pakete -> Programm über die Windows-Firewall kommunizieren lassen )
Wie können wir diese Blockade denn nun lösen ?
Indem wir die entsprechenden Ports im Router freigeben.
Teeworlds nutzt jedoch standardmäßig eine dynamische Portzuweisung, weshalb man gleich alle Ports freigeben müsste. Jedoch wird so die Schutz-Funktion schnell zunichte gemacht ...
Aber wer hätte gedacht, das Teeworlds bereits eine simple Config-Variable besitzt, die genau unseren Zweck eines festen Ports erfüllt ?
Die dafür notwendige Variable heißt "bindaddr" und bindet den lokalen Socket an die übergebene Adresse.
In den meisten Fällen ist die Variable nicht gesetzt, weshalb sich TW einfach einen freien Port zuweisen lässt.
Um nun den lokalen Port festzulegen, gehst du in deinen Roaming/Teeworlds-Ordner und editierst deine settings.cfg oder deine Parameter, mit denen du Teeworlds aufrufst.
(Ich empfehle letzteres, da Teeworlds die Variable NICHT wieder speichert, so dass sie beim "ordentlichen" Quit aus der settings.cfg verschwindet)
Das ganze kansnt du z.B. über eine Batch-Datei lösen, oder du erstellst eine Verküpfung, gehst dort auf Eigenschaften und fügst hinter Ziel ein Leerzeichen und ein.
So sieht die gesamte Zeile in Ziel bei mir so aus:
Um eine Batch-Datei zu bekommen, erstellen wir z.B. eine Text-Datei (.txt) und ändern die Endung in .bat (Falls die Endungen nicht angezeigt werden: ALT->Extras->Ordneroptionen->Ansicht->"Bekannte Dateierweiterungen ausblenden" -> Haken weg )
Dort fügen wir folgenden Code ein:
(Natürlich mit deiner Port-Nummer)
Dann die Datei noch im gleichen Order wie die Teeworlds.exe speichern.
Nun hast du beim Ausführen der Batch-Datei den Parameter immer mit dabei ;)
Das ganze ist eine ganze Adresse als Text (-> "" ), weshalb wir localhost als Adresse des eigenen PCs einfügen.
Die Port-Nummer kommt ohne weitere Leerzeichen, durch einen Doppelpunkt getrennt dahinter.
Zu beachten ist, dass der Port aus 2 Byte (16 Bits) besteht, weshalb seine Möglichkeiten auf 2^16 = 65536 begrenzt sind.
Zudem sind bestimmte Ports standardisiert, weshalb man lieber andere Ports wählen sollte.
Ich empfehle die Wahl des Portes nach dieser Liste, da so die Wahrscheinlichkeit sinkt, einen Port zu erwischen, der bereits benutzt wird.
HINWEIS: Die Ports in der Liste sind möglicherweise bereits vergeben und sollten vermieden werden !
Da die Zählung bei 0 anfängt ist der höchste mögliche Port 65535.
z.B:
(Speichern nicht vergessen ;)
Falls jedoch die Bindung an den spezifischen Port scheitert, dann sucht sich TW wie gewohnt einen freien Port, oder spuckt eine Fehlermeldung aus.
Um nun zu überprüfen, ob Teeworlds sich an den richtigen Port gebunden hat nutzen wir den Task-Manager und unsere Konsole in Verbindung mit "netstat.exe", das uns die aktuellen Verbindungen anzeigt.
Dafür müssen wir als erstes Teeworlds starten.
Im Taskmanager finden wir die Process-ID:
Um sie anzuzeigen, oben auf Ansicht->Spalten auswählen.
Und dann einen Haken bei PID setzen:
Nun wissen wir, welche ID unser Prozess hat und können ihn eindeutig zuordnen.
Im nächsten Schritt öffnen wir die Konsole (Ausführen->cmd) und geben ein: "netstat -a -n -o"
Dies sollte uns eine Übersicht der TCP und UDP Verbindungen in die Konsole drucken.
Etwas weiter unten (bei den UDP-Sockets) sollte sich nun auch unser Teeworlds-Prozess befinden.
Hier ein kleiner Ausschnitt:
Auf der rechten Seite bzw. in der rechten Spalte sind die PIDs zu sehen, während links die gebundenen Adressen zu finden sind.
Wie gewohnt steht der Port hinter den Doppelpunkten, der in diesem Beispiel gerade 65535 ist, was meinem zuvor eingestellten Port entspricht.
Falls die Port-Nummer nun von deiner übergebenen abweicht, ist es sehr wahrscheinlich, dass der Port gerade anderwaltig benutzt wird. Suche dir einfach einen neuen aus und probiere es nochmal.
Jetzt haben wir den ersten Schritt gemeistert, wir haben einen festen Port !
Der folgende Schritt ist weniger komplex, jedoch von Router zu Router unterschiedlich.
In meinem Fall handelt es sich um eine schöne Fritz!Box, jedoch sollte das ganze auf anderen Routern analog funktionieren.
Meldet euch in der Benutzeroberfläche des Routers an und geht zu den Port-Freigaben oder Weiterleitungen.
Dort erstellst du zwei neue Weiterleitungen. Eine mit dem Protokoll UDP für die Pakete der Serverinformation und eine mit dem Protokoll TCP für die Verbindung mit dem Server.
sowohl Eingangs- als auch als Ziel-Port deinen gewählten Port festlegen.
Als Ziel-Computer musst du entweder deine lokale Netzwerk-IP (kannst du über ipconfig herausfinden) angeben oder deinen Computer aus einer Liste wählen.
Beispielkonfiguration für UDP (TCP analog, lediglich Protkoll->TCP auswählen):
Nur noch auf "OK" / "Übernehmen" klicken und eigentlich sollte es das auch schon gewesen sein.
Da ich keine Probleme mit der Serverkommunikation hatte, konnte ich meine Lösung nicht testen und bitte um Rückmeldung.
Eventuell kann eine Port-Freigabe auch die Verbindung allgemein verbessern ;) (Wie gesagt, Rückmeldungen wären schön ).
Somit wünsche ich nur noch eine Gute Nacht.
Mit freundlichen Grüßen,
Pata
Achso: Für die Nutzer anderer Systeme ist dieser Vorgang ähnlich.
PS: Wer mal neugierig ist, der kann in der Port-Liste nach dem Teeworlds-Server suchen :P
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Patafix () aus folgendem Grund: Update