Hier ein paar Gedanken zu einem Multiplayer ("private" LAN).
Die ganz große Lösung mit World-Server für alle würde ich mal den den Profis überlassen und es gar nicht erst probieren. Auch eine LAN-Lösung für viele lasse ich ich sein.
Also fängt man erst mal mit einer LAN-Lösung für 2 bis maximal 6 Leute an. Einer von denen ist der "Serverbetreiber". Die anderen schicken ihm per Mail oder sonst wie Ihre Carslots.xml. Im Verzeichnis ..\www\nfsw\Engine.svc\personas gibt es dann maximal 18 Personas (6 Leute * 3 Fahrer pro Person). Für den Anfang würde es auch reichen, wenn jeder nur 1 Fahrer hat. Ganz für den Anfang könnte der Server-Betreiber auch einen "Referenz-Fuhrpark" anlegen und den 17 mal kopieren. Dann hätten alle die gleichen Waffen.
1.Aufgabe vom Serverbetreiber: Eindeutigmachen der CarId. Während die CarSlotInfoTrans.CarsOwnedByPersona.OwnedCarTrans.CustomCar.Id eher unwichtig ist, muss die CarSlotInfoTrans.CarsOwnedByPersona.OwnedCarTrans.Id global (!!!) eindeutig sein (also nicht nur pro carslots.xml, wobei das im Moment vom Offline-Server schon nicht sicher gestellt wird) So ein kleines Progrämmchen wäre schon da ("lauf über alle carslots und zähle die Id's global hoch").
Einschränkung: In so einer Version würde nix im Shop gemacht und auch nix an den Autos. Also nur Multiplayer-Rennen mit bestehenden Carslots.
Wie sähe der Traffic wohl aus. 1) Server wird gestartet 2) der erste, der NFSW startet, bekommt die Personas 1100,1200,1300 3) der zweite, der NFSW startet, bekommt die Personas 2100,2200,2300 usw.
4) Spieler 1 will in Lobby für Rennen 43 (Client -> Server) 5) Spieler 2 will in Lobby für Rennen 43 (Client -> Server) 6) Server erkennt, dass 2 dasselbe wollen .. Lobby wird aufgemacht.. Info an alle (Server --> Client) 7) Spieler 1 schickt seine verwendete CarId an Server (Client -> Server) 8) Spieler 2 schickt seine verwendete CarId an Server (Client -> Server) 9) Server schickt ein OwnedCarTrans-Paket mit dem Auto von Spieler 2 an Spieler 1 (Server --> Client) 10) Server schickt ein OwnedCarTrans-Paket mit dem Auto von Spieler 1 an Spieler 2 (Server --> Client) 11) Spiel startet 12) Jetzt die große Unbekannte. Jede Sekunde (?) schickt jeder Spieler seine GPS-Daten, wo das Auto gerade ist, an den Server. Der Server schickt jedem Spieler die GPS-Daten der anderen Spieler.
13) Wird ein PowerUp benutzt, wird die Info an den Server gesendet. 14) Die PowerUp-Info wird vom Server an die anderen Spieler weitergegeben.
15) Beendet ein Spieler ein Rennen ("im Ziel" oder "Rennen wurde abgebrochen") schickt der Client ein RouteArbitrationPacket-Paket an den Server. 16) Der Server schickt die Rennende-Info an die anderen Spieler.
So oder so ähnlich sieht es wohl aus.
Um sich nun wirklich damit zu beschäftigen, würde man aber erstmal die entsprechenden XML-Pakete benötigen. Daher die Frage an alle. Hat jemand zu real World Zeiten diese Infos mal mitgeschnitten oder hat sonst Quellen ? Ohne diese XML-"Protokolle" wäre es wohl zwecklos, sich dran zu probieren.
PS: Ich möchte hier keinem falsche Hoffnungen machen, ein Multiplayer wäre in der Mache oder schon weiter
Deine "Große Unbekannte" ist das verschlüsselte UDP-Protokoll.
Desweiteren würde der Server das richtig (und von selbst) verwalten, wenn eine Datenbank dahintersteht. Der Server schickt übrigens NICHTS, was der Client nicht anfordert. Sobald man die Lobby betrifft, wird der CLient selbststänig die Carslots abklappern an hand derer PID.
On Click Player: target pid 17445907, target uid 6498321 GET /nfsw/Engine.svc/DriverPersona/GetPersonaInfo?personaId=17445907 GET /nfsw/Engine.svc/personas/17445907/cars
Wieso sage ich schon seit langem: Der Offline Server ist kein Server und Multiplayer unterstützt er daher erst recht nicht.
Spätenstens wenn UID und PID verstanden wurden, kommt man auf das selbe Ergebnis.
Suchst du das?
PUT /nfsw/Engine.svc/matchmaking/makeprivatelobby/362 HTTP/1.1
HTTP/1.1 200 OK Content-Length: 460 Content-Type: application/xml; charset=utf-8 Server: Microsoft-IIS/7.5 X-Powered-By: ASP.NET Date: Fri, 15 May 2015 06:59:21 GMT
PUT /nfsw/Engine.svc/matchmaking/invitetoprivatelobby?invitePersonaId=2788465 (Zero response? )
PUT /nfsw/Engine.svc/matchmaking/acceptinvite?lobbyInviteId=684621469 (Zero response? , trigger by jabber)
PUT /nfsw/Engine.svc/matchmaking/declineinvite?lobbyInviteId=684621469 (Zero response? , trigger by jabber)
Für Multiplayer: PUT /nfsw/Engine.svc/matchmaking/joinqueueevent/55 Acceptinvite <-> declineinvite decline: PUT /nfsw/Engine.svc/matchmaking/leavequeue
Ich war einer der ersten, die angefangen haben zu loggen. Was allerdings den Jabber-part betrifft: Hatte keine möglichkeit diesen unverschlüsselt zu loggen. Erst 1 tag kurz vor Shutdown hatte ich eine Lösung mit Wireshark >_>