Inventar Widgets (Gegenstände)

  • Nimm nen for loop. Kannst den ja auf ne Taste legen wenn du ihn nicht bei Spielstart anhauen willst. Damit kannst du ja über die Index Werte einstellen wieviel du da reinkippen willst. Mit dem first und last index stellst du ein wie oft der Laufen soll. Also first index 1 last index 25000 dann läuft der 25,000 mal. Damit befüllst du dein struct oder data table, lässt mit jedem loop durchlauf 1 item adden. Wenn du es spannend machen willst nimmst du ne rnd nummer als Wert, dann steht in jedem auch was anderes drin. Am besten mit irgendwas füllen was von der Menge der Daten her realistisch ist, also wenn du sonst nen Namen wie "Das Superschwert der Meister Elfen (Ultra rar)" drinstehen hast solltest du es auch mit ner entsprechend langen string oder zahl zukotzen und nicht nur "0". Machst noch nen print string am Ende, dann siehst du auch wenn es fertig ist und weisst "Ah ok dauert 3 Sekunden das mit 25.000 Schrott Einträgen zu füllen". Dann schaust du mal ob es von der Performance Unterschiede macht gegenüber 3 items. Kannst das ganze ja auch mal kompilieren und schauen wieviel RAM der dann verbraucht mit 25.000 Items gegenüber 3 items (Im Task Manager spicken).

  • Man sucht Gegenstand X in der Datenkbank mit ID Y (unbekannt).

    Wenn ich X kenne, wieso brauche ich dann ID Y?

    Nur um es mal richtig zu stellen:

    Ein "DataTable" ist keine Datenbank, sondern einfach nur eine Tabelle^^

    Datenbank wäre es, wenn man darin Werte während des Spiels, speichern könnte.




    Denk mal so:

    Es geht dir vorrangig um die Performance, wieso dann immer das Data Table per Loop nach dem Item durchsuchen lassen, wenn du einfach direkt zu der ID springen könntest?


    Per "Find" Node könntest du das machen, was aber auch nur nach dem Item sucht, bis es gefunden wurde (höchstwahrscheinlich per Loop).

    Außerdem musst du da dann noch alle Daten eingeben (selbst die, was du nicht kennst), denn das "Find" Node sucht das exakte Item und nicht irgendeins, wo nur eine einzige Variable übereinstimmt.




    Ich hab jetzt mal mit nem Freund darüber geredet, der GameDesign studiert, dort lernt man wohl etwas über Objekt-orientiertes Arbeiten, also das was du scheinbar vor hast, dafür braucht man aber kein DataTable, da man einfach die ganzen spawnbaren Classes in nem Array hat und dann eins davon spawnt.


    Bedeutet aber auch, dass man alle Classes als BPs im Ordner hat und alle einzeln aufrufen muss, um etwas zu ändern...


    Hier die Unterhaltung:

    Frag mich aber nicht was er mit Matrix meint...


  • Das mit der ID ist schon ok, wenn man die ID kennt.

    Je mehr Gegenstände im Spiel sind um so weniger kennt man die IDs auswendig und da fängt das Problem an.

    Weil, wenn die ID unbekannt ist, muss man erst nach der ID suchen.


    Ich habe echt gedacht das der DataTable die Datenbank ist, denn darin habe ich alle Gegenstände gespeichert und rufe diese von dort ab.

    Ändere ich in der DataTable etwas, ändert sich das auch bei allen Gegenständen (entsprechend).


    Die Child-Actor sind bei mir auch soweit unbenutzt, nur wenn es um Spezial-Funktionen geht, die nur der entsprechende Gegenstand kann.

    Siehe Bild: Die ganzen Child-Actor sind leer denn diese bekommen die Information vom DataTable (Datenbank).

    Daher kann ich auch alle Gegenstände im Spiel frei modifizieren und die Werte werden NICHT automatisch überschrieben (was in allen anderen Systemen normal so ist).

    Die Child-Actor sind eine leere Hülle, ABER wenn man möchte kann man dort noch Spezial-Zeug einbauen was z.B. andere nicht haben sollen.
    Beispiel für ein Spieler-Event: Wenn man mit der 8mm Munition schießt soll am Einschlagpunkt ein Geschenk spawnen, dies mache ich dann nur in diesem Blueprint-Class und nicht bei jeder Munition.

    Es gibt damit unendlich viele Möglichkeiten und kann das ganze entsprechend erweitern.

    Bei meinen Waffen Z.B. habe ich dort in den Child-Actor noch Zusätze eingebaut, die die Waffe entsprechend Einzigartig machen.



    Die ganzen Child-Actor oder das MasterItem, kann ich in ein Array im Spiel laden aus dem ich dann direkt Gegenstände erzeugen kann, ganz ohne ID und sonst etwas. So kenne ich das auch aus anderen Projekten.

    Eine ID braucht man so gesehen nur, wenn man keine SpawnFunktion im Spiel hat.


    Für die Mitarbeiter finde ich es benutzerfreundlicher wenn diese direkt im Spiel über ein Katalog-System den gewünschten Gegenstand suchen und erzeugen kann.

    In das Suchfeld bei dem Katalog z.B. "Helm" eintippen und das System durchsucht das ganze Datatable (für Rüstungen) mit dem Zusatzfilter (Helm-Sockel) und spuckt dabei entsprechend den Namen oder den BoolSockel aus.

    So gesehen werden alle Helme angezeigt die über die Eigenschaft Helm oder den Namen im Actor verfügen.

    Also es wird nicht die ganze Datatable durchgeschaut, sondern spezifisch nur das was zutrifft.


    In der Katalog-Liste werden alle Helme angezeigt und dort mit der Maus darüber fahren, ein ToolTip wie im Spiel öffnet sich bei dem man ganz genau die Werte und alles sieht. Ist der ausgewählte Gegenstand richtig, einfach auf Spawn drücken und der Gegenstand erscheint im Spiel.



    Wenn das DataTable nicht die Datenbank ist, was ist dann die Datenbank in der UE4, die ich auch live modifizieren kann (ohne Word oder sonstiges)?

    • Offizieller Beitrag

    Jedes Objekt das du im Datatable einträgt bekommt automatisch id und diese ID ist einmalig für jedes Objekt in deinem Inventar.

    zb.

    ID: 1

    Name:Taschenlampe


    Das heißt ID1 ist eine Taschenlampe.


    Somit kannst du im Datatable noch mehr Daten eingeben, zb die Slotanzahl oder wieviel Schaden die Taschlampe macht wenn man zuschlägt.

    Im Prinzip eine Exeltabele mit Informationen.


    Ich hab das so gemacht, das ich bei Levelbeginn alle Names in einen Array geladen haben. Somit kannst du sehr schnell den Schaden bei Item 1 abfragen oder weiter verarbeiten.


    Das tolle an den Datatables ist, das du Zahlen nicht in einer Variable oder im Blueprint suchen und ändern musst.

    Wenn das DataTable nicht die Datenbank ist, was ist dann die Datenbank in der UE4, die ich auch live modifizieren kann (ohne Word oder sonstiges)?

    Am Datatable kann man zur Runtime nix verändern, dafür ist es auch nicht gedacht.


    Datatables = nur Lesen nicht schreiben


    Der klare Vorteil bei datatables ist "mal eben" den Damage einer Waffe zu erhöhen, oder die Reichweite zu verkleinern / vergrößern.

    Vor allem fürs Balancing werden datatables interessant.

    Es gibt Plugins mit denen man zwar datatables verändern kann, aber ich denke dafür sind Arrays besser geeignet.

  • Mit Gegenstände Modifizieren meine ich natürlich den Actor und nicht den Gegenstand im Datatable.
    Man möchte ja live den Gegenstand im Spiel verändern und nicht über externe Dinge.


    Für das Inventar habe ich auch eine ID, nennt sich bei mir "Index".

    Ich dachte mit ID sei die ID in der Datatable gemeint!


    ID im Inventar (also temporäre ID), dass habe ich auch.

    Nur habe ich keine feste ID für die "Datenbank" gemacht.

    Da ich gerne flexibler sein möchte.

  • Das mit der ID ist schon ok, wenn man die ID kennt.

    Je mehr Gegenstände im Spiel sind um so weniger kennt man die IDs auswendig und da fängt das Problem an.

    Weil, wenn die ID unbekannt ist, muss man erst nach der ID suchen.

    Das DataTable hat immer 2 Einträge die Standard sind, einmal die Zahl vorne dran (die ID, bzw. der Index) und dann noch den Row Name.


    Wenn du jeder Row einen eindeutigen Namen verpasst hast (und nicht Standard gelassen, wie z.B. NewRow_0, NewRow_1, NewRow_2, usw.), kannst im Suchfeld nach dem Namen suchen, den du willst und schon wird alles entsprechende aufgelistet:

    1, 8 und 27 sind die Indexes (IDs) anhand der Reihenfolge im DataTable mit dem Namen "Wall" ^^



    Wieso ein DataTable keine Datenbank ist, hat ja Sleepy schon ausführlich beschrieben.

  • Das Problem was ihr hier diskutiert, ist schon spannend. Es fällt mir jedoch schwer einen Anwendungsfall abzuleiten. Der Nutzer kommt doch in keinem Spiel (zumindest die ich kenne) dazu die gesamte Datenbank eines Spiels zu durchsuchen.


    Auf wieviele DataTable man etwas aufteilt, spielt keine Rolle, weil die DataTable referenzierbar sind. Das Inventar hat also bei Items aus mehreren DataTable immer eine Spalte in der die Referenz vermerkt ist. Ein Inventar damit zu durchsuchen, ist der Performance egal.


    Wenn man somit DataTable für verschiedene Kategorien von Daten anlegt, stellt sich kein Problem. Außerdem kann man ein Array anlegen, wenn man es denn unbedingt darauf anlegt, dass alle Daten aus allen DataTable in einem Array liegen, vomit man letztlich auch alle Items durchsuchen kann.


    Im Übrigen sucht der Nutzer nach Namen und nicht nach IDs. Also gibt der Entwickler/Ersteller dem Nutzer vor, in was für einer Datenbank er was genau suchen kann. Alle Items eines Spiels zu durchsuchen, sollte also von vornherein unmöglich sein.


    Typischerweise lässt man den Nutzer das Inventar durchsuchen oder beispielsweise spezielle Gegenstände. Wenn er bei nem Händler steht, dann kann er dessen Inventar durchsuchen oder wenn er in einem Baumenü ist, dann kann er alles durchsuchen, was für ihn als Bauteil zur Verfügung steht.


    Letztlich sollte man das Problem also selbst klein halten.

  • Vor diesem Problem wird jeder Entwickler stehen, wohin mit den ganzen Gegenständen und wie damit umgehen.


    Gut das man zumindest selbst entscheiden kann wie man das alles macht und nicht bereits von der Engine fest vorgegeben ist (z.B. das man Gegenstände nur so und so verwalten kann).


    Ich sehe das so das wenn z.B. 1000 Spieler zur gleichen Zeit zugriff auf die Datenbank (umgangssprachlich) haben und alle Gegenstände in dieser einen Ansammlung sind würde der Server zu sehr belastet werden. Dies ist jedoch nur eine Vermutung von mir, ob das keine Auswirkung hat weiss ich nicht.



    Wie kann ich sicher gehen, dass der gewünschte Gegenstand aus dem Inventar auch wirklich aus dem Array gelöscht wird?

    Derzeit verwende ich das so:


    Ich habe noch manchmal das Problem das ein Gegenstand nicht richtig aus dem Array entfernt wird.

    Remove Index bei dem gewünschten Array.

    in 90% der Fälle funktioniert das auch.


    Den Index bekomme ich entsprechend von dem Widget das in dem Inventar-Menü ausgewählt wird (was letzendlich der Gegenstand ist).

    • Offizieller Beitrag

    Ich sehe das so das wenn z.B. 1000 Spieler zur gleichen Zeit zugriff auf die Datenbank (umgangssprachlich) haben und alle Gegenstände in dieser einen Ansammlung sind würde der Server zu sehr belastet werden. Dies ist jedoch nur eine Vermutung von mir, ob das keine Auswirkung hat weiss ich nicht.

    Was meint du den mit Datenbank ?

    Aber auch dafür gibt es Lösungen. Im SAP Bereich können auch nicht 1000 Kunden einen Einträg lesen, und gleichzeitig darauf schreiben.

    Das Problem ist folgendes:


    1.Du hast einen Wert von 100. Jemand liest diesen und addiert 10 dazu. Und schreibt 110.

    2.Gleichzeitig, liest jemand anderen den selben Wert und addiert 20 dazu und schreibt 120.


    So entstehen natürlich Fehler. Du müsstest die Einträge in Reihenfolge lesen und schreiben und sicher stellen, das erst gelesen wird, nachdem geschrieben wurde.


    Dass sind wahrscheinlich die 10 % Fehlerquote

    Den Index bekomme ich entsprechend von dem Widget das in dem Inventar-Menü ausgewählt wird (was letzendlich der Gegenstand ist).

    Der Index ist ja nur dafür da um den Gegenstand einwandfrei zu identifizieren. Unreal rechnet halt lieber mit Zahlen. Für Unreal ist es einfacher nach dem 5. Eintrag zu suchen mit dem "Name" "Taschenlampe"

    Es macht halt keinen Sinn nach Taschenlampe zu suchen oder Taschenlampe zu schreiben und dann zu prüfen welche ID die Taschenlampe bekommen hat um damit dann weiter arbeiten zu können.

  • Ich sehe das so das wenn z.B. 1000 Spieler zur gleichen Zeit zugriff auf die Datenbank (umgangssprachlich) haben und alle Gegenstände in dieser einen Ansammlung sind würde der Server zu sehr belastet werden. Dies ist jedoch nur eine Vermutung von mir, ob das keine Auswirkung hat weiss ich nicht.

    Wie bereits gesagt, Data-Table ist keine Datenbank, auch wenn du das noch so oft nennen willst, wird es das auch niemals umgangssprachlich sein werden, sondern immer nur zu Problemen führen, siehe Antwort von Sleepy ^^


    Hier mal 2 Übersetzungen:

    Datenbank = Database

    Data Table = Datentabelle


    Wie du siehst, hat Datenbank überhaupt nichts mit Data Table zu tun und da wir hier ein UE4 Forum sind, sollte man im Zweifelsfall auch die Namen verwenden, die die Engine verwendet, um genau solchen Problemen aus dem Weg zu gehn...



    Ein Widget existiert nur beim Player, nicht auf dem Server, wenn du also dein Widget mit Details füllst, wird nur das vom Server abgerufen, was in deiner Struct drin ist, wieviel du da rein machen willst, bleibt dir überlassen, je weniger, desto weniger Serverlast.

    Alles was du im Widget vom DataTable abrufst, verursacht genau 0% Serverlast^^



    Was meint du den mit Datenbank ?

    Data-Table^^

  • Hehe ja das mit der Bezeichnung ist schon ne witzige Sache.

    Gibt ja noch viel mehr andere Bezeichnungen die für Verwirrung und Unterhaltung führen.

    Siehe "Twink" als weitere Charaktere an, obwohl das ja was ganz anderes ist.



    Warum ich zur Datatable Datenbank sage ist weil das Datatable genau die Funktion einer Datenbank übernimmt.

    Eine Datenbank ist ja nur ein Ort an dem Informationen gespeichert werden.

    Da der Datatable entsprechend an die Struct gekoppelt ist und schreibgeschützt ist, beziehe ich meine Informationen (Gegenstände und mehr) aus diesem Datatable.



    Wie mache ich aus einer Datatable eine Database die ich direkt im Editor benutzen kann, dabei müssen die Werte IMMER 100% richtig sein, auch wenn sich später etwas im Datatable verändert?


    Warum gibt es überhaupt ein Datatable, wenn man normalerweise eine Datenbank benutzt würde?





    Mit 1000 Spieler gleichzeitig schreiben, meine ich allgemein das System.

    Da jeder Gegenstand einzigartig ist, kann dieser auch entsprechend verändert werden ohne das andere davon betroffen sind.

    Ich meine damit nicht das 1000 Spieler etwas in der Datatable/Database verändern, sondern die Informationen daraus in den einzigartigen Gegenstand fließen und diese dann selbst verändert werden können.

    • Offizieller Beitrag

    Das ist immer so eine Sache mit den Begrifflichkeiten.


    Eine Datenbank ist ja nur ein Ort an dem Informationen gespeichert werden.


    Genau das ist dass Problem bei beim Datatable, du kannst nur aus einem Datatable lesen und nicht schreiben.

    Meiner Meinung nach ist der Unterschied vom Data Table und einer richtigen Datenbank, dass man in eine Datenbank Werte hineinschreiben kann und weiter verarbeiten kann. Genau das kann das Datatable nicht.


    Warum gibt es überhaupt ein Datatable, wenn man normalerweise eine Datenbank benutzt würde?

    Das Datatable ist dafür da um einmal Werte auszulesen und zu verarbeiten.


    Du kannst in Data Table zb die Geschwindigkeit reinschreiben wie schnell dein Charakter schießen soll. (Irgend ein integer Wert) Willst du die Schussgeschwindigkeit schneller machen, änderst du nur den Wert im Datatable und muss nicht in all deinen Blueprints nach der Variable suchen wo du den Wert reingeschrieben hast.

    Du könntest auch die Kamera Neigung oder den minimal und maximal zoom in dein Datatable hinterlassen schreiben.


    Bei einem Bausystem kannst du dort die Werte hinlegen wie breit, lang und hoch deine Objekte sind. Du kannst ein Icon hinterlegen und beispielsweise das Gewicht. Somit kannst du im Datatable dein Bausystem schnell dynamisch erweitern ohne jedesmal dein Blueprint umbauen zu müssen.


    Was aber wie gesagt nicht geht, ist dein Datatable zur Runtime dynamisch zu erweitern.

    WIe oben erwähnt gibt es Plugins die das können aber die Frage ist ob dafür Arrays nicht besser geeignet sind.


    Deswegen würde ich bei einem Datatable nicht von einer Datenbank sprechen, weil eine Datenbank meiner Meinung nach den zweck des lesen und schreibens erfüllt haben MUSS.

  • Warum ich zur Datatable Datenbank sage ist weil das Datatable genau die Funktion einer Datenbank übernimmt.

    Eine Datenbank ist ja nur ein Ort an dem Informationen gespeichert werden.

    Zitat

    Eine Datenbank, auch Datenbanksystem genannt, ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe einer Datenbank ist es, große Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern und benötigte Teilmengen in unterschiedlichen, bedarfsgerechten Darstellungsformen für Benutzer und Anwendungsprogramme bereitzustellen.

    https://de.wikipedia.org/wiki/Datenbank


    Das Verwalten der Daten ist der Hauptgrund für eine Datenbank.

    Das ist der Teil den Du nicht hinbekommst.


    Es wird Zeit sich ein wenig mit der Theorie von Datenbanken zu beschäftigen.

  • Ich sehe das so das wenn z.B. 1000 Spieler zur gleichen Zeit zugriff auf die Datenbank (umgangssprachlich) haben und alle Gegenstände in dieser einen Ansammlung sind würde der Server zu sehr belastet werden. Dies ist jedoch nur eine Vermutung von mir, ob das keine Auswirkung hat weiss ich nicht.

    Wie gesagt, sehe ich kein Anwendungsfall dafür. Ich kenn jetzt dein Konzept nicht. Aber mal folgendes:


    DataTable: Du kannst hier nur vorgegebene Daten auslesen. Willst du Daten ändern, erhält dein Spiel ein Update. Was mich zu der Frage bringt, warum Spieler den DataTable vom Server auslesen? DataTable bekommt der Spieler auf seinen Rechner.


    Wenn du in einem DataTable suchen lässt, wobei hier auch erst wieder der Anwendungsfall betrachtet werden muss, dann kannst du das auf dem Server machen, der Nutzen wird allerdings nicht vorhanden sein.


    Array: (Datenbank) In einem Array kannst du alles ändern was du willst. Das wohl typischste Array, was wir kennen, dürfte das Inventar sein. Natürlich kannst du in der Programmierung für alles mögliche ein Array anlegen. Dass du ein Array im Sinne einer echten Datenbank hast, wo alle Gegenstände bzw. Objekte deines Spiels drinn sind, halte ich mal für ausgeschlossen, da ein Anwendungsfall dafür nicht existieren dürfte.


    Abhängig von deinem Konzept, brauchst du also nur wenige Arrays (vorgegebene Objekte) oder mehr Arrays (individualisierbare Objekte).


    Soll der Spieler Eigenschaften bspw. durch Crafting eines Gegenständs ändern könne, dann brauchst nen Array. Erhält der Spieler von dir vorgegebene Gegenstände, dann brauchst nur nen DataTable.


    Beispiel DataTable: Apfel <- hat nur vorgegebene Attribute (Haltbarkeine, Gesundheitsregeneration beim Essen) den Apfel kann dein Spieler nicht "pimpen"


    Array: Schwert/Schild <- aus einem DataTable lootet dein Spieler ein Schwert, was vorgegebene Werte hat (Schaden, Haltbarkeit) jetzt willst du, dass der Spieler des Teil verbessern kann. Hierbei spielen verwendete Materialien und sein Skill etwas zu Verbessern eine Rolle. Es sollen zufällige Werte am Ende rauskommen. Das neu entstehende Item steht in keinem DataTable und muss in einem einem Array mit einer individuellen ID abgespeichert werden.


    Es muss letztlich ein Anwendungsfall diskutiert werden. Denn anlegen eines Array aus einer Datenbank ist programmierbar und muss nur eindeutig sein. Dein Inventar hat immer eine ID für den Inventarplatz und ein Spalte als Referrenz für den Datatable oder eben einen leeren Platz für ein Individuelles Item.

  • Ich glaube du kommst da noch immer etwas durcheinander.


    Also um mal auf die Datenbank zurückzukommen, du brauchst dir bei gut aufgesetzten Datenbanken wirklich keinen Kopf machen wie die Performance ist. Es kommt immer darauf an wie sie aufgesetzt ist. Und ich glaube die Datenbanken von Google dürften weit mehr Zugriffe haben als ein paar tausend. Klar, die haben auch eine gewisse Rechenpower dahinter, aber so eine Datenbank wirst du ja auch nie in einem Spiel haben, wenn du überhaupt eine Datenbank benötigen solltest.


    Was dein Spiel angeht, einzigartige Objekte. Nun, du wirst nie ein Spiel programmieren können, wo völlig überraschend ein Objekt vorkommt, welches du als Programmierer nicht kennst. Das ist bei Diablo genau so wie bei Minecraft oder was auch immer. Jedes Objekt ist bei der Programmierung bereits vorhanden.


    Und auch wenn du Objekte zusammenfügen kannst und diese dadurch neue Eigenschaften bekommen, ob es jetzt bei Diablo ist, wo dann gesockelt wird, oder andere RPGs wo man eine Rüstung verzaubern kann oder was auch immer. Die sockelbaren Objekte bei Diablo haben halt eine Variable, die bei der Verwendung des Sockels dann halt mit den zusätzlichen Werten des Edelsteins oder Seelensteins gefüllt werden. Und diese Attribute werden dann halt dem Gegenstand hinzugefügt. Aber eigentlich ist die Waffe schon vorhanden, und je nach Anzahl der Sockel dann halt mit ein oder zwei zusätzlichen Variablen, die dann gefüllt werden können. Und diese Variablen kannst du gegebenenfalls dann halt auch speichern.


    Sprich du hast dann ein Inventarsystem, das ja in der Regel auch nicht auf einer Datenbank beruht, Also intern kann man es vielleicht als solche bezeichnen, weil im weitesten Sinne ist es ja schon eine, aber du brauchst da halt nicht mySQL oder so installieren, das verstehe ich dann unter einer richtigen Datenbank, und du hast dann halt noch ein kleineres Inventarsystem, wenn ich das mal so vergleichen kann, wo du die Modifikationen der Waffe, oder eigentlich auch jeden Gegenstandes, speicherst.


    Im weitesten Sinne sind beides Inventarsysteme. Einmal für das richtige Inventar, welches speichert welche Gegenstände der Spieler hat, und einmal ein etwas kleineres Inventarsystem wo halt die Gegenstände gespeichert werden aus denen deine Waffe oder was auch immer besteht.

  • Ein Array kann man auch nicht als Datenbank machen, da man in einem Array keine Werte speichern kann.

    Denn diese Frage hatte ich schon mal gestellt, wie ich Dinge in einem Array speichern kann.

    Demnach muss der Inhalt des Arrays in eine externe Datei gespeichert werden (am besten Account-Datei), um von dort abgerufen/abgespeichert zu werden.


    Jetzt bin ich maximal verwirrt.

    Laut meiner Vorstellung ist eine Datenbank in der ich Informationen speichern/abrufen und dort Werte verändern kann, was mit dem Datatable exakt möglich ist. Ich muss ja nichts im Livebetrieb in das Datatable speichern (macht auch keinen Sinn), sondern nur daraus lesen.


    Wie genau speichert ihr eure Gegenstände?

  • Das geht nicht.

    Im Array werden keine Daten gespeichert.

    Also @Runtime werden definitiv Daten im Array gespeichert und sind auch änderbar. Wenn du mit abspeichern ein Savegame meinst, dann werden die im BP auch ins Array gelegt und dann auf die Festplatte in einen vorgegebenen Ordner gelegt. Dazu gibt es eine Unmenge an mehr oder weniger langen Tutorials.


    Solange also dein Array im Charakter oder im Persistant Level liegt, haste die Daten (nicht nur Arrays) jederzeit zur verfügung, Natürlich musst du beim Nutzen von Streaming oder laden/speichern von einzelnen Level/Maps darauf achten, dass die Daten übergeben oder sonst (savegame) abgespeichert werden.

    • Offizieller Beitrag

    Im Array werden keine Daten gespeichert.

    Speichern hat für dich definitiv eine andere Bedeutung.


    Speichern bedeutet nicht, etwas auf der Festplatte zu Speichern zumindest nicht zwangläufig.


    So kann man sowohl in einem Array, einem Float, einem Integer und sogar in einem Boolean etwas speichern. Das dies erstmal nicht auf der Festplatte passiert ist schon klar.


    WIe Annubis schon sagte: Schau dir mal das Savegame an, damit kannst du alles was sich in einem Array oder einer anderen Variable befindet mit einem Bums speichern und wieder laden.


    Stell dir mal vor, du baust dein Spiel und hast irgend wann ne menge Variablen die du speichern willst.

    Wenn du recht hättest, und man in einem Array wirklich nix speichern könnte, dann müsste man ja das gesamte Spiel umbauen.


    Wie so oft der Mathew Wadstein:


    https://www.google.com/search?…x=_AIfbX8HnE4Kga_e9kZgM11