EmergencyX | Matchmaking für Em4

Information: The EMERGENCY community board is completely free and is financed by advertisement. Please deactivate adblocker if you use this site. Thank you!
  • Was ist das hier?
    Hey, willkommen zum Matchmakingserver für Emergency 4. Der Matchmakingserver tauscht Informationen über verfügbare Multiplayerspiele zwischen Host und Mitspielern aus.
    Die Multiplayerspiele können jetzt nicht nur in Emergency 4 selbst angesehen werden, sondern auch in Echtzeit über unsere Webseite.


    Jetzt online: Zum Serverbrowser
    Doch offline? Zum Uptimerobot


    Portfreigabe fürs Hosting von Multiplayerspielen
    - 58282 tcp
    - 12345 upd


    Was muss ich dafür tun?
    Nichts, Emergency 4 wählt automatisch den Matchmakingserver aus 8)


    Kann man helfen?
    Wir suchen weiter Mitglieder, die uns bei solchen und ähnlichen coolen Entwicklungen helfen können.


    Ein Spiel ist online sichtbar, aber wird in EM4 selbst nicht gezeigt
    Antwort - es liegt vermutlich an IPv6


    Quellcode
    https://gitlab.com/emergencyx/em4/versix - Emergency 4 HTTP API
    https://gitlab.com/emergencyx/em4/matchmaking - Emergency 4 Matchmaking



    Auch wenn wir die Spielerzahlen in der Anzeige erhöhen können, können leider weiter nur höchstens vier Spieler zusammen spielen :)

  • Wir könnten ein paar frische Köpfe an der Sache gebrauchen - hier ist ein Muster drinnen und wir müssen es finden :)



    Eine Nachricht vom Spieler mit dem Namen "aaaaa":





    Verschiedene Nachrichten, verschiedene Namen (Spielername => Nachricht):

    Code
    yanni => aaaa 00000005 00000080 4d003017879a 30c1 badb1a6404 ef7ab8
    yanni => aaaa 00000029 00000080 4d003017879a 30c1 badb1a6404 ef7ab8
    yanni => bbbb 00000038 0000008c 4d003017879a 30c1 badb1a6404 e062bb6a80
    yanni => cccc 00000026 0000008c 4d003017879a 30c1 badb1a6404 e063bb6a80
    yanni => dddd 0000002a 0000008c 4d003017879a 30c1 badb1a6404 e064bb6a80
    
    
    ybnni => aaaa 0000000c 000000d0 4d003017879a 3141 badb1a6404 e061bb6a9f2eec2d7b367aaaa8
    ybnni => bbbb 0000000b 000000c1 4d003017879a 3141 badb1a6404 ef7abbfbbbaeb15d5eeee400
    ybnni => cccc 00000011 000000d0 4d003017879a 3141 badb1a6404 e063bb6a9f2eec2d7b367aaaa8


    Was erwarten wir?
    Kompression: Möglich. Client an Server ist nicht kodiert (siehe weiter unten), die Antwort (siehe oben) leider schon.
    Verschlüsselung: Unwahrscheinlich, wiederholendes Muster


    Wird eine kodierte Nachricht wiederholt, enthält sie immer den originalen Spielernamen, auch wenn sich dieser nicht in der Lobby befindet.


    Was wissen wir über das Format?
    Im zweiten Beispiel habe ich ein immer wieder beobachtetes Format hervorgehoben:
    4 Bytes am Start jeder Übertragung markieren einen fortlaufenden Counter, er ist nicht weiter relevant in den Beispielen. uint32 ergäbe Sinn.
    4 Bytes danach scheinen die Länge der Nachricht zu kodieren. Manchmal ist ein Bitshift um 4(!) Bits nach links dabei, zum Beispiel hier, wenn der Client an den Server sendet:



    Oder auch hier nochmal, erneut, vom Client zum Server ist die Übertragung NICHT komprimiert. Der Server nimmt diese Nachricht an und sendet dann etwas im obigen Format an alle zurück.
    Sendet der Server nichts, erscheint auch die abgesendete Nachricht nicht im Chatverlauf.


    Ihr seht sehr schön, wie immer die 1 (Ascii 31) kodiert wird. Danach folgt ein 0-Byte, was an der UTF-16 Kodierung liegt.
    Weiter sieht man den Counter (8 Zeichen, 4 Bytes) und eben die verschobene Nachrichtenlänge (5, 6, 7). Das ist wohl kein Little-/Big-Edian Problem, sondern einfach nur verschoben.
    Es funktioniert jedenfalls so...


    Solltet ihr für eure Analysen mehr Informationen benötigen, meldet euch bitte und wir bemühen uns um eine Lösung.


    Vielen Dank!
    Ping @NicoB @Kreuzung @SEKboy @KillerConsti @den-fellow @Torcota @KillerConsti @Dartlak @L30 @TechPro @gerritkpunkt

  • ich bin bei sowas maßlos überfordert, wünsche euch aber gutes gelingen.


    Das einzige wo ich potentiell mithelfen kann (von all euren Plänen) ist die Portierung der Mini-mod app als webapp, da ich sowas ähnliches schon vor ewiger zeit mit einer anderen app gemacht habe


    Sry und gutes gelingen ;)


    LG


    Alte Projekte:
    Minimod -mit neuen Fahrzeugen, vielen Funktionen und überarbeiteter Kampagne
    New Creek - eine Modifikation mit amerikanischen Fahrzeugen

  • Wie schon im originalen EmergencyX Thread angekündigt, wollen wir nach und nach unser Angebot erweitern.


    Das geht schon:

    • Liveansicht - die Liste wird in Echtzeit aktualisiert
    • Banliste - anstößige Servernamen könnt ihr per PN melden

    Das kommt noch:

  • Wir wollten endlich einen Einblick haben, ob der Server denn auch genutzt wird und haben deshalb die letzten drei Tage anonym ausgewertet, wann wieviele Spieler Kontakt zum Multiplayerserver aufnehmen und wollten bei der Gelegenheit das Ergebnis mit euch teilen:



    Verwendete Spielversionen (0.4% in Version 1.0... :borg: )



    Übermittelte Sprache / Herkunft



    Spieleranzahl im zeitlichen Verlauf


    Daten die erfasst werden: Version, Sprache, Zeitpunkt des Kontakts
    Datenmenge: ~2700 Einträge
    Zeitraum: Seit dem 10.12.16, 16 Uhr


    An EMX haben wir auch weitergearbeitet, aber dazu an entsprechender Stelle bald mehr :santa:

  • Wir möchten nun nochmals ein paar Daten teilen, da die Analyse nun schon etwas länger läuft und die Daten sich nun etwas normalisiert haben, sprich einzelen Peaks ggf. ausgeglichen wurden.


    Zunächst die verteilung der verwendeten Versionen:


    Hier ist interessant zu erwähnen, dass der Anteil des aktuellsten Patches (1.3) nochmal zurück gegangen ist, wenn auch um 0,4%.



    Als nächstes ein Blick auf die Sprachen in denen Emergency gespielt wird. Hier sieht man, dass sowohl, DE als auch US Anteile von je ca 1-2% verloren haben während z. B. die englischen und spanischen Spieler einen Zuwachs verzeichnen.



    Und hier der Graph den ich persönlich am interessantesten finde: Die Anzahl der Spieler im zeitlichen Verlauf. Wieder seit 11.12. Man kann sehen, dass wir das Allzeit hoch dieser 12 Tage (vom 12.12.) nur knapp verfehlt haben. Ich bin gespannt wie sich dieser Graph über die Feiertage / Ferien entwickelt.



    Wir sind in der Tat ein bisschen Stolz darauf verkünden zu können, dass wir heute sowohl die 10.000te FMS Sitzung für BFE abgewickelt haben und ebenfalls heute die eine Millionste FMS-Nachricht bearbeitet haben. Möglicherweiße werden wir außerdem im Laufe des Abends das 10.000 Multiplayer-Spieler über den Master-Server ausliefern.


    Wir freuen uns, dass der Service so fleißig benutzt wird und wünschen allen ein frohes Fest! :)

  • Als nächstes ein Blick auf die Sprachen in denen Emergency gespielt wird. Hier sieht man, dass sowohl, DE als auch US Anteile von je ca 1-2% verloren haben während z. B. die englischen und spanischen Spieler einen Zuwachs verzeichnen.

    Über Steam gibt es nur die US-Version oder sind da die anderne Sprachen auch einstellbar? D.h. kann man davon ausgehen dass auch diverse andere Spieler als US laufen?

  • [...]
    Wir sind in der Tat ein bisschen Stolz darauf verkünden zu können, dass wir heute sowohl die 10.000te FMS Sitzung für BFE abgewickelt haben und ebenfalls heute die eine Millionste FMS-Nachricht bearbeitet haben.
    [...]


    Und dafür noch mal ein riesen Dankeschön! Ohne euren Service wären wir vermutlich nicht mehr wirklich in der Lage gewesen unser FMS Tool in diesem Rahmen bereitzustellen.


    Mich würde mal interessieren wie die Verteilung der Mods im Multiplayer aussieht, gibt es dazu auch Statistiken?

    Gesamtleitung | Organisation | Leitung Emergency Teamspeak


    41526_s.png

  • D.h. kann man davon ausgehen dass auch diverse andere Spieler als US laufen?

    Dazu kann ich tatäschlich akatuell keine definitive Analyse treffen. Das müsste man analysieren.


    Mich würde mal interessieren wie die Verteilung der Mods im Multiplayer aussieht, gibt es dazu auch Statistiken?

    Tja... Das ist in der Mache. Leider, wie bereits öfter erwähnt, sind wir sozusagen unterbesetzt. :D Sobald wir erste Ergebnisse haben, werden wir diese gerne weitergeben. :)

  • @'rotterdammi' whoops :D @AaronKl
    Es wird eine GUID mitgesendet, die ich aber bisher nicht mit in die strukturierte Analyse aufgenommen habe, weil sie nur selten wechselt, z.B.:


    80AE0E0A-5579-4015-9C1A-35F2F2CE5673 wurde seit dem 19.08. 45000x verwendet.
    9A4C534E-431F-4a17-97D4-D1682B19A054 30000x
    EDA12670-56B5-4459-BA21-D010F0E3EBA1 10000x
    8BB46398-17E7-455C-9648-C37281FBC835 1800x


    Eventuell weitere, das sind 15MB Textlog... :)Es gab keinen erkennbaren Zusammenhang zwischen Sprache, GUID und Version (trat abwechselnd in verschiedenen Konfigurationen auf).
    Zur Lokalisierung kann ich leider nicht viel sagen - das Upgrade auf 1.3.f war zum Beispiel für die Französische Version etwas größer, das könnte aber auch am Setup liegen (20kb).
    In meiner Installation (aber nicht über Steam) findet sich unter Emergency 4 Deluxe\Data\Lang nur ein de Ordner, keine andere Sprache.


    Fun fact: Um mit Emergency 2012 nicht zu interferieren, reagiert unser Server nur auf Emergency 4 und nur auf die Anfrage nach dem Matchmakingserver.
    Im Zeitraum seit dem 19.08. haben wir
    1900 Verbindungen von emergency2012 zurückgewiesen
    38 Verbindungen von theshow zurückgewiesen - mehr Infos dazu findet man auf der 16t Seite :)


    Dagegen haben wir bisher 86682 Verbindungen für Emergency 4 angenommen :thumbup:


    @Torcota
    Leider nein. Der Multiplayerserver schreibt seine Daten fleißig in eine Logdatei, an der ich seit dem letzten Release nicht mehr viel getan habe.
    Über die Zeit haben sich da 359MB Text angesammelt, die Analyse wäre ein mordsmäßiger Job fürchte ich. Wenn es sich ergibt, sollte man das auch auf eine strukturierte Ausgabe umstellen (Daten in DB, nicht einfach nur gemischt mit anderen Ausgaben in eine Textdatei schreiben...). Wenn jemand da Interesse hätte, einfach kurz melden.


    Ich guck hin und wieder rein, ob noch alles läuft und es läuft eigentlich immer ein BFEMP Spiel - macht gefühlt auch immer den größten Anteil aus (gerade 7 aus 15 Spielen) :D

  • Absolut, das hat mich auch motiviert nochmal die Daten genauer anzusehen. Ich finde das sehr beeindruckend, gemessen am Alter von EM4...


    @Torcota:
    Ein paar Zahlen konnte ich extrahieren, ich habe probiert möglichst eindeutige Daten auszuwählen.
    Die Logdatei ist zeilenbasiert. Ich habe in jeder Zeile also nach den folgenden Begriffen suchen lassen:


    "BFEMP"118449Allgemein
    "#mod=BFEMP"60727Format, das beim Abfragen der Sessions im Spiel verwendet wird (beim Laden des Serverbrowsers oder beim Klick auf Refresh)
    "Creating new session"51575Format, das beim Erstellen einer neuen Session erstellt wird.
    "server listening"480Meldung, die nach einem Absturz abgegeben wurde...


    Leider kann ich die genaue Anzahl an Sessions in Kombination mit Mods nicht so einfach extrahieren.
    Es sind aber Änderungen unterwegs, in Zukunft endlich bessere Statistiken zu erstellen.
    Schade, dass ich von den EM5 Entwicklern keine Infos mehr zur Multiplayer API erhalten konnte. Nachdem jetzt ein paar mehr Mods an den Start gehen, bin ich sehr gespannt auf die Entwicklung von EM5 in 2017 :santa:

  • Moin moin,
    es scheint so das euer Server down ist, es nicht der Test Server zu sehen, oder die Möglichkeit selber ein raum aufzumachen (hat gestern noch geklappt).
    Es erscheint eine Fehler Meldung das "Kann keine Verbindung zum Internet herstellen", über die Direkt IP geht es.


    einmal als kleinen hinweis für euch :)


    MfG Cheamp

  • Hey,


    vielen Dank für die Meldung.
    Tatsächlich hab ich seit dem ersten Alarm heute morgen 28.03.2017, 09:09 versucht den Server wieder ans Netz zu bekommen.
    Was genau passiert ist, werde ich noch aufarbeiten müssen, aber es scheint erstmal wieder alles gut zu laufen:
    https://stats.uptimerobot.com/JyLrGf1Aq


    Da waren viel zu viele Emails nötig (12 Stück...), aber etwa seit 28.03.2017, 22:30 sind wir wieder am Netz.


    Sollte es noch zu Problemen kommen, meldet euch bitte hier :)

  • Post by klaus ferrano ().

    This post was deleted by the author themselves ().
  • Hey,


    da spielt uns leider der technische Fortschritt ein bisschen entgegen.
    EM4 verfügt nach meiner Erfahrung von sich aus über keine Unterstützung für IPv6, sondern nur IPv4.
    Letzterem gehen aber die verfügbaren Adressen aus und deshalb bieten Internetanbieter zunehmend
    Dual Stack Lite an, bei dem der IPv4 Verkehr über ein NAT geleitet wird. Damit wird dir keine eigene
    IPv4 mehr zugewiesen, sondern du teilst dir eine IPv4 und ausgehende Verbindungen werden auf einen
    zufälligen Port gelegt.


    Bei der Entwicklung von EM4 wurde aber die Annahme getroffen, dass du vollständige "Kontrolle" über
    die eigene IPv4 und alle Ports hast - manche Pakete werden an fix kodierte Ports gesendet. Falls
    wir mit der NAT dazwischen aber nicht genau den richtigen Port für dich treffen können, wird das
    Paket wohl an wen anderen gesendet.


    Auf der Seite des Masterservers können wir das vermutlich beheben, denn da können wir
    den Port der NAT erkennen und statt an den üblichen Port 12345 eben an diesen antworten.
    Wenn EM4 den Masterserver nach allen verfügbaren Spielen gefragt hat, wird aber nochmal
    jeder Server in der als Antwort erhaltenen Spieleliste angefragt und über diesen Teil haben
    wir keine Kontrolle. Erhält EM4 dabei aber keine Antwort, wird das Spiel nicht angezeigt.


    Eine einfache Kontrolle ist, ob du ohne geladene Mods im Serverbrowser unseren Testserver sehen kannst.
    Du kannst nie beitreten, aber es ist die minimalste korrekte Implementierung eines EM4 Servers.
    Wenn der sichtbar ist, wirst du sehr wahrscheinlich auch andere Spiele sehen. Falls nicht,
    wird es schwieriger.


    Wir haben vor einiger Zeit nach Leuten mit genau solchen Problemen gesucht, leider hat sich nie jemand
    zurückgemeldet. Ich hab das Projekt deshalb wieder ein bisschen zurückgestellt, denn anscheinend
    war es bisher nie schlimm genug und natürlich auch mit Hamachi, Tungle, etc. lösbar.


    Dass dein Server immer in unserem Onlinebrowser gezeigt wird, liegt daran, dass EM4 hier eine ausgehende
    Verbindung aufbaut und wir eine eigene IPv4 für den Server haben, die Antwort also immer entgegen nehmen
    können. Um zu prüfen, ob das Spiel auch wirklich verfügbar ist, müssten wir danach aktiv scannen und einen
    solchen "Portknocker" wollte ich bisher noch nicht implementieren, aber vielleicht ist das was für die Zukunft.




    Unser Rework des Masterservers soll genau solche Themen etwas besser analysieren, aber das braucht Zeit,
    weil ich momentan nur Dual Stack Lite Internet bekomme und EM4 nur mit Wine unter macOS ausführen kann,
    was erstaunlich gut funktioniert, aber Analysen unnötig erschwert :)


    Leider musste auch das ein bisschen nach hinten rücken, weil die versix - API seit Anfang Juni nicht mehr korrekt funktionierte.
    Diese API nutzt EM4 um überhaupt erst den Masterserver und andere Infos zum Spiel zu finden. Dabei verwendet EM4
    eine kaputte Implementierung des HTTP 1.0 Protokolls, was bisher bewundernswerter Weise nie zu Problemen geführt hatte.
    Nach einem Upgrade des Webservers wurden die Anfragen aber wohl besser validiert und nun (korrekterweise) abgelehnt.
    Wir haben also selbst einen kaputten Webserver entwickelt, der jetzt wieder munter mit EM4 spricht (20224 Verbindungen seit Mitte Juni).


    TL;DR:
    EM4 fragt den Master nach eine Spieleliste. Sobald es dieses erhalten hat, prüft es von dir ausgehend jeden
    einzelnen Server in der Spielliste (um zum Beispiel die Latenz anzuzeigen). Antwortet ein Server nicht,
    etwa weil er über Dual Stack Lite verbunden ist, der IPv4 Verkehr deshalb über eine NAT geleitet wird
    und nun nicht mehr die Ports die EM4 vermutet bei ihm landen, wird er nicht angezeigt.