Moin,
gerne gehe ich nachfolgend auf deinen Beitrag ein
Habe diesen Thread hier beim Durchgoogeln des Webz gefunden, auf der Suche nach "Anti-GameSpy-Projekten". Ich muss sagen - Coole Sache! Das Programm sieht ziemlich vielversprechend aus!
Danke, es ist nur eine Kleinigkeit, aber wenn sie erst einmal ausgereift ist sollte alles zufriedenstellend funktionieren!
Ich habe auch mal auf Gametoast geguckt, was die da so treiben bezüglich GameSpy. [RDH]Zerted (1.3 Patch u.a.) hat sich diesbezüglich mal gemeldet und klang ziemlich zuversichtlich, dass man sogar die Serverliste im Spiel mit Daten von außen füttern könnte.
Das habe ich bereits auch ausprobiert. Es gäbe wohl einige Möglichkeiten, unter anderem einfach die Daten "injizieren", jedoch fehlen mir dafür die nötigen Kenntnisse. Ich wollte am Anfang die Masterserver von Gamespy nachbilden und dann die Ingame-Liste direkt füttern - wenn du Ideen hast, wie ich das Protokoll am besten umsetzen kann, immer her damit. Jedoch fehlt mir die Erfahrung einer Netzwerk-Injektion.
Vor allem meinten dort aber auch einige SWBF(1)-Spieler, dass nach der GameSpy-Abschaltung von SWBF(1) (die ja bereits in der Vergangenheit liegt) selbst das Direct Connect nicht mehr funktionierte.
Ich bin zuversichtlich dass der Direct Connect funktioniert. Er hängt in keinster Weise von Gamespy ab. Es ist nicht einmal ein Gamespy-Account nötig um Online spielen zu können. Will also heißen: Es wird höchstens der CD-Key beim Server auf Gültigkeit überprüft - dennoch sollte das die Spieler nicht davon abhalten spielen zu können. Immerhin geht der Direct-Connect von mir auch im LAN ohne Internetverbindung.
Ich vermute, dein Programm stützt sich auf eben jene Funktion? Ich hab keine Ahnung wie viel Richtigkeit diese Aussage hat, wollte es aber nicht unerwähnt lassen.
Ja, tut es. Ist bisher die einfachste Möglichkeit, um innerhalb von 2 Wochen ein kleines System am Laufen zu haben Alles andere kann ja mit der Zeit kommen und sofern man jemanden findet, der sich mit so etwas besser auskennt.
Möglicherweise wäre es lohnenswert, mal den Traffic mitzulesen, den SWBF2 produziert, wenn man sich per DirectIP verbindet und guckt, ob da irgendwas GameSpy-mäßiges drinnen steckt. Keine Ahnung, ob das so einfach möglich ist (mein laienhaftes Herumprobieren mit SocketSniff (aus den Nirsoft Utilities) hat da nicht viel ergeben).
Probier mal Wireshark - damit bekommst du definitiv alles ausgelesen. Konnte aber bisher nichts auffälliges entdecken, was eine Benutzung von SWBF2 ohne Gamespy unmöglich macht. Gamespy hat meines erachtens nach nur folgende Aufgaben:
- Serverliste bereitstellen
- Statistiken für angemeldete Spieler (optional)
Da ich die Serverliste komplett ersetze sollte es also nicht das Problem sein, ohne Gamespy zu zocken.
Ich habe es mir mal erlaubt in dem besagten Gametoast-Thread auch Werbung für dieses Projekt hier zu machen. Link: http://gametoast.com/viewtopic.php?p=503182#p503182 (gegen Ende meines etwas längeren Postings)
Ich hoffe, das ist in Ordnung? Ich finde, dass es am allerwichtigsten ist, dass man alle Möglichkeiten auslotet, die es gibt, um den SWBF2 Online Multiplayer am leben zu halten, deswegen sollte jeder von allen möglichen Möglichkeiten wissen.
Cool, Danke! Scheint als könntest du relativ gut englisch? Können wir uns mal aufm TS3 von mir treffen und mal einen Text für die englische Vorstellung meines Projektes vorbereiten?
Zu dem eigentlichen Inhalt dieses Threads: Ich glaube ich hab nen - minor - Bug gefunden
Wenn man die Serverliste einmal nach Spieleranzahl sortiert und dann wieder umsortiert (damit wieder die größte Spieleranzahl oben erscheint), funktioniert die Sortierung nicht richtig.
Richtig, die Standard-Komponenten von Lazarus sortieren nach dem Alphabet. Mir ist bisher noch keine nette Quick n' Dirty Möglichkeit eingefallen, nach Zahlen zu sortieren. Sobald ich dafür eine Möglichkeit gefunden habe wird die Sortierung wieder aktiviert...
Da meine Neugierde überquillt: Wie genau bekommt dein Programm die Daten der Server? Es stehen ja schon einige drinnen. Hast du die manuell hinzugefügt bisher, oder wie machst du das? (Wenn ich jetzt einen Server erstellen würde, würde er noch nicht automatisch erkannt werden, oder?!)
Im Prinzip will ich den Masterserver erstetzen. Da ich nun aber nicht bei jedem Hosting-Provider klingeln kann um umständlich per DNS die ehemaligen Hostnamen von Gamespy auf meine IP umleiten zu lassen begnüge ich mich damit eine Datenbank mit Servern manuell zu füllen - sprich jeder Serveradministrator muss seinen Server einmal händisch hinzufügen. Anschließend wird er in regelmäßigen Intervallen geprüft. Falls sich Spieler darauf befinden wird der Server häufiger abgefragt (für den Fall das Spieler connecten oder leaven), ist der Server leer wird er nur ca. alle 10 Minuten abgefragt. Auf diese Art und Weise spare ich Traffic.
Natürlich könnte ich auch meinem Client alle Server abfragen lassen, aber das würde den Traffic der Gameserver-Provider erhöhen und ich hätte keine netten Statistik-Daten
Über eine HTTP-Schnittstelle hole ich die Daten im JSON-Array ab und lese sie in meinem Programm ein. Letztendlich entsteht dann diese nette kleine Liste und man kann sich mit den entsprechenden Servern verbinden.
PS: Im dritten Build funktioniert die Sortierung garnicht mehr, hast du das rausgenommen, oder ist das unabsichtlich?
Absicht - siehe Antwort oben
Falls du jemanden kennst, der relativ gut unter Windows programmieren kann (bin regulär von Hobby Web-Developer und habe als Linux-Freak wenig für Windows über) kann dieser auch gerne die Programmierung eines Serverbrowsers übernehmen. Ich gebe mir aber soviel Mühe ich kann.
Gerade bin ich übrigens dabei Unterstützung für Battlefield 2 einzubauen - im Gegensatz zu Battlefront 2 benötigt man dort sehr wohl einen Gamespy Account. Jedoch habe ich schon einen Ersatz-Server gebastelt und muss diesen nur noch unter Linux kompilieren können. Dann kann man sich Ingame in Battlefield 2 einen Account anlegen und sich wie gewohnt einloggen - und online spielen
---------------------
Build 04
---------------------
Was ist neu im Build 04?
- Anzeige der Version des Servers
- Möglichkeit eigene Gameserver hinzuzufügen (man muss den Queryport angeben, der Gameport wird automatisch ermittelt)
- Auto-Reload der Serverliste (leider wird dann die Liste noch automatisch hochgescrollt)
- Battlefield 2 Connect ist nun auch möglich
Mögliche Einstellungen in der config.ini
[auth]
bf2_username=YOUR_GAMESPY_USERNAME
bf2_password=YOUR_GAMESPY_PASSWORD
[config]
reload_time=RELOAD_TIME_OF_SERVER_LIST_IN_SECONDS_DEFAULT_30
https://dl.dropboxusercontent.…esharebrowser_build_4.zip
EDIT #1:
Die Battlefield 2 Unterstützung ist nun auch gegeben. Man kann sich nun in Battlefield 2 einen neuen Account anlegen + sich mit diesem anmelden. Bitte kein wichtiges Passwort verwenden, die Passwörter werden leider im Klartext abgespeichert...
Folgende Einträge müssen dafür in die C:\windows\system32\drivers\etc\hosts Datei eingefügt werden:
176.57.179.167 swbf2pc.gamestats.gamespy.com
176.57.179.167 swbf2pc.available.gamespy.com
176.57.179.167 swbf2.available.gamespy.com
176.57.179.167 gpcm.gamespy.com
176.57.179.167 gpsp.gamespy.com
176.57.179.167 gamestats.gamespy.com
176.57.179.167 battlefield2.available.gamespy.com
EDIT #2:
Es scheint auch bei SWBF2 Probleme mit dem Direct-Connect zu geben. Spontan fallen mir 2 Möglichkeiten ein:
1. Versuchen das LAN-UDP-Protokoll zu decrypten - damit man ein Programm abrichten kann, welches auf dieses LAN-Protokoll antwortet und als Absender die jeweiligen Server-IPs angibt
2. Versuchen das Masterserver-Protokoll zu decrypten und darüber dann die Kommunikation abhalten.
Je nach dem wäre dann der LAN-Browser oder Internet-Browser nutzbar
Problem: Erst einmal den XOR-Key?! herausfinden... Anbei eine Packettracer-Datei für diejenigen, welche mir hoffentlich den LAN-Teil entschlüsseln können...
10.0.0.35 = CLIENT
10.0.0.30 = SERVER
https://dl.dropboxusercontent.…48/swbf2/swbf2_lan.pcapng
EDIT #3
Battlefield 2 funktioniert "ohne Internetanbindung" perfekt. Ich kann mich zu meinem eigenen Auth-Server verbinden und anschließend per Direkt Connect auf den Server. Es scheint also derzeit nur SWBF2 das Problem zu haben...
Würde mich über jede Mithilfe freuen, denn das übersteigt so langsam meine Kenntnisse im Bereich Netzwerk-Sniffing und Verschlüsselung