Beiträge von Exaran

    Ganz einfach. Indem du die Datenbank nicht auf die Seite schiebst und die UID des Schwertes mit der UID des anderen Inventars verknüpfst und aus dem ersten Inventar löscht.

    Bzw. du brauchst es noch nicht mal löschen, du änderst einfach nur die UID des Inventars und gut ist.

    Kannst du mal bitte im Editor diese UID Beispiel in der Variable zeigen?

    Ist das eine Graphendatenbank die du mit der UID verwendest?




    Ich brauche bitte eine ganz präzise Angabe von Dateiformat in Unreal Engine 5.4 damit ich ein umfangreiches (das beste Datensystem) habe, damit ich mein Vorhaben umsetzten kann.
    Das bedeutet das ich diese ganzen Gegenstände im Spiel verschieben kann, Inventar hin und her, sowohl auch in der Welt.
    Jeder Gegenstand muss für sich einzigartig sein, kopien von Gegenständen möchte ich nicht haben. Im Grunde soll jede Waffe anders sein.


    Ich hatte zuvor ein Struct-Array Variable gehabt mit den Variablen darin... jedes mal wenn ich eine Veränderung vorgenommen habe (weil ich dieses Struct erweitern musste um die Informationen darin zu speichern), gab es überall "Unknown Structure" Fehler. Das ist so eine höllische Arbeit das wieder zu fixen.
    Nun habe ich das "Struct"Array in ein "ActorReference"Array umgewandelt, also muss ich komplett alles im Spiel wieder umbauen!!!!!!!
    Das Problem möchte ich damit umgehen!

    Ich will endlich im Spiel weiter kommen weil ich noch so viel machen muss, da hindert mich dieses Datensystem extrem.


    Je mehr Tutorials ich schaue um so mehr unterscheiden sich die Vorgehensweisen, irgendwie macht es jeder anders aber für das was ich machen möchte, finde ich keine Info.


    Ständig lese ich irgendwas von IDs, UIDs aber es wird mir nicht gezeigt wo das rein kommt.


    Bitte helft mir.

    Vielen Dank für die ganzen Infos und darüber habe ich auch schon gelesen/gehört usw.
    Das Problem dabei ist das ich noch bei der Schritt davor (die richtige Datenstruktur aufstellen) bin.

    Muss das Inventar ein Soft- oder Hardreference sein?

    Weil bei mir bereits der Memmory Bereich schon enorm angestiegen ist. Bezüglich dem Thema für Performance und wie damit im Multiplayer umgegangen wird damit es nicht lagy wird usw.
    Disc Space für MyCreature sind schon 5,8gb und Ram Usage 3gb.


    Ich hätte am liebsten ein System wo ich jeden Gegenstand frei verändern kann und dieser exakt so rein und raus gestreamt und abgespeichert wird wie dieser in diesem Zustand ist/war.

    Das verstehe ich echt nicht.
    Das muss dann jemand anderes machen, ich kann das nicht.



    Wisst ihr wie man von einem DataTable durch den ClassReference auf den Actor Reference kommt? Siehe Bild.
    Irgendwie kann ich das nicht umwandeln um die Basis Daten von dem Actor zu bekommen.

    Leider habe ich nur die "ItemDataBaseCreature" Informationen im DataTable abgelegt, weil mehrere Informationen zu immer mehr Problemen geführt haben. Es soll kein Gegenstand in der Welt erzeugt werden! Sondern nur die Informationen vom ActorClass zu ActorReference und von da in das Inventar System (was Actor Reference ist) übernommen werden.

    Technisch gibt es einen Mega Server wo die ganze Welt darauf spielen soll.

    Das dies natürlich nicht sinnvoll ist, wären die Sub-Mega Server kontinental.
    Europa, Asien, Afrika usw.


    Darunter sind die World Server und die wiederum aufgeteilt in Shard Server.

    Der World Server ist diese eine Welt und diese Welt ist unterteilt in die Shard Server, damit die Informationen nur dann geteilt werden wenn diese nötig sind und nicht allgemein.


    Es werden ja nur die Daten übertragen die auch nötig sind.

    Sehe ich einen anderen Spieler, interessiert mich der Inhalt des Rucksacks nicht, es sei denn ich sehe darin hinein.

    Ebenfalls interessiert mich kein Spieler der z.B. eine Insel weiter herumläuft. Das sollen dann die Server unter sich ausmachen. Um den Datenverbrauch zu reduzieren.


    Soweit bin ich noch nicht, es geht mir darum wie ich nun weiter mit dem Grundgerüst der Inventarverwaltung weiter verfahren kann.

    Das ganze möchte ich dann stück für stück weiter in Richtung MMORPG ausbauen.

    Es ist mir derzeit egal wie viele Daten übertragen werden, weil das später optimiert wird. Aber soweit bin ich ja noch nicht.


    Daher ist meine Frage:
    Mit welchem "...Reference" kann ich die ganzen individuellen Daten eines Actors (Gegenstand) abspeichern, um diese von der Welt in das Inventar und wieder zurück zu packen, so das die individuellen Daten auch übertragen werden. Weil genau da liegt das Problem.

    Wichtige Info:
    Jeder Gegenstand muss im Spiel komplett frei veränderbar sein! Und diese Informationen müssen entsprechend in dem Gegenstand abgespeichert werden/sein. Deswegen brauche ich auch keine IDs oder irgendwas womit ich etwas aus einer Default-Datenbank abrufen kann (höchstens einmal zum allgemeinen erstellen des Gegenstandes).

    Barni
    Danke dir für die Infos.
    Ich werde nicht darum herumkommen jemanden einzustellen welcher das ganze besser kann als ich. Daher muss ich zusehen das ich erstmal das alles zum laufen bekomme um das Projekt in die Finanzierung zu bekommen.
    Es muss nicht von Anfang an ein MMORPG sein, sondern kann im Laufe der Zeit dorthin wachsen (das habe ich für mich nun beschlossen). Weil ich ständig in das Problem hineinlaufe das ich in eine unendliche-Problem-Situation gelange.


    Daher um das ganze ein wenig abzukürzen.
    Mir stellt sich noch eine Frage bezüglich dem Inventar und dem speichern von Informationen.
    Jeder Gegenstand im Spiel muss einzigartig sein und sich von anderen Gegenstände unterscheiden.

    Beispiel:
    Langschwert A hat 100 Schaden (default)
    Langschwert B hat 120 Schaden
    Langschwert C hat 30 Feuerschaden
    Langschwert D hat 10 Schaden auf alle Schadensarten

    usw.

    Daher müssen alle Informationen eines Gegenstandes für sich selber gespeichert werden. Damit jeder Gegenstand auch einzigartig ist, darauf baut das ganze Spielprinzip auf. Ich möchte nicht das die Gegenstände gleich sind.


    Bisher verwende ich als Inventar-System nur das "ItemDataBaseXYZ" Structure.
    Darin enthalten, ItemName, Mass usw.

    Im Actor selber sind aber noch zusätzliche Structures z.B.
    Damage (mit vielen weiteren Variablen darin).

    Darauf habe ich z.B. über das bisherige ItemDataBaseXYZ Structure kein Zugriff, weshalb ich das leider abändern muss. Damit ich zugriff auf die anderen Variablen habe und diese speichern kann, sonst wird nur der default wert genommen.


    Die Frage ist, bleibt dann nur noch der "ActorReference" als Inventar-System übrig?
    Weil ClassReference funktioniert nicht, ich kann damit nur die DefaultClass abrufen, was ja keine Informationen speichern kann.

    SoftReference scheint mir auch nicht hilfreich zu sein.


    Kann ich mit ActorReference alle Informationen hin und her speichern, vor allem wenn ich SpawnActorFromClass mache um dann vom Inventar alle Informationen in den gespawnten Actor zu übertragen?
    Spricht, das mein Langschwert B auch Schaden 120 hat und nicht wieder Langschwert A mit 100 Schaden ist, weil das nicht gespeichert werden kann?

    Es geht hier nur um das übertragen von Informationen. Das ganze muss dann sowieso später aus dem Spiel in eine externe Datenbank übertragen werden, um von da wieder zurück in das Spiel wenn die Abfrage dafür nötig ist.



    Habe mir sehr viele Tutorials dazu angeguckt und fast alle verwenden das System was ich bisher verwende, aber hier stößt man schnell auf Probleme mit den "Unknown Structure" wenn man etwas ändern möchte, weshalb ich davon weggehen möchte. Desweiteren läuft man da in performance Probleme hinein, wodurch das Thema begonnen hat.

    Wenn man ein kleines Spiel macht mag das noch funktionieren aber wenn es größer wird geht es nicht... also schon aber das wäre eine Tortur ständig alles auszubessern.

    Das mit der Servertechnik werde ich nicht schaffen, dass würde ich machen wenn ich entsprechend Spendengelder gesammelt habe um dann einen Experten einzustellen welcher davon viel mehr Ahnung hat.

    Deshalb würde ich erstmal das mit dem Server abhaken, trotzdem war mir die Erwähnung dafür wichtig, weil die Gegenstände in der Welt ja trotzdem abgespeichert werden müssen.


    Vom Serverprinzip würde ich es ähnlich machen wie bei einem anderen Spiel:

    1. Login-Server (überprüft ob Spieler zugriff hat)
    2. World-Server (Mehrere Welten um die ganze Spielerlaste zu verteilen, man kann frei zwischen den World-Servern reisen)

    3. Shard-Server (Welcher eine bestimmte Großregion im Spiel verwaltet)

    4. Region-Server (Welcher eine einzelne Region verwaltet)


    Shard und Region Server verwalten die Großregionen und Kleinregionen, und teilen so die Kommunikation ein. Spieler in Region A brauchen keine Information von Spieler in Region B, so als Beispiel.



    Hat dann wer ein gutes Multiplayer Tutorial zum abspeichern von Gegenstände, damit diese nach einem Serverneustart z.B. wieder an Ort und Stelle sind usw.?

    Im Grunde kann jede Waffe jede Schadensart gleichzeitig haben.

    Darum habe ich das ganze ja in 6 Hauptstrukturen aufgeteilt. Weil auf Essen (als Beispiel) brauche ich ja keine Kampfwerte haben.


    Das Problem ist halt, dadurch das alle Werte frei modifizierbar sind, muss ich diese über ein geordnetes Structure System ansprechen können. Ich hatte es vorher mit Variablen im MasterActor (Parent) gehabt aber das bedeutet wieder neue Probleme, weil man diese wiederum nicht so problemlos ansprechen kann. Bei einem Struct habe ich die wichtigsten Werte und alles was nicht wichtig und Gegenstandspezifisch ist, kann ich immer noch den separaten Child Actor packen.
    Z.B. ein Wohnhaus was einen Heilbrunnen hat. Das muss ich nicht in einem Struct machen, sondern kann es über den Actor selber regeln.
    Aber wer das Wohnhaus besitzt (Name, Actor usw.) das brauche ich im Struct um das besser zu identifizieren, um damit auch die Rechte für die Interaktion zu ermöglichen. Usw.


    Das hört sich so an als ob ich alles möglich in ein Hauptstruct packe, aber das stimmt nicht. Eben nur das wichtigste was alle Gegenstände dieser Kategorie betrifft.

    Gewicht ist so ein Wert, das jeden Gegenstand betrifft. So das man auch ein Haus mit Inhalt in die Inventartasche packen kann.




    Ich möchte vom Spielprinzip her in eine ganz andere Richtung gehen in der das Spiel personalisiert wird, und nicht auf Masse monoton und langweilig wird. Bin derzeit mit allen MMORPGs total unzufrieden weil diese so gut wie keine Inhalte bieten (monotone Quests sind kein Inhalt). Langweiliges Grinden und ständiges wiederholen von wiederholbaren Aufgaben ist kein Content. Davon möchte ich komplett weg und etwas ganz neues machen.


    Daher möchte ich ein Spiel machen in der man selber Inhalte erstellen kann. Spieler erzeugen für Spieler Content (Player based content) aber eben das wiederum auf Rollenspiel basis.



    Für Cheats usw. habe ich mir bereits ein System ausgedacht das dann eingreift.

    Übermächtige Gegenstände finden den Spieler und nicht Spieler finden übermächtige Gegenstände. Auch da möchte ich es andersherum machen.

    Mich würde es trotzdem mal interessieren wo würdest du bei dir im Projekt diese Werte hin packen? Wenn nicht in ein Struct.

    Als Beispiel die Schadensarten im Spiel:

    - Feuerschaden

    - Eisschaden

    - Schattenschaden

    - Lichtschaden

    - Giftschaden

    - Blitzschaden

    - Physischer Schaden

    - Blutungsschaden

    usw.


    Diese Werte müssen auf alle Waffen drauf, weil alle Waffen das Potential haben diese Schadensarten zu machen. Etwa in dem man diese im Spiel mit Mods ausrüstet (die Mods sind aber individuell und nicht fest vorgegeben! Also es gibt eine Basis Mod die man im Spiel durch Herstellen verändern kann.)

    Das gleiche gilt als Negativform bei Rüstungen, Schmuck, Bauteilen (Festungsmauern, Fallen, uvm.)


    Alle diese Werte müssen Live im Spiel veränderbar sein, siehe Modbar.

    Das weiss ich.


    Bitte beim Thema bleiben. Hier geht es um Open World und was dazu gehört. Das andere Thema ist bereits beendet.

    Nichts für ungut, aber du hast doch garantiert dein vorheriges Problem noch nicht im Griff und nun träumst du von einem Megaserver?

    Ich habe das vorherige Thema beendet, weil man mir nicht zuhören will.
    Ich brauche diese Variablen weil es ohne nicht geht und muss dann lesen das ich das nicht brauche, obwohl ich es brauche. Da dreht sich die Diskussion im Kreis. Noch dazu ist das ganze von meinem Hauptproblem (Editor Performance) zu weit abgedriftet. Ich habe keine Performance Probleme im Spiel, sondern mit dem Editor. Das sind zwei unterschiedliche Dinge.


    Daher macht es keinen Sinn in diese Richtung weiter zu diskutieren.
    Ich will voran kommen und nicht stehen bleiben und endlos im Kreis drehen.

    Ich frage mich wie du mehrere Schadensarten in eine Zahl packst.


    Z.B.

    Feuerschaden

    Eisschaden

    Blitzschaden

    Schattenschaden

    usw.


    Wie kannst du das in eine einzige Variable als Zahl packen. Wie kann die Zahl später erkennen welche Schadensart das ist?

    Tomarr

    Ich brauche diese Werte und noch viele mehr damit das alles gut funktioniert.


    Ich würde an der Stelle über die Sinnigkeit nicht weiter reden wollen, weil ich das Spiel eben ganz anders aufbauen möchte.


    Viel wichtiger wäre, wie kann ich diese Dinge in der Open Welt zur Persistenz bringen, also abspeichern/rein-raus-Streaming usw.

    So das dass ganze performant ist.

    Wenn in einer Höhle (Wie genau grenze ist das ein?) 10 Schatzkisten mit Inhalt sind, Z.B. Waffen, Rüstungen, Tränke, Geld uvm..
    Dann soll das ganze alles nicht vorhanden sein wenn kein Spieler in der Nähe ist.
    Es soll jedoch aber im Hintergrund ein Ereignis passieren, in dem Monster diese Höhle erobern und sich dort einnisten. (Kein reguläres spawn system) Sondern dynamisch durch eine kleine Horde/Gruppe/Armee die da als NPCs einmarschiert und sich darin verteilt und zusätzlich Verteidigungsgebäude errichtet (Fallen usw.).

    Wie kann ich diesen Bereich so von allem anderen abgrenzen?
    Die Spieler können oder sollen dann informiert werden das eine Horde Monster die Höhle erobert und können die zukünftigen Besatzer dann während des Einzugs, oder tage später nach der Besatzung angreifen und auslöschen.