nanos Just Cause 3 Multiplayer [von den Machern von GTA (V):MP]

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Jan C. schrieb:

      Dieser Post ist eine Übersetzung meines Posts aus dem englischen Forum: community.nanos.io/index.php?/…-communication-explained/


      Hallo zukünftige nanos JC3:MP Serverbesitzer und Scripter!

      Heute möchte ich mir die Zeit nehmen und euch erklären, wie die Kommunikation zwischen unterschiedlichen Packages, dem Client und der CEF-Integration funktioniert. Jedoch wird sich vermutlich bis zum ersten "richtigen Release" (sprich nicht STP1) noch einiges ändern, besonders in Bezug auf die Client <> CEF-Kommunikation.

      Ich habe euch ein Diagramm gemalt, das den kompletten Kommunikationsfluss darstellt:


      Das sieht zu erst vielleicht nach viel aus, ist es aber eigentlich gar nicht. Ich werde euch nun das Diagramm in kleineren Teilbereichen erklären.

      Inter-Package Kommunikation


      Bei der Inter-Package Kommunikation handelt es sich um den Informationsfluss zwischen mehreren verschiedenen Packages innerhalb einer Applikation, also Server Package <> Server Package oder Client Package <> Client Package.
      Bei nJC3:MP wird dazu das selbstentwickelte Event-System verwendet:

      • events.Add(String name, Function handler) um auf ein bestimmtes Event zu reagieren
      • events.Call(String name, args...) um ein Event mit den gegebenen Argumenten aufzurufen

      Wie bereits erwaehnt erlauben diese beiden Funktionen nur einen Informationsfluss zwischen zwei Packages innerhalb der selben Anwendung. Das Event-System ist nicht an irgendeine Programmiersprache gebunden. Das Event System wird auch intern bei JC3:MP verwendet. Einige dieser Events werden auch an das Scripting weitergegeben:


      Quellcode

      1. ClientConnected, ClientDisconnected, PlayerCreated, PlayerDestroyed, PlayerRespawn, PlayerDeath, ChatMessage, ChatCommand
      Das sind jetzt nicht alle Events, aber das ist mal eine grobe Übersicht. Eine Liste mit allen Events wird soon(tm) auf das scripting-docs repo hochgeladen.


      Kommunikation zwischen Server und Client
      Ich hoffe ihr habt inzwischen das Event-System nicht komplett verdrängt. Wir werden es jetzt in leicht abgewandelter Form erneut betrachten:

      Wir sehen, das Event-System wird erneut verwendet, nur mit anderen Funktionen:
      • Um auf ein vernetztes Event zu reagieren wird events.AddRemoteCallable(String name, Function handler) verwendet.
      • Um vom Server aus ein Client-Event (was über oben genannte Funktion gehandhabt wird) aufzurufen, wird events.CallRemote(String name, Player target(null = an alle), args...) verwendet
      • Um vom Client aus ein Remote-Event im Server aufzurufen wird events.CallRemote(String name, args...) verwendet.
      Wie bereits gesagt kann mit CallRemote nur ein Event aufgerufen werden, das ueber AddRemoteCallable registriert wurde.



      Kommunikation zwischen dem Server und CEF
      Ha! Das geht nicht. Wer sich das Diagramm angeguckt hat wird gemerkt haben, dass diese Art von Kommunikation nicht möglich ist, das der Server keinen direkten Einfluss auf CEF haben soll. Das war eine bewusste Entscheidung bei der Entwicklung unseres Frameworks.




      Kommunikation zwischen dem Client und CEF
      Die derzeitige Kommunikation zwischen diesen beiden Komponenten ist wie erwähnt noch nicht zu 100% fertig und wird sich vermutlich noch ändern.


      • CEF kann from Client aus mit invokeCEF(String eventName, String data) aufgerufen werden.
      • CEF kann auf eingehende Events mit addEventHandler(function(String eventName, String data) {}); reagieren.
      • Client-Packages können von CEF aus mit invoke(String eventName, String data) aufgerufen werden.
      • Das Client-Package kann eingehende Events von CEF über events.Add('CEFCommand', function(String eventName, String data) {}); handhaben.

      Derzeit ist es nur möglich, Strings umherzuschicken. Der interne workaround für das ist derzeit, einfach alles mit JSON.stringify zu encoden und anschliessend auf der anderen Seite JSON.parse zu verwenden.




      Zeit für Beispiele!
      Ich habe für jedes der genannten Szenarios (+ ein Beispiel für Server <> Client <> CEF) Beispiele erstellt. Ihr könnt sie hier bewundern: jc3mp/communication-explained
      Das jc3mp/server-default-package und jc3mp/client-default-package zeigen auch ein funktionierendes Beispiel der Kommunikation zum Linksklick-Spawnen von Objekten.




      Fragen?
      Antworten kriegst du so schnell wie moeglich hier im Thema.



      "Cash rules everything around me: CREAM, get the Money Dollar, dollar bill y'all"
      Zertifizierter Satanisten-Nazi-Mod
      Follow me on fucking Twitter and Instagram
      PR-, Marketing- und Communitymanager bei nanos.io
    • Development Blog - Woche 21

      [quote='derbl4ck','@@a4593fbf3c9433fa761688ecd256d8a500c602ec@@']



      Hallo Leute,

      willkommen zum Development Blog von dieser Woche.

      Während den Arbeiten an der Scripting-API für alle Dinge, die wir derzeit im Client unterstützen,
      bemerkten wir ein paar Dinge, die nicht (mehr) richtig funktionieren, dazu gehören die Kamera Sachen von letzter Woche.
      In dieser Woche haben wir alle POI (Point of Interest) Bugs behoben. Dazu gehörten POI die nicht angezeigt wurden, eine falsche Position hatten oder gecrashed sind.

      Zur Zeit experimentieren wir mit der Umstrukturierung von einigen Repositorys, welche uns mit Dingen helfen die wir in Zukunft tun wollen, darauf möchte ich aber nun nicht genauer eingehen.

      Wie einige von euch vielleicht gesehen haben, hat Jan an einem Karten Handler für das Server default package gearbeitet, in dem gezeigt wird wie wir Objekte, pois und all das Zeug auf dem Server benutzen wollen.

      Während einer Testsitzung bemerkten wir auch, dass das Spieler respawning nicht richtig funktioniert, zum Glück wurden diese Probleme schnell behoben.

      Wir sind derzeit auch dabei, unseren node fork auf die version 6 zu Upgraden, aber da dies ziemlich große Veränderungen beinhaltet, ist das keine Sache, die an einem Tag oder so getan werden kann, aber aktuell läuft es ziemlich gut.

      Außerdem haben wir ein Problem behoben, wo Objekte, die wir spawnen und die Position setzen nur dann aktualisiert werden, nachdem der Spieler sie berührt.

      Last but not least, haben wir mit der Implementierung von Checkpoints begonnen, wir hoffen das nächste Woche fertig zu haben.

      Sorry, wenn dieser Blog nicht so gut ist wie die anderen, aber ich bin müde und ich habe nicht viel Zeit, weil ich einige andere Sachen zu tun hatte.

      Wie auch immer, ich hoffe dass euch die Fortschritte gefallen, wir sehen uns nächste Woche.
      [/quote]Und wieder ist eine Woche vergangen, wieder ein neuer Dev-Blog. Viel Spaß beim Lesen!

      Beitrag von Sebihunter ()

      Dieser Beitrag wurde von seegras aus folgendem Grund gelöscht: immer diese Spammer ().
    • derbl4ck schrieb:





      Hallo und herzlich willkommen zum 22. Development Blog.

      In dieser Woche haben wir eine Menge Arbeit in sehr verschiedene Teile unserer Modifikation gesteckt, also kommen wir gleich zu den Details.

      Parachute sync
      Diese Woche haben wir die Arbeit an der Fallschirm Synchronisierung fortgesetzt und waren in der Lage, es fertig zu bekommen - außer manche dinge die noch nicht so recht wollen: Wir haben immer noch einige Probleme damit, wenn man den Greifhaken benutzt, dass sich der Fallschirm nicht öffnet (man muss erst den Wingsuit öffnen und dann zurück zum Fallschirm wechseln, damit jeder den Fallschirm sieht).



      Checkpoints
      Wir haben mit den Checkpoint-Funktionen für unsere Server seitige Scripting-API angefangen. Dies ist zwar noch in einer frühen in Entwicklungsphase, z.B. werden Checkpoints nur gezeigt, wenn das Spiel in einen "Rennmodus " gezwungen wird, aber wir haben beschlossen euch trotzdem einige Screenshots zu zeigen, die wir währen dem testen aufgenommen haben.




      Greifhaken
      Neben der Arbeit an den Checkpoints, haben wir auch damit begonnen den Enterhaken genauer zu untersuchen. Bis jetzt, verwenden wir die gesammelten Daten noch nicht für die Synchronisation, weil wir erst dinge wie den Fallschirm / Wingsuit abschließen möchten, aber wir haben schon angefangen ein paar coole Sachen zu machen, wie das Ändern der Farbe die durch die haken ausgestrahlt wird. Bereitet euch darauf vor, dass als Scripting Funktion in den nächsten Wochen zu sehen. ;)




      Crashfixes
      In dieser Woche haben wir uns auch sehr auf die Fehlerbehebung von Spiel abstürzen konzentriert.

      Einige Abstürze beim Trennen und respawnen haben wir in den Testsitzungen dieser Woche gefunden und behoben. Außerdem haben wir ein Problem, bei dem die Position von Objekten nur aktualisiert wurde wenn der Spieler sie berührt behoben.

      Wir haben unseren Launcher aufgeräumt und einen bug behoben der auftritt, wenn man die Einstellungen des Spielverzeichnisses zu ersten mal setzt oder ändert. Auch die steam überprüfungen (um zu überprüfen, ob Steam ausgeführt wird) wurden erst einmal entfernt, da die Umsetzung unter bestimmten Umständen gescheitert ist. Dies wird in einem späteren Punkt der Entwicklung neu geschrieben und hinzugefügt werden.

      Weitere Änderungen
      Wenn das Hauptmenü geöffnet wird, wird das Spiel nicht mehr pausiert, was das Ausnutzen mancher Leute verhindern sollte, die das Spiel pausieren um verhindern zu wollen, dass sie zum Beispiel von einem anderen Spielern erschossen werden.


      Last but not least haben wir den Standard JC3 crashreporter deaktiviert, damit nicht nur die nanos JC3:MP Abstürze an Avalanche gesendet werden (welche sie nicht in der Lage sind, zu reproduzieren oder zu fixen ;) ), aber auch um Abstürze zu debuggen die direkt während der Entwicklung geschehen.


      Also, das ist es für diese Woche. Wir hoffen, dass euch der Development Blog gefallen hat.
      Bis zum nächsten Sonntag!
      "Cash rules everything around me: CREAM, get the Money Dollar, dollar bill y'all"
      Zertifizierter Satanisten-Nazi-Mod
      Follow me on fucking Twitter and Instagram
      PR-, Marketing- und Communitymanager bei nanos.io
    • derbl4ck schrieb:





      Neue Woche, neuer Dev Blog.

      Scripting API
      Wir haben unser PlayerDeath Event verbessert, so dass auch kills durch Waffen wie RPGs richtig vom Server erkannt werden.
      Wir haben es auch möglich gemacht, das Kräfte auf Spielobjekte angewendet werden können, wodurch man diese nun herum werfen kann und dadurch z.B. Fässer explodieren können.



      Kameraprobleme, Fallschirm und Wingsuit
      In den vergangenen Wochen haben wir versucht, den Fallschirm und Wingsuit zu synchronisieren, sind aber auf ein Problem bei der lokalen Spieler Kamera gestoßen, welches auftrat sobald ein Remote-Spieler entweder den Wingsuit oder Fallschirm benutzt hat. Glücklicherweise war AaronLad heute in der Lage, dieses Problem zu beheben, weshalb wir endlich sagen können, dass wir einen weiteren großen Schritt für die Synchronisierung der ersten Preview-Version geschafft haben.

      Schaut euch auf jeden fall Aufnahmen von den heutigen Tests an, die den Fallschirm in Aktion präsentieren: imgur.com/FmckkAS

      Interview mit SuperRebel & Vadact

      Heute haben wir ein tolles Gespräch mit SuperRebel und Vadact gehabt, zwei YouTuber die ihren Fokus auf Just Cause 3 legen, wir waren sogar in der Lage, ihnen einige Live-Gameplay-Videos von unserem Team zu präsentieren. Sie sind zu uns gekommen und gemeinsam haben wir bereits vor einigen Wochen ein kleines Q & A zusammen mit ihren Community's gemacht und wir glauben, dass wir eine ganze Menge Fragen beantwortet haben, die für alle von euch auch sehr interessant sein könnten.

      Also behaltet ihre Kanäle im Auge, die Videos sollten in kürze kommen.

      Weitere Änderungen
      Jan hat sich darauf konzentriert unseren Build-Server fertig zu stellen. Wir benutzen ihn nun vollständig für unsere internen (linux) Versionen, was das erstellen von Binaries und die gemeinsame Nutzung für Tests wesentlich einfacher macht.



      Last but not least haben wir eine Menge Einzelspieler Sachen deaktiviert, wie den Start von Missionen um das desyncing des Multiplayers zu verhindern.
      Also, das ist es für dieses mal.
      Wir hoffen, dass euch unser Development Blog gefallen hat. Bis zum nächsten Sonntag!
      "Cash rules everything around me: CREAM, get the Money Dollar, dollar bill y'all"
      Zertifizierter Satanisten-Nazi-Mod
      Follow me on fucking Twitter and Instagram
      PR-, Marketing- und Communitymanager bei nanos.io
    • shorttag schrieb:

      Da bekommt man glatt Lust sich JC3 zu kaufen.
      Freut uns zu lesen :)

      Neuer Dev Blog ist auch am Start:

      derbl4ck schrieb:



      Hallo und herzlich willkommen zum 24. Development Blog.

      Synchronisation

      Diese Woche haben wir noch einmal an der Verbesserung der Fallschirm Synchronisation gearbeitet, dennoch sind wir noch nicht zu 100% fertig. Es wurden außerdem cleanups und Verbesserungen an der Waffen Synchronisierung vorgenommen, wodurch es nun eine präzisere Schussposition und insgesamt flüssigere Animationen gibt.

      Außerdem haben wir die Möglichkeit eingebaut, die Farben von Fahrzeugen sehr einfach über unsere Skript-API zu ändern. Ihr könnt euch ein kleines Gif über den Link unten ansehen.



      Überarbeitungen

      Diese Woche haben wir uns auch darauf konzentriert die chaotischen Teile unserer Modifikation neu zu schreiben. Zunächst wurde die Spieler erstellung überarbeitet, da diese immer noch zusammen mit Anfangs Reverse-Engineering-Code programmiert wurde, etwas, das beim öffentlichen Release nicht ausgeliefert werden kann.

      Wir schreiben derzeit auch unseren Renderer für Texturen (2D, CEF, ...) und Text neu um die Performance zu verbessern. Unser aktueller Renderer wurde in frühen Stadien von GTA:MP umgesetzt, mit wenig bis gar keinen Kenntnissen über D3D oder wie man so etwas effizient rendert, was zu einem drastischen Leistungsabfall führte, wenn z.B. 100 Namensschilder auf dem Bildschirm angezeigt wurden.

      Clientseitige Programmierung

      Wir haben mit der Umsetzung einer Ordner Überwachung für client_packages auf dem Server begonnen, so dass Pakete im laufenden Betrieb geladen oder entladen werden können, ohne den gesamten Server neu zu starten.
      Außerdem wurden Verbesserungen am Dateitransfer gemacht und ein Fortschrittsindikator wurde zur Haupt UI hinzugefügt.



      Also, das war es für diese Woche. Bis zum nächsten Mal ;)
      "Cash rules everything around me: CREAM, get the Money Dollar, dollar bill y'all"
      Zertifizierter Satanisten-Nazi-Mod
      Follow me on fucking Twitter and Instagram
      PR-, Marketing- und Communitymanager bei nanos.io

    • PrideGame schrieb:

      Nachdem fünften mal aufs Youtube Video klicken hab ich auch gemerkt das es ein Screenshot ist ._.
      Sorry, habe es vergessen zu verlinken: youtube.com/watch?v=1nVtlAzylT8


      PrideGame schrieb:

      Schöne Updates momentan :P
      Es geht aufjedenfall gut voran ;)
      "Cash rules everything around me: CREAM, get the Money Dollar, dollar bill y'all"
      Zertifizierter Satanisten-Nazi-Mod
      Follow me on fucking Twitter and Instagram
      PR-, Marketing- und Communitymanager bei nanos.io
    • m4a_X schrieb:

      Planung für einen 1.0er Release vorhanden? Noch in diesem Jahr?
      In dem bald erscheinenden Interview mit Superrebel und Vadact sprachen wir von einem Release vor Weihnachten.:-)
      "Cash rules everything around me: CREAM, get the Money Dollar, dollar bill y'all"
      Zertifizierter Satanisten-Nazi-Mod
      Follow me on fucking Twitter and Instagram
      PR-, Marketing- und Communitymanager bei nanos.io
    • dennismitzwein schrieb:

      Heyho,

      heute Nacht erschien das bereits angekündigte Interview von uns mit den Youtubern SuperRebel und Vadact. Dort erfahrt ihr einige neue Dinge, etwas zum Releasedatum und seht im Hintergrund ein wenig Gameplay aus unserer Mod! :)

      Zum Interview: KLICK

      New Devblog:

      derbl4ck schrieb:



      Hallo und herzlich willkommen zum Development Blog von dieser Woche.

      Heute sind wir leider nicht in der Lage euch neue tolle Sachen zu präsentieren, weil wie ihr vielleicht wisst, ein neuer Patch veröffentlicht wurde, und wir immer noch damit beschäftigt sind, den Mod wieder zum laufen zu kriegen. Unsere haupt Priorität ist es das kämpfen gegeneinander mit mechs möglich zu machen ;)


      Zusätzlich zu dem, implementierten wir einen neuen Renderer (Namensschilder usw.), der bis zu 10x schneller ist als der alte. Dies sollte die Leistung bei viel gerendertem Text auf dem Bildschirm deutlich verbessern.

      Wir wollen diesen devblog auch als Gelegenheit nutzen, um euch nochmal daran zu erinnern, dass wir ein Interview mit Vadact und Superrebel, zwei super YouTubern gemacht haben. Seht euch das video auf jeden fall an:
      youtube.com/watch?v=Q65tPJOslIE
      Das war es wieder für diese Woche.
      Bis zum nächsten Sonntag;)
      "Cash rules everything around me: CREAM, get the Money Dollar, dollar bill y'all"
      Zertifizierter Satanisten-Nazi-Mod
      Follow me on fucking Twitter and Instagram
      PR-, Marketing- und Communitymanager bei nanos.io
    • dennismitzwein schrieb:

      Hallo Leute,

      diese Woche gibt es leider keinen ausführlichen Development Blog, da wir immer noch damit beschäftigt sind, die Mod auf das neueste Patch zu updaten.

      Genießt die tollen Dinge, die diese Woche auf der E3 enthüllt werden. Bis nächsten Sonntag!;-)
      "Cash rules everything around me: CREAM, get the Money Dollar, dollar bill y'all"
      Zertifizierter Satanisten-Nazi-Mod
      Follow me on fucking Twitter and Instagram
      PR-, Marketing- und Communitymanager bei nanos.io
    • Cireyses schrieb:

      Ich spendulier euch einen Grillabend!
      Wir bekommen schon eine Release Party im Haus von Alexander "XForce" Güttler. ;)

      /Edit: https://twitter.com/dennismitzwein/status/744539469311795200

      Heute gibt es einen kleinen Development Stream, in welchem wir ein wenig Gameplay und auch die aktuellen Crashes zeigen.;-)
      "Cash rules everything around me: CREAM, get the Money Dollar, dollar bill y'all"
      Zertifizierter Satanisten-Nazi-Mod
      Follow me on fucking Twitter and Instagram
      PR-, Marketing- und Communitymanager bei nanos.io