Soweit ich das herausgefunden habe, werde ich um ein SQL Datenbanksystem nicht herum kommen, vor allem damit es später auch noch Crossplay Fähig ist. Das wäre halt auch für mich Prima einen möglichen Fuß im Bereich Consolen zu haben. Das ist aktuell unwichtig, aber erwähnenswert.
Mir ging es darum das ich erstmal eine Datenstruktur habe mit der ich in dem aktuellen Zustand arbeiten kann, um erstmal Gameplay usw. zu haben. Auch wenn es nicht auf Servern usw. läuft. Irgendwo muss man einen Abstrich am Anfang machen.
Daher habe ich anfangs mein "Datatable-Struct" Array-Variable" (als Inventar) umgeändert, in den "ActorReferenc" Array-Variable (z.B. MasterConsume, was ein Actor ist). Dadurch werden auch alle Werte exakt so abgespeichert wie dieser zu dem Zeitpunkt war. Was erheblich bequemer ist und auch keine Unknown Structure Eror verursacht, wenn man eine Änderung daran vornimmt.
Das funktioniert soweit auch ganz gut, aber wenn ich aus einem Datatable, indem ich nur eine begrenzte Anzahl an Basis-Variablen habe und möchte diese nun bei der Gegenstanderstellung auslesen und in den nun neuen Gegenstand einschreiben, dann benötigte ich dafür eine quasi leere Variable mit "MasterConsume" als Actor Reference, mit dem ich dann die Daten aus dem Datatable hineinladen möchte um diese damit zu befüllen. Aber das geht leider nicht!
Auch wenn ich vorher ein SpawnActorFromClass mache, um das Problem zu übergehen und diesen dann Destroy-Actor mache, verschwindet auch die Information darüber und der ganze Gegenstand ist weg, auch im Inventar. Obwohl da zwischengespeichert.
An der Stelle frage ich mich, warum die Unreal Engine nicht automatisch von Grund auf ein SQL Datenbank System, voll integriert anbietet, wenn es doch für Online Spiele immer wichtiger wird? Da wäre dann eine Schnittstelle da um es mit einem externen Server zu verbinden. Weil nicht nur ich habe das Problem, sondern viele andere auch!
Ich stelle es mir wie ein Supermarkt vor.
Ich bin Kunde mit einem Einkaufskorb (Lokales Inventarsystem in Unreal Engine)
In diesen Einkaufskorb packe ich z.B. Schwert, Helm, Rüstung, dass wird für diesen Moment so beibehalten.
Gehe ich damit zur Kasse, bezahle die Artikel und verlasse den Supermarkt, werden die ganzen Informationen an die Server-Datenbank geschickt (in dem Fall SQL). Dabei wird bei jedem Bezahlvorgang eines Artikels dieser aus dem Einkaufskorb entfernt und entsprechend an die Server-Datenbank übertragen die mit meinem Spielerinventar zusammenhängt!
Das ist mir deswegen so wichtig das zu erwähnen, damit ich weiter mit Gameplay und Features arbeite kann, ohne das ich mich zu sehr mit der Datenbank aufhalten möchte, weil das zu einem späteren Zeitpunkt noch einmal gründlich gemacht werden muss. Entsprechend wenn Server da sind, Mitarbeiter usw. usw.
Ich hoffe ihr versteht mich was ich damit sagen möchte.
Wenn ich ein Schwert mache, mache ich es nicht selber sondern kaufe es für ein paar Euro (auch wenn es nicht meinem Geschmack entspricht) und kann es später dann durch meine Mitarbeiter ersetzten lassen, anstatt mich damit ewig lange aufzuhalten ein Schwert-Modell zu erstellen...