Wiimmfi-Implementierung

Aus Wiiki
Wechseln zu: Navigation, Suche
Wiimmfi-Projekt

Wiimmfi-light.svg Wiimmfi-dark.svg

Flag-de.svg   Deutschsprachige Seiten
Wiimmfi-Projekt
Konzepte
Software


Implementierung

Wiimm hat sich entschieden, den Server vorerst in PHP zu schreiben, da dies am schnellsten gehen würde. Es war aber schon von Anfang an klar, dass der Server wegen Performancegründen in C oder C++ umgeschrieben werden muss. Da es während der Entwicklung Probleme gab, ist schon einer der Server in C geschrieben worden.

NASWII/NAS-Server

NASWII ist der https basierende Login-Server. NAS ist der alte Server, welcher für den Nintendo-DS läuft und auf http basiert. Welcher genutzt wird, ist aber egal, sie können beide genutzt werden. Dieser Server ist in APACHE2 und PHP5 geschrieben.

GPCM-Server

Wenn sich die Wii zur WiFi-Connection verbindet, verbindet sich die Wii zum GPCM-Server über TCP. Die Verbindung wird erst geschlossen, wenn die Wii die WFC verlässt. Der Server wird hauptsächlich für das Austauschen von Status-Nachrichten zwischen den Clients genutzt..

Momentan besteht er aus einem PHP-Script.

GPSP-Server

GPSP wird genutzt, um Informationen über die Freunde herauszufinden. Die Wii verbindet sich einmalig über TCP. Wir haben den GPSP-Server von Nintendo genutzt, um über das Online-Formular die profile-id und Nickname-Paare abzurufen.

Dieser Server ist in PHP geschrieben.

MASTER-Server

MASTER hängt durchgehend an einem UDP-Port. Die Spiele senden ständig Statusmeldungen an diesen Server. Der Server speichert dann diese in eine spielespezifische Tabelle, von welcher die anderen Spieler über den MS-Server Informationen anfordern können. (Nächster Punkt)

Ursprünglich war dieser Server in PHP geschrieben. Im Juli 2014 wurde diePHP-Version durch eine C-Version abgelöst. Diese Umstellung brachte erhebliche Vorteile:

  • Der neue MASTER-Server benötigt viel weniger Ressourcen (<6MB RSS und <1% CPU-Last). Hochgerejcnet kann er bis zu 20 000 clients gleichzeitig verwalten.
  • Der MASTER-Server kennt nun Clients und verwendet einen internen Cache. Hierdurch wurde die Datenbank-Zugriffe auf unter 10% gemindert.
  • Der neue MASTER unterstützt generische Spieltabellen. Bisher unbekannte Datenfelder werden automatisch angelegt.

MS-Server

Das Spiel verbindet sich mit MS, wenn es Informationen von anderen Spielern haben will. Die Abfragen ähneln einer SQL-Abfrage, in welcher die Klauseln select, where und limit verwendet wird. Die Antworten des Servers werden als Ergebnistabelle geliefert und mit einem Spiele spezifischem Schlüssel verschlüsselt.

Ursprünglich war dieser Server in PHP geschrieben. Ende 2015 wurde der MS-Server in den MASTER-Server integriert. Dadurch entfallen einige Kommunikationswege über Datenbank und Sockets. Der kombinierte MASTER+MS-Server benötigt weniger als 1% der CPU-Leistung.

NATNEG-Server

NATNEG wird für die Kommunikation zweier Spieler hinter einem NAT benötigt. Die Spieler verbinden sich nur mit dem Server, wenn sie versuchen, sich mit anderen Spielern zu verbinden.

Dieser Server ist in C geschrieben. Dieser Server besitzt aber noch einen zweiten Port um spezielle UDP-Pakete zu verschicken. Diese Pakete werden mit der gefaketen Adresse des Master-Servers an den MS-Server verschickt.

SAKE-Server

Dieser Server wird für das Registrieren von Freundescodes oder das Herunterladen von Geistdaten in Mario Kart Wii benötigt.

Er wurde von Wiimm und Leseratte neu geschrieben und liefert nun kein Dummy-Mii mehr aus, sondern korrekte Miis.

RACE-Server

Der RACE-Server ist verantwortlich für die Online-Ranglisten und die Verteilung und Verwaltung von Wettbewerben.

Er wurde von Leseratte entwickelt.

GAMESTATS-Server

Dieser Server wird für manche Spiele beim Anmelden gebraucht (z.B. Super Mario Strikers Charged). Bei manchen Spielen wird dieser Server auch nur für kleinere Aufgaben genutzt. (z.B. Zuschauen und Münzwetten bei Super Smash Bros. Brawl)

Momentan arbeitet der Foren-Nutzer Ciapa an diesem Server. Dafür benötigt er Dumps, welche auf seiner Seite hochgeladen werden können.

DLS1-Server

Dieser Server wird für DLCs und den Login von manchen Spielen genutzt. (Wie Super Smash Bros. Brawl oder Pro Evolution Soccer) Er wurde von datschge entwickelt und von Ciapa modifiziert.

Dieser Server läuft mit dem Python 2 Runtime, da das Script nicht mit Python 3 klar kommt.