Editor = nicht Launch

  • Hallo zusammen!


    Ich habe in meinem Projekt das anziehen der Rüstungen eingebaut (grob gesagt), im Editor hat es auch wunderbar funktioniert und alles wurde korrekt angezeigt.

    Nachdem ich das Projekt gelauncht habe, war es fehlerhaft.


    Also habe ich das ganze umgestellt und jetzt läuft es im Launcher Modus korrekt aber nicht im Editor Modus.

    Grob gesagt:


    Im Editor Modus schwebt die Rüstung am Körper aber folgt nicht der Bewegung. Oder anders gesagt, die Rüstung liegt nicht auf der Haut an.


    Im Launcher Modus ist diese korrekt, liegt an und auch die Physic usw. ist alles perfekt.



    Warum ist das so unterschiedlich und wie kann ich den Editor Modus so einstellen das dieser identisch mit dem Launcher Modus ist?

    Alles für Multiplayer und über dedicated Server.



    PS:

    Wie stelle ich mehrere Clients ein (Launcher Modus) und wie sehe ich wer der Server ist und wer nicht?

  • Was da jetzt im einzelnen anders ist, kann ich dir auch nicht beantworten. Ich schätze es liegt wohl daran, dass der zweite Client auf dem selben Launcher im Editor läuft und dadurch manche Abläufe fehlerhaft sind.

    Die Fensterbeschreibung gibt mir im Normalfall Aufschluss darüber, wer Server und wer Client ist.

    In den Advancedsettings (unterhalb von deiner Clientanzahleinstellung zu finden) findest du den Punkt "Use Single Process". Diesen würde ich ausstellen und versuchen, ob es die geforderte Testumgebung hervorruft.


    MfG

  • WIe Shmann schon sagt - ganz wichtig - Client ist nicht gleich Server.


    Und bevor ichs vergesse - "Launcher" ist die Hilfsapplikation in der Taskbar mit der man die Engine Versionen installiert, Projekte verwaltet, im Marketplace einkauft usw. Klingt banal, aber bitte aufs Wording achten damit wir alle vom gleichen Thema sprechen.


    Im Editor kannst du grundsätzlich die App im Viewport laufen lassen, in einem seperaten Fenster, in einem eigenen Prozess ("Launch" - geht hier auch auf client devices. ) usw. Das ist zum Debuggen sehr hilfreich.


    Für Multiplayer ist es kriegsentscheidend den Unterschied zwischen Client und Server zu verstehen.


    In deinem Fall hast du schon bemerkt - Client und Server stellen es unterschiedlich dar. Ohne dein Spiel gesehen zu haben behaupte ich mal - auf dem Server siehts OK aus, auf dem Client nicht. Warum? Das Stichwort ist "Replikation".


    Replikation ist das teilen von Informationen. So kann der Client Informationen mit dem Server teilen und der Server mit einem oder allen Clients. Das muß man verstehen für Multiplayer. Dein problem - auf dem Server ist die Information vorhanden daß die Rüstung anliegt - auf dem Client grundsätzlich erst mal nicht da du es nicht replizierst.



    Grundsätzlich gilt - der Server "darf" alles replizieren (Bei einem Kartenspiel hoffentlich NICHT die verdeckten Karten der Gegner an alle und solche "Geheimnisse"!). Der Client darf grundsätzlich gar nichts replizieren - ausser den Inputs der Spieler. Warum? Das merkst du schnell wenn du nicht mit deinen besten 3 Kumpels im LAN spielst sondern das Spiel veröffentlicht hast und tausende Spielen.


    Ich hab das hier mal erklärt:


    Replikation - Woran Muliplayer Spieler in der Realität scheitern - oder auch nicht - Cheating




    Beherrschst du die Replikation beherrscht du die Client-Sever Beziehung. Du wirst lernen müssen was default mässig repliziert wird und was nicht. Und wo es Sinn macht zu replizieren und was besser nicht.



    Übrigens - kompiliere früh, kompiliere oft. Über "package Project". Nicht immer sieht alles so aus wie im Editor. Du solltest öfters (1 x die Woche oder so) builts von Client und Server machen und auch auf diverser Hardware ausprobieren.

  • Was ist die richtige Einstellung, damit ich den Multiplayer besser bearbeiten kann?



    Ich möchte gerne das ein Server läuft und zwei Clients, so das ich auf beiden Clients das testen kann.

    Beide Clients sollen dabei die 1920x1080 Auflösung haben, damit beides auf meinen Monitor passt.



    Habe das jetzt soweit umgestellt und ich habe nun 2 Fenster.

    1 kleineres Fenster mit dem Server und ein größeres, scheinbar mit dem Client. (Da steht leider nichts dabei).

    Bei dem Client-Dings, kann ich mich nicht bewegen, dafür funktionieren komischerweise andere Funktionen die auf dem Server nicht funktionieren.






    Die Replikationen dürfte ich soweit richtig gemacht haben und das Thema Cheating ist in meinem Projekt nicht so wichtig, weil das Thema Cheating ganz anders angegangen wird. Es ist das effektivste System ohne das es ein System braucht. Schwer zu erklären. Zuerst geht es darum das ich mein Projekt soweit fertig mache (was es auch im groben und ganzen ist), nun möchte ich es für die erste Projekt-Präsentation etwas aufpollieren und auch zeigen, dass die eingebauten Funktionen schon im Multiplayer funktionieren.

  • Hmmm ja die EInstellungen sind nicht so wichtig - hier startest du nen Listen Server.


    Wie gesagt ich würde dir empfehlen öfters mal zu kompilieren (Package) und auf echter Hardware zu testen.


    Aber klar zum schnellen debuggen bietet es sich an - wenn deine Hardware das hergibt - auch mal den Server und 1-2 clients in separanten Fenstern laufen zu lassen.


    Ich habe für solche tests immer gerne die Command line benutzt - Vorteil ist daß du den Editor schliessen kannst wenn du eine längere Debug Session startest (Der Editor kann echt viel RAM fressen...).


    Hier mal ANleitung wie man sich 1 Server und 2 Clients als Batch file schreibt - dann kannste die aufn Desktop legen und dann heisst es "Let the good times roll on".




    https://wiki.unrealengine.com/…ver_Games_Via_Commandline




    So habe ich Multiplayer immer gerne getestet.



    Und PS: Ich glaube nicht daß die Replikation stimmt. Ansonsten hättest du die Probleme mit der Rüstung wohl kaum.


    Und ich würde mich freuen deine anti-cheating Gedanken zu hören. Die kannste ja auch mal Bethesda schicken, die sitzen da mit Fallout 76 ganz schön in der Klemme, hehe.


  • Das mit dem Compilieren (Package) wie geht das und wie richte ich den Server ein?

    Ram habe ich derzeit noch genug, sind 32gb DDR4 (3000mhz) auf zwei Module. Ansonsten Ryzen 1800x (8 Kern CPU) und eine standart GTX 1080 Ti mit 2Ghz Takt.

    Eine andere Hardware habe ich nicht, jedoch habe ich mir das gekauft weil diese Ausrüstung der Großteil der Spieler hat. Wenn dann mal eine 1070 oder eben schneller. So gesehen schon der grobe Durchschnitt.




    Bei der Rüstung ist es besonders, weil ich die tatsächliche Blueprint Rüstung Anziehe und nicht nur das SkeletalMesh darüber klebe. Also man hat die Blueprint Rüstung mit seinen Funktionen an (erweiterter Schutz) der beim Schaden separat berechnet wird.

    Daher ist es etwas anderes, aktuell aber noch ohne Funktion (nur Global und noch nicht Lokal).

    Repliziert wird alles korrekt nur vermute ich einen logik Fehler in der Engine, also im Editor. Weshalb ich zwei unterschiedliche Ergebnisse habe. Die Rüstung selbst ist auch etwas komisch gemacht, denn ich kann damit keine eigene Bones setzten und zuweisen.



    Zu dem Anti-Cheater System von mir, es handelt sich um das manuelle ausselektieren. Das ist am besten von allen System, funktioniert aber nicht in Massenspielen. In Fallout z.B geht das nicht/kaum... es wäre zu teuer.

    Das manuelle selektieren geht nur bei einer kleineren Spielerschaft. Es ist schwer das zu erklären aber es funktionierte damals sehr gut.

  • Packagen kannst du übers Menü.



    Du solltest auch gelegnetlich mal einen Release (shipping) built statt debug packagen, insbesondere wenn du gar nicht mit externen Debuggern arbeitest.


    Wenn du glaubst daß der Großteil der Spieler eine GTX 1080 Ti hat dann glaubst du wahrscheinlich auch an den Weihnachtsmann.


    Ja könnte auch ein Logik Fehler sein - aber würde mich wundern da es ja auf dem Server deiner Aussage nach funktioniert, aber gut ich kenne deinen Code nicht. SO aus dem Bauch heraus hätte ich definitiv auf Replikation getippt weil das der absolute Klassiker ist wenn der eine was sieht oder hat was der andere nicht sieht oder hat. Der Fehler schreit ja danach.



    Ja das mit dem manuellen Aussortieren der Chetaer kannste machen wenn du mit Oma und 3 Kumpels im LAN spielst, aber mit tausenden Spielern die rund um die Uhr und rund um die Welt online sind ist sowas eher schwierig. "Königsweg" ist für mich was anderes.

  • Danke für den Tipp mit dem "Package Project", ich dachte das würde bereits die Launch Funktion im Editor simulieren/berechnen.



    Im Editor, bei "Build", "Play" und "Launch" was genau ist dieses Launch, ist das so ähnlich wie das Package Project?

    Weil bei Launch ist das richtig mit meiner Rüstung, bei Play eben nicht.

    Das es sich um einen Replikation Fehler handelt, habe ich ja schon durch mehrere Tests ausschließen können, mir ist auch klar das man gerne das vergisst oder übersieht. Von daher noch mal danke für den Hinweis, hätte ja wirklich was damit zutun haben können.



    Das Thema mit dem Cheaten ist halt echt ne schwere Sache. Selbst viele Anti-Cheat Programme haben eine gewisse Verzögerung und dann kann es trotzdem noch sein, dass Leute gebannt werden die nicht gecheatet haben. Es ist halt ein System für den Massenmarkt.


    Ich habe auch mal ein tolles Spiel gespielt (free to play) und da gab es auch Cheater... jedenfalls gab es auch ein Anti-Cheat System was relativ gut funktioniert hat.

    Der größte Fehler dabei war, dass die gebannten Cheater sich innerhalb von ca. 2-5 Minuten einen neuen Account (kostenlos) erstellen konnten und so konnten viele Cheater ihre Cheat-Software testen uns ausloten, was vom Anti-Cheat System erkannt wird oder nicht.


    Das führte dann dazu das noch gewisse "Profi-Cheater" übrig geblieben sind, die das System nicht erkennen kann. Profi Cheater in dem Sinne das die geschafft haben das Überwachungssystem erfolgreich zu umgehen.


    Ähnliche Probleme gab es auch bei PUBG, Steam ist ja kostenlos und dann das Spiel noch mal kaufen... wenn das alles so gut funktionieren würde, gäbe es auch nicht solche Meldung darüber :)




    Ein sehr gutes Beispiel: (Vergleich zur Realität)

    Überwachungskameras oder Polizeikräfte


    Überwachungskameras sind billig und können breit flächig eingesetzt werden, aber man kann immer nur hinterher oder verspätet die Verbrecher verhaften.

    Genau das machen aktuelle die meisten Spiele, vor allem weil es am günstigsten ist.


    Polizeikräfte die patrouillieren können sofort eingreifen, sind aber deutlich teurer. Das beabsichtige ich zu erreichen, dass sofort gehandelt werden kann.

  • "Package early, package often" - wie der UE4 ENtwickler sagt.


    Ja im Editor kann man zwar auch spielen - aber es verhält sich unter Umständen anders als im fertigen Spiel - daher die Bitte eher im Packaged game längere Spiel Sessions zu machen und im Editor eher mal kurz debugging usw.


    Launch vs Play Button. *Seufz* Ja der Launch Button ist eigentlich schon fast ein Fluch - in deinem Fall aber auch Glück. Ursprünglich war der Launch Button nur gedacht um das Spiel auf einem "angebundenen System" zu starten - also sprich auf einem angeschlossenen Android Handy, einer Playstation 4 oder was-auch-immer. Glück - weil du in der default Einstellung im Play Button den Server und im Launch Button den Client launchst - und so hast du ja auch schnell den ersten Bug im Client gefunden.


    Ehrlich - ich halte von den ganzen Anti-Cheating Programmen nichts - sinnvoller ist es das ganze von Grund auf zu unterbinden, also sprich den Client nur Eingaben machen zu lassen. Klar dann bleiben noch die ganz harten die Wallhacks und Aimbots einsetzen - bei Ballerspielen. Bei Echtzeit Strategie hast du aber schon praktisch alle Cheats damit erschlagen.

  • Deswegen war ich verwundert, warum im Editor-Launch ein anderes Ergebnis war als im Editor Play modus.


    Zuerst ist es wichtig, grob den Umfang in das Spiel zu bringen und das es auch halbswegs gut funktioniert, damit ich dann im packaging auch besser testen kann, ohne das ich nur noch mit dem packaging zutun habe, weil es ständig kleinerer Änderungen bedarf.

  • Klar probierst du Kleinkrams immer im Editor aus. Neuen Schrank hingestellt, geht die Tür noch auf --> Editor. Neues Untermenü, funktioniert das --> Editor.


    Aber klar - meist ist das Programmieren eine ständige Aneinanderreihung von Kleinigkeiten. Von daher lohnt es sich turnusmäßig (Einmal die Woche) auch mal zu packagen, am besten shipping und mal "echt" zu spielen. Bei so Sessions fallen dir und deinen Kumpeln tausend Sachen auf die du sonst nicht bemerkt hast. Gerade was das Thema Beleuchtung angeht können da Welten dazwischen liegen - im Debug buildest du ja nicht reflections und lights neu bevor du Launch oder Play drückst. Machst du dann mal einen echten built ("Package", "Shipping config") dann bist du manchmal echt überrascht und denkst dir "Heilige sch... ähhh Bimbam!". Klar Packaging kostet Zeit und nerven - Geheimtip - packaging als letztes anwerfen bevor du abends ins Bett gehst - dann kostet es keine Zeit und du hast morgens ein schönes packaged built das du auch schnell mal Freunden, verwandten, Kollegen oder Nachbarn aufs Auge drücken kannst ("Hier mein neues nightly built!" "Argh, nicht schon wieder, hust...muss ich wirklich?")

  • Ähm... jetzt bin ich total verwirrt.


    Woher weiss ich denn was die Realität ist?


    Manche Funktionen funktionieren nicht im Client, manche nicht auf dem Server und manches auf beidem nicht. Obwohl es im Editor richtig funktioniert, was aber auch wiederum falsch ist. Denn da funktionieren alle Funktionen.


    Wie stelle ich denn den Editor so ein, dass ich die Funktionen auch so in der Realität verwenden kann, wie diese dann im Packaging (Shipping) sein soll?




    Wenn ich im Editor auf Launch drücke, dann ist das vermutlich der Server? (Steht leider nichts dabei drann) Dann funktioniert das Ausrüsten der Rüstung korrekt. Dafür funktioniert das Crafting nicht.


    Wenn ich im Editor auf Play (Single Process) drücke, funktioniert alles (ist scheinbar das falsche?).


    Wenn ich im Editor auf Play Single Process deaktiviert) drücke, funktioniert das Ausrüstung anziehen fehlerhaft, dafür funktioniert das Crafting.




    Was ist jetzt was und was ist jetzt richtig????

    Es kann doch nicht sein das bei jeder Sache unterschiedliche Funktionen gehen, als Beispiel das ausrüsten der Rüstungen. Es geht überall aber nicht überall hängt die Rüstung an der Haut/Körper sondern schwebt falsch in der Luft und wandert mit dem Character mit.

  • OK, jetzt sehe ich daß es dir ein klein wenig an Basics mangelt, du hast wahrscheinlich gar keine tiefergreifende Client/Server Logik drin, von daher hole ich mal ein klein wenig aus...


    Default - also in einem "nackten" Projekt hast du natürlich nur die grundlegende Client/Server Logik drin. In deinem "nackten" Projekt startet jeder Prozess in den Grundeinstellungen erst mal als "Listen Server" - das ist das default behaviour in UE4. "Listen Server" ist also erst mal der Server, also der bestimmende Computer in deinem Netzwerk.


    Es gibt auch noch den "Dedicated Server" - das ist das gleiche wie der "Listen Server", nur daß der die Grafik - also das eigentliche Spiel - nicht startet. Auf einem "Dedicated Server" kannst du also nicht selber mitspielen, das ist aber (generell) der einzige Unterschied.


    Grundsätzlich kannst du einen Server in deinem nackten brandneuen Projekt nicht vom Client unterscheiden - hier sieht es alles gleich aus. Wirf im Editor einen Cube oder ein tanzendes Baby in die Map - auch beides gleich - die Map ist bei allen gleich.



    Interessant wird es jetzt wenn es an die Replikation geht. Sprich der Client spawned jetzt einen Drachen. Sieht aber kein anderer bis du den replizierst. Wie ich schon mal gesagt habe - du musst Replikation PERFEKT verstanden haben um ein Multiplayer Game zu machen - insbesondere wer was wohin replizieren darf und was eher nicht.


    Auch wichtig - verstehe was Client- und was Serverseitig ist.


    Mal ein alter Klassiker - hilfe ich habe im Gamemode eine Variable und die Clients lesen die nicht aus. Man muß für Multiplayer wissen daß z.B. der GameMode nur auf dem Server existiert - niemals auf einem Client. Dann ist einem auch klar warum eine FUnktion oder Variable im GameMode auf Clients niemals laufen wird.


    Anderes schönes Beispiel - Mist ich sehe mein Schwert, der Server sieht mein Schwert aber alle anderen clients sehen es nicht. Ist mein PlayerController kaputt? Ganz gemein hier - Jeder hat einen PlayerController und der Client repliziert den auch zum Server. Aber der Server repliziert diesen nicht zu anderen Clients.



    Ich könnte jetzt noch ganz viele Beispiele aufführen, aber dann würde das hier bald ein Buch werden, von daher belasse ich erst mal bei der Belehrung (Sorry!) - du musst das lernen wenn du Multiplayer beherrschen willst.



    Bei meinem ersten Multiplayer game habe ich mir ein großes Blatt Papier genommen und solche Basics erst mal als Spickzettel aufgeschrieben weil ich sie mir nicht merken konnte und das neben den Monitor geklebt.



    Hier mal eine Empfehlung zum lesen - und den Spickzettel füllen:


    https://docs.unrealengine.com/…lay/Networking/Blueprints




    Noch ein paar praktische Tips:


    - Der beliebte Launch button. Click mal auf den Button PFeil nach unten und wähle im Menü "Project Launcher" aus. Da wird ganz oben der name deiner Workstation und "default" stehen. Hier kannst du auch "Windows Client" und "Windows Server" auswählen.


    - Den Play Button kannst du genau so konfigurieren - interessant hier ist die Spieleranzahl (Bei Multiplayer macht mehr als einer Sinn!), "Dedicated Server" - falls du planst einen zu verwenden, willst du nur als Client debuggen kannst du auch "Run Dedicated Server" anhaken (In den Editor preferences) dann startet der Editor "heimlich" einen Dedicated Server und dein Fenster simuliert einen verbundenen Client.


    - Wenns mal "ernst" wird und du das Spiel oder zumindest eine Beta - veröffentlichst dann lohnt es sich zu überlegen ob du einen Dedicated Server anbietest - also Herr des Spiels bleibst oder ob die User selber Server spielen können. Das ist meist eine Geldfrage da du einen oder mehrere Dedicated Server ausfallsicher hosten solltest. Für so einen Fall bietet es sich an die Server Logik rauszuwerfen und einen Shipping Built nur für clients zu machen - das schützt logischerweise vor neugierigem Reverse engineering.


    - Willst du keinen Dedicated Server so solltest du die Client/Server ROlle über Menü und/oder Command line switches steuern. Klassicherweise kann der Spieler im menü "Neue Session starten" (Ich bin Server) oder "Einer bestehenden Session beitreten" (Ich bin Client) auswählen. Stichwort "Lobby".

  • Danke dir Kyodai für deine ganzen Informationen, daran habe ich noch nicht gedacht!

    Da ich aber schon zuweit fortgeschritten bin, muss ich das ganze nun entsprechend so hinbekommen das es passt.



    Grundsätzlich will ich einen deticated Server auf dem sich die Spieler verbinden müssen. Erst dann können die spielen.

    Daher fällt alles andere weg, kein Lan, keine eigenen Server usw.


    Der typische und klassische MMORPG Server (Hauptserver).




    Ich habe heute mal das Packaging genauer angesehen.

    Packaging Project -> Windows -> 64 Bit


    Build Configuration: Shipping (geht das andere schneller und ist besser zum testen, oder doch lieber Shipping?)






    Ist das soweit richtig in der Einstellung?


    Gedauert hat das ganze ca. 4 Stunden... das muss schneller gehen.

    Die Spielgröße ist jetzt 53 Gb gepackt.



    Fehler habe ich soweit sehr viele gelbe aber nur ganz selten einen roten (häufig von Platformen die nicht unterstützt werden, z.B. Android usw).


    Fehler sind solche wie die hier:

    UATHelper: Packaging (Windows (64-bit)): LogReflectionCaptureComponent: Warning: /Game/BlacksmithForge/Maps/IntegratedBF contains a legacy UReflectionCaptureComponent and is being non-deterministically cooked - please resave the asset and recook.





    Aktuell habe ich so gut wie alle Funktionen NUR im MyCharacter eingebaut. Weder in GameState noch in GameMode, höchstens im PlayerController.


    Es darf auch keine Spielmodis in meinem Projekt geben oder andere Dinge, die eine Einschränkung wären.


    Ich bin kein Programmierer daher muss ich mir soweit selber helfen, bis ich das nötige Geld habe, damit andere das besser tun können was ich derzeit versuche. Bis dahin muss ich schauen wie ich das ganze was ich vorhabe, in die Realität umsetzen kann. Die Zeit ist knapp und da nur ich alleine daran Arbeite, habe ich niemanden den ich fragen kann.

  • PS: Habe gerade das shipping Spiel gestartet und es funktioniert exakt so wie als wenn ich im Editor auf Launch drücke. Folglich funktioniert auch die Rüstung perfekt. Die Schadenskollision, die Fahrzeuge, die Monster usw. ^^


    Aber das Crafting geht nicht richtig und ich kann nur als ein Client starten, ich benötige für die Vorschau aber zwei Clients + Server.

  • Wie man per Batch startet habe ich oben ja schon mal gepostet - das ist sehr praktisch zum debuggen. Einen Dedicated Server und mal 2-3 Clients sind gut zum debuggen.


    Config passt soweit erst mal.

    "Full rebuild" würde ich rausnehmen wenn du auf Zeit achtest - sonst wird für jeden Pups den du änderst immer alles rebuildet - und dann dauert es immer 5 Stunden oder so.

    "Shipping" passt erst mal. Debug lohnt nur wenn du mit einem externen debugger rangehst und das würde ich nur machen wenn du viel C++ drin hast oder custom source.

    "Include debug files" kannste dir sparen wenn du keinen extrnal debugger nutzt.

    Blueprint Nativization lohnt sich bei komplexen scripten, also sprich wenn du sehr große Blueprints hast. Da würde ich dann aber vorsichtig peu a peu ausprobieren und ggf mit Profiler ran. Das lohnt immer dann wenn das Game an irgendeiner Stelle CPU-Lastig wird.

    Tip: Wenn du die kleinen Pfeile nach unten anklickst kannst du in den Kategorien noch mehr einstellen.


    53GB ist schon sehr mächtig. Da würde ich mal sowas wie "TreeSize" drüber jagen und mal die größten Assets ausfindig machen und mal kritisch hinterfragen ob man die nicht reduzieren kann oder ob die überhaupt im Spiel verwendet werden. Wenn du viel Krams drin hast der gar nicht verwendet wird (Asset wurde mal importiert aber nie genutzt) dann ist der beste Trick die Map in ein neues Projekt zu exportieren - dabei wird nur krams mitgenommen der auch echt verwendet wird.


    Deine Fehlermeldung - die Capture Component solltest du mal versuchen zu saven. Geht das nicht einfach löschen und neu anlegen. Die scheint aus ner alten version zu stammen. Andere Fehler müsste man sich anschauen.


    Player controller - wie gesagt - per default repliziert der zum Server und der Server repliziert nix. Sprich was ein client im PlayerController veranstaltet sieht der Server aber kein anderer Client.


    GameMode hast du immer auf dem Server, aber klar wenn der leer ist juckt dich das nicht. Da ist normalerweise alles "Globale" drin, z.B. "Heute Oster Aktion eingeschaltet, es spawnen überall Osterhasen".


    Sowas wie PlayerState solltest du dir mal anschauen, das sind persistent Values die an alle repliziert werden. Z.B. der Name des Spielers ("SuperJoachim853" oder wie auch immer er heisst). Also alles was jeder client über einen anderen Client wissen sollte.


    Wie gesagt - lies dir mal den ARtikel in meinem vorigen Post durch.

  • Das mit der Server.Bat Sache läuft schon relativ gut, nur weiss ich wiederum nicht, wer Server ist und wer Client.

    Gibt es da nicht eine Möglichkeit das genau zu identifizieren?



    Was bedeutet?

    [2019.01.25-12.02.49:060][ 0]LogDerivedDataCache: Error: Could not save memory cache C:/Users/Exaran/AppData/Local/UnrealEngine/4.21/DerivedDataCache/Boot.ddc.


    PS: Obwohl der Fehler da ist, startet es trotzdem.

    Aber beide Clients können sich nicht sehen. Es scheint so, als ob das Projekt zweimal gestartet wurde und auf jedem nur eine Person vorhanden ist.

  • OK da ist jetzt die Frage - machst du Listen Server oder dedicated server? Bei einem dedicated server ist es ja offensichtlich da der keine Grafik anzeigt. Du kannst ja auch für den listen Server einbauen daß der ne GUI spawned wo einfach nur "ich bin server" setht.


    Arbeitest du im Editor würde ich empfehlen "Play" --> Pfeil nach unten --> "New Editor Window". Dann hast du wenn du 3 Spieler einstellst 3 Fenster und die sind dann mit "Server", "client1" und "client2" beschriftet. Das ist zum debuggen angenehm und schnell.



    Den Fehler kannst vergessen, sagt nur dass er den Cache nicht anlegen konnte, ist aber wurst - wenn der immer kommt mal den Cache ordner leeren.



    Sind die Clients auch connected?

  • Soweit ich richtig liege, soll es ein "Dedicated Server" System werden.

    Es gibt also einen Hauptserver, auf diesen verbinden sich alle Spieler. Der Hauptserver steht dann unter meiner Kontrolle (damit ich entsprechend eingreifen kann, wenn es nötig ist).

    So als Beispiel:

    World of Warcraft, dort gibt es einen (oder mehrere) Hauptserver, auf die sich die Spieler verbinden können. Diese Art von System WILL ich!




    Ein "Listen Server" währe ähnlich wie ein Dedicated Server, nur das die Spieler selber Server erstellen können, auf dem dann andere Spieler sich verbinden können.

    So als Beispiel:

    Ark Survival Evolved wäre so gesehen ein Listen Server System, da Spieler selber eigene Server mit relativ eigenen Regeln aufstellen können. Diese Art von System will ich NICHT.



    Ist das richtig mit Listen/Dedicated Server oder verdrehe ich das?




    Bei der .bat "Sache" mit dem Server + 2 Clients, da sind die Clients nicht connected. Die können sich gegenseitig nicht sehen und selbst wenn ich das Monster im Gebiet auf Client 1 töte, so steht es bei Client 2 noch da. Also sind beide Clients nicht verbunden, sondern jeder Client hat scheinbar seinen eigenen Server.

    Dafür funktioniert das Kampfsystem, Ausrüstungsystem usw. hervorragend, was im Editor bisher unpräzise funktionierte.


    Daher das gleiche Problem, ich kann wieder NICHT unterscheiden was nun richtig und was falsch ist. Weil es unterschiedliche Ergebnisse gibt.



    Eine Übersicht der Funktionen:

    - Ausrüstungs-System

    - Kampf-System

    - Crafting-System

    - Sterbe-System

    - Respawn-System

    - Housing-System

    - Fahrzeuge-System

    - Interaktions-System



    ---



    Im Editor Modus:

    Single Process deaktiviert

    Dedicated Server

    3 Clients

    New Editor ModeWindow (Pie)


    Funktionen im Editor:

    - Ausrüstungs-System

    Funktioniert zwar aber die Rüstung liegt nicht auf dem Körper an und hat auch keine Physic.


    - Kampf-System

    Funktioniert, aber extrem unpräzise. Daher eher fehlerhaft. Um am Monster schaden zu machen, muss ich extrem nahe heran stehen und die Schadenscollision der Waffe nutzt nicht die Reichweite aus (also ein Zweihandschwert hat die gleiche Reichweite wie ein kleiner Dolch, was unlogisch ist). Der Schaden wird auch nicht immer erkannt.


    - Crafting-System

    Funktioniert fehlerfrei. Alle Rezepte werden korrekt angezeigt.


    - Sterbe-System

    Funktioniert fehlerfrei. Man stirbt und respawnt ohne Fehler oder Einschränkungen. Ragdoll Animation manchmal merkwürdig.


    - Respawn-System

    Funktioniert fehlerfrei.


    - Housing-System

    - Funktioniert fehlerfrei. Man kann sich als Besitzer, oder Mieter mit entsprechenden Rechten im Haus eintragen und dann auch die Haustür verwenden (wenn man Besitzer oder Mieter ist).


    - Fahrzeuge-System

    Funktioniert, aber mit Physic Fehlern (realer Standort ist immer falsch).


    - Interaktions-System

    Funktioniert fehlerfrei. Informationstexte zu Gegenständen die am Boden liegen werden korrekt angezeigt. Interaktionsmöglichkeiten (etwa das öffnen der Tür oder das einsteigen in ein Fahrzeug usw.) funktionieren korrekt.

    Gegenstand inspizieren funktioniert fehlerfrei. (Also Eigenschaften des Gegenstands betrachten usw.)



    ---



    Im (Editor) Launch Modus ODER / UND nach Packaging -> Shipping:

    - Ausrüstungs-System

    Funktioniert fehlerfrei und die Rüstung liegt auch korrekt am Körper an + Physic der Kleidung funktioniert richtig. Was im Editor immer fehlerhaft war.


    - Kampf-System

    Funktioniert fehlerfrei und alles ist korrekt. Die Reichweite der Waffen ist exakt so wie es sein soll. Der Schaden wird auch korrekt übermittelt. Es funktioniert absolut Fehlerfrei (genau so will ich es haben). Die Präzision ist korrekt.


    - Crafting-System

    Funktioniert nicht. Es werden keine Rezepte zur Herstellung angezeigt. Crafting Menü ist trotzdem aufrufbar.


    - Sterbe-System

    Funktioniert fehlerfrei. Man stirbt und kann fehlerfrei respawnen ohne Einschränkungen oder irgendwelche Fehler. Ragdoll funktion absolut fehlerfrei.


    - Respawn-System

    Funktioniert fehlerfrei. Keine Fehler nach dem Tod oder sonst etwas. Alles korrekt.


    - Housing-System

    Funktioniert nicht. Eintragung als Besitzer oder Mieter nicht möglich. Housing Menü kann nicht aufgerufen werden.


    - Fahrzeuge-System

    Funktioniert fehlerfrei. Physic funktioniert fehlerfrei, Standort ist auch immer korrekt! (Im Editor gab es immer Fehler.)


    - Interaktions-System

    Informationstexte werden nicht angezeigt.

    Interaktionstexte werden nicht angezeigt, aber interaktion mit Fahrzeugen, Gegenstände und allem funktioniert (nur Housing nicht).

    Gegenstand inspizieren funktioniert fehlerfrei. (Also Eigenschaften des Gegenstands betrachten usw.)





    Ich hoffe man kann nun besser erkennen, warum ich so sehr verwirrt bin.

    Manche Dinge funktioniert im Editor sind aber im Launcher falsch.

    Andere Dinge funktionieren im Launcher und sind im Editor falsch.


    Daher muss ich unbedingt wissen, was richtig ist und was nicht.

    Mein Bauchgefühl sagt mir das der Launcher Modus richtig ist, vor allem weil dort Kampfsystem. Ausrüstungssystem und Fahrsystem fehlerfrei funktionieren.

    ...

    Sehr merkwürdig...

    ...

  • Nein, da liegst du falsch - der dedicated server ist ein listen server nur ohne die grafische Ausgabe zu starten.


    Wenn du den dedicated server bei dir hosten willst und den Spielern die Möglichkeit nehmen selber spiele zu hosten solltest den shipped built (Also finales spiel) so hardcoden daß es sich immer automatisch zu deinem Server verbindet (z.B. server01.meindollesspiel.de) und auch die eigentliche Server logik vor dem packagen entfernen - dann kann man das auch nicht durch reverse engineering oder memory hacks so einfach klauen.



    Übrigens - Launch ist auch im Editor - nur mit etwas anderen Optionen.


    Was du als "Editor modus" angibst ist in deiner Config eigentlich nur debugging im Client Modus im Editor. Da du dedicated server angeklickt hast läuft der Server unsichtbar im Hintergrund und du hast 3 clients verbunden. Das ist eigentlich auch der wichtigste Test da das in deinem Szenario auch genau das ist was der echte Spieler der dein Spiel gekauft hat dann effektiv vor sich sieht.


    Von daher wäre mir an dieser Stelle das Ergebnis erst mal am wichtigsten. Daraus kann man ja ein paar Fakten schön sehen:


    - Deine Rüstung funktioniert nur auf dem Server. Da wird irgendwas nicht repliziert würde ich sagen.


    - Kampf System scheint auch ein paar Kleinigkeiten nicht zu replizieren, aber so wie es klingt echt nur Kleinigkeiten. Musst du noch etwas debuggen.


    - Fahrzeuge. Kann auch nur ne Kleinigkeit sein, wohl auch Replikationsfehler oder echt dummer bug.



    Alles in allem klingt das doch schon mal sehr positiv würde ich sagen.




    Packaging/Shipping test - Starte mal nen Server und mindestens 2 Clients. Den Server kannste erst mal ignorieren, wichtig sind die clients. Verbinden die sich korrekt? Wenn ja sollte es auf denen so sein wie oben im "Editor Modus" beschrieben.