Inventar Array -> richtig gestalten

    • Offizieller Beitrag

    Das wundert mich etwas weil das Array nicht leer ist... komische Sache.

    Darum verstehe ich nicht warum die Fehlermeldung erscheint.

    Prüf dass noch einfach mal.

    Gedacht habe ich das so das Dinge in der Welt nur auf dem Server gespeichert werden, nach dem "Object-Streaming" Prinzip.

    Dinge im Spiel werden rein und raus gestreamt wenn diese nicht oder benötigt werden.


    Der erste Schritt dafür ist die Physik der Objekte nach einer Ruhephase deaktiviert werden, um so die Performance zu verbessern. Also diese werden zu temporär Statischen Objekten und dabei sollen auch die Informationen entfernt werden, bis diese wieder gebraucht werden. Etwa wenn sich ein Spieler einem gewissen Bereich nähert.

    Du redest einerseits von Server und Object Streaming, ja du hast nach dem Prinzip geschrieben. Ich verstehe deine Idee dabei aber:


    Die Idee beim Object Streaming ist ja, teile vom Level nicht zu laden und nicht anzuzeigen. Erst wenn der Spieler dem Hotspot näher kommt, wird der entsprechende Levelpart geladen. Das Prinzip hast du denke ich verstanden und auch deine Gadankengang ist richtig und theoretisch hast du auch recht.


    Du musst ja nicht das gesamte Level übertragen. Speichern und übertragen musst du ja nur was sich verändert hat. Was bedeutet du kannst die meisten Informationen lokal speichern. Darum würde ich jetzt nicht von Object Streaming in Bezug des Multiplayers sprechen.


    Hier mal die grobe Reihenfolge:


    Clint -> Server -> Clint-> CPU -> GPU -> Bildschirm


    Gerade beim Gamen, ist es doch wichtig das der Weg von CPU zum Bildschirm kurz ist. Man möchte hierbei möglichst wenig Drawcalls haben.

    Wenn nun aber noch der part vom Clint durchs Internet zum Clint dazukommt und erst dann die CPU beginnen kann den Job an die Grafikkarte zu übergeben, erreichst du vermutlich genau das Gegenteil von performant.


    Bedenke auch: Das Streaming, basiert darauf Levelparts in den Speicher, aus dem Speicher zu laden und das Level anzuzeigen oder auch nicht anzuzeigen. Klar spart es performance wenns dieser Step optimiert ist.

    Du hast aber auch das diverse Culling verfahren zu Hand, so kann das Levelstreaming das Level zwar Laden und möchte es anzeigen aber das Camera occlusion Culling, unterdrückt die anzeige, weil sich das Level nicht im Frustum befindet. (Frustum ist der Sichtbereich des Players)


    Was mich an deiner Aussage stuzig macht, ist dass du geschrieben hast: "bis diese wieder gebraucht werden."


    Ich verstehe das so:

    Clint braucht etwas, Clint frägt den Server, Server hat diese Information nicht und fragt den anderen Player (Der andere Clint) anderer Clint überträgt diese Informationen an den Server, der Server überträgt diese Informationen an die CPU des Players, die CPU überträgt die Informationen an die GPU, die GPU zeichnen dass auf den Monitor.


    Ich habs oben schonmal gefragt: Was passiert wenn das Internet abbricht während Clint #1 auf Antwort vom Clint#2 wartet?

    Die Speicherstände zwischen Clint #1 und Clint#2 wären dann nicht mehr synchron.

  • Ich glaube, ihr bringt da einiges durcheinander. Wenn es sich um ein Server/Client basiertes Spiel handelt, dann übernimmt der Server keine Grafikberechnungen oder so.

    Der Server prüft lediglich, ob eine Aktion gültig ist oder nicht, wobei wieder gilt, der Server hat immer recht. Sei es, dein Client zeigt an, dass du etwas im Inventar hast, der Server sagt aber "nö", dann hast du es auch nicht im Inventar. Wenn du denkst, du hast schon drei Headshots in den Gegner gepumpt und der Server sagt "ne is nicht", dann hast du halt auch nicht getroffen.

    Dadurch brauchst du auch nicht viele Daten hin und her zu schicken. Im Großen und Ganzen ist es eigentlich nur eine Validitätsprüfung. Natürlich wird der Inventarinhalt, Spielfortschritt usw. dementsprechend auf dem Server hinterlegt. Alles Andere könnte der Spieler sonst auch manipulieren. Somit wird, wenn du etwas aufheben willst, was dann im Inventar landen soll, vom Server erstmal geprüft, ob da, wo du es aufhebst, auch etwas ist. Wenn ja, wird es im Inventar gespeichert, serverseitig, willst du es benutzen, wird überprüft, ist es im Inventar und wenn ja, kannst du es auch so benutzen wie du es vorhast. Und erst wenn das alles OK ist, dann sagt der Server "kannst so machen".

    Dafür ist halt auch die Funktion "Replication" da, um eben halt zu sagen, diese Information ist für alle beteiligten wichtig, und beteiligte Spieler kriegen dieselbe Information, wenn eine Aktion gültig war.

    Wenn dem nicht so wäre, dann würde es zum Beispiel dazu kommen, dass ein Spieler bei dir umfällt, weil du ihn laut Client getroffen hast, er selber aber gar nichts davon weiß und weiter läuft. Oder du hebst etwas auf, und alle 10 Spieler an derselben Position heben es auch noch einmal auf, weil die Clients halt nichts davon wissen.

    • Offizieller Beitrag

    Wieso behauptet du den immer ich würde irgend was durcheinander bringen ?


    Wenn Informationen "gebraucht" werden, müssen diese auch dargestellt werden und das ist die Aufgabe der Grafikkarte.


    Ich hatte es jedenfalls so verstanden, das die Daten wenn sie gezeichnet werden sollen erst erfragt werden müssen und dann ihre Reise durch das Internet antreten. Und das wäre meiner Meinung nach nicht der beste Weg.


    Das Camera Occlusion Culling, wird beispielsweise von der CPU durchgeführt und dann an die GPU übermittelt. Wenn das Culling also funktionieren soll, spielt die CPU und die GPU dabei eine Rolle. Das Culling kann auch noch korrekt arbeiten wenn alle Informationen vorliegen, sonst gibts ein lag bis die CPU den nötigen Drawcall gesendet hat.


    Dadurch brauchst du auch nicht viele Daten hin und her zu schicken.

    Da geh ich mit nur die Daten sich sich auch geändert haben so hatte ich es ja auch geschrieben.


    Das Replication- System spielt auf jeden Fall eine wichtige Rolle die Daten zwischen Clint und Server hin und her zu senden.

    Aber auch die Interpolation spielt eine wichtige Rolle um Netzwerkupdates zu syncroniesieren.

    Die Prediction um vorhersagen zu treffen auf auf dem Server passiert. Unreal unterstützt hierbei die Clint Side Prediction und die Server Reconciliation.

    Auch Zeitstempel spielen eine wichtige Rolle um sicher zu stellen, dass Aktionen in der richtigen Reihenfolge auszuführen und eine inkonsistenz zu vermeiden.

    Es gibt bei weitem mehr Möglichkeiten um sicherzustellen dass ein Spiel synchron bleibt.

  • Wieso behauptet du den immer ich würde irgend was durcheinander bringen ?

    Habe ich doch gar nicht. Ich habe geschrieben, dass ihr beide da was durcheinander werft. Immerhin ging es nur um ein Inventarsystem, und ihr scheint euch da beide in eine gewisse Komplexität zu verrennen, die so nicht notwendig ist.

    Denn am Anfang ging es rein um die Gegenstände, und Stapelbar usw. Dann kamst du mit irgendwelche Attributen, die aber ja nichts mit dem Inventar zu tun haben. Die würde ich eher in Data-Assets packen. Wie du das hinterher anzeigst, ist dann ja eine Sache der Widgets, hat aber nichts mit dem Inventarsystem an sich zu tun.

    Naja, und jetzt kam eben halt noch Netzwerk hinzu. Und das kann man halt mit wesentlich weniger Streamingaufwand erledigen. Irgendjemand baut hier doch an einem Multiplayer, frag ihn doch mal, oder hoffe, dass er das hier liest. Aber was die Kommunikation zwischen Server und Client angeht, da erledigt die Engine eigentlich schon recht viel.

    Das Camera Occlusion Culling, wird beispielsweise von der CPU durchgeführt und dann an die GPU übermittelt. Wenn das Culling also funktionieren soll, spielt die CPU und die GPU dabei eine Rolle. Das Culling kann auch noch korrekt arbeiten wenn alle Informationen vorliegen, sonst gibts ein lag bis die CPU den nötigen Drawcall gesendet hat.

    Das ist nicht komplett richtig. Denn der Server hat ja nichts mit der Grafik zu tun und sendet da halt auch nichts an den Client in der Richtung. Ja klar wird es per CPU berechnet, aber der Thread sollte eigentlich kein Problem sein, weil die Daten dafür sind ja lokal vorhanden. Ich habe jetzt noch nie ein Spiel gesehen, außer vielleicht Minecraft, dass da große Probleme hatte. Und naje, Minecraft ... Es ist halt Minecraft, was soll man dazu sagen?

  • Das mit dem Streaming von Objekten und anderen Dingen (was auch immer), dient hauptsächlich dazu das der Server und der Client mit den ungebrauchten Dingen entlastet wird.

    Das ist die Idee des Streamings, dass nur Dinge gebraucht werden die auch tatsächlich gebraucht werden, alles andere fliegt sozusagen raus, wird irgendwo abgespeichert und bei bedarf wieder abgerufen.


    Ich habe das hier nur angesprochen, weil auch die Gegenstände die ich verwende, auch im Spiel/Welt verwendet werden und das System also ineinander greifen muss.

    Es würde wenig Sinn machen, wenn nur nicht interaktive Dinge gestreamt werden... dann liegt quasi der ganze interaktive Müll herum und verstopft den Client + Server. Ein häufiges Problem verschiedener anderer Multiplayer Spieler. Weshalb das ganze auch häufig limitiert ist.


    Wenn man sich dieses ganzen "Wundertechniken mit 1000 Spieler gleichzeitig" anschaut, erkennt man dazu parallelen. Diese bauen exakt auf diesem Prinzip auf wie ich oben geschrieben habe. Je weniger auf dem Server und Client an ungenutzten Dingen liegt, um so mehr Spieler können als Lückenfüller einspringen. Somit kann man die Spielerzahlen nach oben schrauben (auf kosten wiederum anderer Dinge, Balancing usw.).


    Man kann sich das so wie das alte LOD (Level of Detail) System bei der Grafik anschauen. Nur eben nicht für Grafik sondern für Netzwerkkommunikation.

    Die Client basierten Grafiken laufen lokal ab und dem Server ist das egal, dieser muss nichts grafisches berechnen. Der Server muss nur den Teilnehmern sagen wo was ist.


    ---


    Achja so nebenbei, habe es wunderbar hinbekommen wie ich es wollte. Siehe Screenshot.

    Also alles was Stapelbar und nicht ist (z.B. 2x 1 Säbel) funktioniert perfekt. Auch die Munition usw mit den unterschiedlichen maximalen Stapelgrößen. Das freut mich sehr.

    Jetzt noch die anderen Systeme daran anpassen und wunderbar.



    Am Anfang hatte ich das Inventar System so:

    10 Eisenbarren = 10 Gegenstände im Inventar.


    Das war zwar praktisch aber mir ist aufgefallen das wenn zu viele Gegenstände im Array sind (Anzahl) führt es zu Delay Problemen und allgemeine Fehler. Später sind Makros nicht mehr ausgeführt worden. Als ich 250x 1 Eisenbarren einfügen wollte, Unreal Engine hat es nicht gemacht :(



    Nun habe ich wie oben im Bild eine Stapelmenge die ich selbst bestimmten kann.

    z.B. 100 Eisenbarren = 1 Gegenstand im Inventar.

    oder 5x 20 Eisenbarren = 5 Gegenstände.


    Nun sind auch die Fehlermeldungen verschwunden das dass Array empty is usw.

  • Ich möchte gerne die Gegenstände zum Vergleich bei der Herstellung in ihrer Anzahl vergleichen, daher muss ich diese Gegenstände zusammenzählen.

    Egal was ich mache es kommt immer das falsche raus.
    Bei dem ADD-Unique Array wird auch das falsche ausgegeben.


    Brauche dringend eure Hilfe, es ist zum verzweifeln!


    Es ist so zum kotzen mit dem ganzen Inventar System, egal wie ich das mache und drehe ich stoße später immer auf logische Fehler.


    Kann dazu kein Script posten, weil es ja falsch ist.

    Habe dazu ein Zwischenspeicher Array erstellt in diesem sind die 3 Grundmaterialien gespeichert, diese sollen nur noch mit der Anzahl addiert werden.

  • So ganz verstehe ich jetzt nicht, was du fragen willst.

    Also, wenn ich dich richtig verstanden habe, willst du etwas herstellen, aus drei Materialien. Zum Beispiel Holz, Leder, Eisen?


    Für einen Gegenstand brauchst du jeweils 10 Holz, 10 Leder und 10 Metall oder so. Und nun willst du wissen, wie viel du aus den vorhandenen Materialien herstellen kannst. So ungefähr?

    Dann brauchst du nur aus deinem Zwischenarray die Anzahl durch die benötigte Zahl zu teilen. Die niedrigste Ganzzahl ergibt dann die Menge der Objekte, die du herstellen kannst.

    Nehmen wir an, du hast Folgendes.

    30 Leder
    15 Holz
    22 Eisen

    30 / 10 = 3
    15 / 10 = 1.5 = 1
    22 / 10 = 2.2 = 2

    Das kleinste Ergebnis ist dann 1, also kannst du einen Gegenstand herstellen.

    Lass da einfach mal außer Acht, wie du es in deinem Inventarsystem darstellst, also als einzelne Stacks. Einfacher ist es, im Hintergrund eine komplette Liste zu führen.


    Oder bin ich da jetzt auf dem Holzweg? Was willst du bei der Herstellung sonst vergleichen?

  • Ne nicht so ganz wie du meinst.


    Im Rezept habe ich die Gegenstände unabhängig ihrer Stapelgröße zusammengezählt, weil das so einfacher ist.

    Rezept (benötigt Gegenstände):

    1x 10 Eisen

    1x 3 Holz

    1x 2 Leder


    ---

    Im Inventar sind die Gegenstände aufgeteilt, jeweils in ihrer bis zu maximalen Stapelgröße.

    Inventar (Vorhanden):

    5x Eisen (5/5 Stack)

    5x Eisen

    8 Holz (8/10 Stack)

    1x Leder (1/1 Stack)

    1x Leder

    1x Leder


    Es scheitert daran das die Abfrage unterschiedlich ist, Rezept braucht als Beispiel 1x10 Eisen, im Inventar sind jedoch 2x5 Eisen vorhanden.


    Das Problem ist, ich müsste die ganzen gestapelten Gegenstände im Inventar wieder zusammen zählen. Sozusagen vom Inventar 2x5 Eisen zu nun 1x 10 Eisen. Damit ich diese 1:1 mit dem Rezept verrechnen kann.



    Bin mir nicht sicher ob ich das nun falsch mache, wenn ich Z.B. 5x 10 Eisen im Inventar habe (Also 5 Gegenstände im Array), anstatt 1x50 Eisen (mit einem Gegenstand im Array.)

    Das hatte ich zuvor, aber da wollte ich dies wiederum unterteilen in die Stapelgrößen, was wiederum dazu führte, das ich das direkt im Inventar Stapeln muss. Weil diese unterschiedliche Inhalte haben können.

    Es könnten z.B. Insgesamt 50 Eisen da sein, jedoch können davon wiederum 5 Eisen in schlechter Qualität, 10 in guter Qualität usw. sein. Das muss ich ja separat stapeln. Also brauche ich sozusagen ein System (was jetzt vorhanden ist), um die ganzen Sachen zu unterteilen.


    Später sollen auch Slot-Systeme hinzukommen, wozu ich dann sowieso dieses aktuelle Systeme brauche. Nur muss ich das ganze nun Gegenrechnen. Es sei denn ich bin auf dem Holzweg mit meinem Inventar-System und man macht das in der Spieleindustrie anders?

  • Also deine maximale Stapelgröße darf in dem Fall natürlich nicht kleiner sein, als die Stapelgröße, die dein Rezept benötigt. Es sei denn du hast, ähnlich wie in Minecraft, einen Craftingtable, in den du größere Stacks reinpacken darfst.

    Ansonsten, nimm dein Schatteninventar zur Berechnung, welches halt nicht in Stacks aufgeteilt ist.

  • Also deine maximale Stapelgröße darf in dem Fall natürlich nicht kleiner sein, als die Stapelgröße, die dein Rezept benötigt. Es sei denn du hast, ähnlich wie in Minecraft, einen Craftingtable, in den du größere Stacks reinpacken darfst.

    Ansonsten, nimm dein Schatteninventar zur Berechnung, welches halt nicht in Stacks aufgeteilt ist.

    Du meinst von 3x10 Eisen in 1x30 Eisen umwandeln für die Berechnung der Kosten? Dann wieder zurück in 3x10 Eisen (als Beispiel).

    • Offizieller Beitrag

    Ich glaube er meint, das du eine Art Werkbank hast wo du die benötigten Rezepte drauf drops und dann zb auf bauen Klickst.


    Du brauchst 10 Eisen, dann nimmt einen 6 er Stapel und einen 4 Stapel und dropst beides auf die bench.


    Wenn du dann statt 10 Eisen 20 auf die Bench packst, kommt im Craft 2 statt 1 raus.


    Ich verstehs ehrlich gesagt nicht ganz , du hast gesagt du hast verschiedene Qualitäten. Wie viele Qualitätsstufen gibt es den ? 2 oder mehr ?


    Die gesamtmenge an Eisen ist doch immer gleich egal welche Qualität sie haben oder versteh ich das falsch ?


    Du hast 15 Eisen in Guter Qualität

    Du hast 20 Eisen in Schlechter Qualität das sind zusammen 35 Eisen.

    15 Eisen = 100 Qualität (Gut)

    20 Eisen = 50 Qualität (Schlecht)


    Du müsstest doch nur die gesamtmenge und ihre Qualität speichern was bei zwei Qualitäten einfach wäre. Wenn deine Qualität aber von 0% - 100% sein könnte, dann wirds schwieriger und dann müsstest du quasi 100 Zustände haben je Baumaterial.


    Die Stacks sind auch auch fest oder ? Eisen hat kann zb immer nur bis maximal 8 gestapelt werden.


    Hast du insgesamt 100 Eisen und einen 8er Stack dann sind das 100/ 8 = 12, 5

    Das heißt du hast 12 * 8er Stacks und ein Stack mit 4 Eisen als Rest

    Wenn du die Menge in einen Float Wert umrechnest, dann ist vielleicht sogar noch einfacher zu rechnen.

  • So meinte ich das.

    Denn, wenn du im Inventar nur Stacks zu 5 Eisen stapeln kannst, dann kannst du ohne Craftingtable natürlich nichts herstellen, was mehr Eisen braucht. Es sei denn du benutzt dein Schatteninventar für die Berechnung, wo dann halt xxx Eisen drin sind, ohne dass diese in Stacks aufgeteilt wurden.

    Wenn du über das Schatteninventar dann etwas baust, dann musst du ja nur noch dein Inventar aktualisieren, am besten über einen Eventdispatcher, der immer ausgelöst wird, wenn sich etwas im Schatteninventar ändert.

    In dem Fall würde das dann eher so aussehen, dass du links vielleicht dein Inventar hast und rechts, was du mit dem Inhalt deines Inventars bauen kannst. Wenn du das dann anklickst, wird halt dein angezeigtes Inventar aktualisiert.

    Anders wäre es mit einem Craftingtable, bei dem müsstest du die Stackgröße dann halt aufheben, da packst du rein, was benötigt wird und dann baust du es halt dort. Aber auch in diesem Fall musst du natürlich sowohl das Schatteninventar und das Anzeigeinventar entsprechend aktualisieren. Dem Craftingtable würde ich dann vielleicht ein eigenes Inventar, ähnlich einer Truhe oder so, zuweisen.

    • Offizieller Beitrag

    Anders wäre es mit einem Craftingtable, bei dem müsstest du die Stackgröße dann halt aufheben, da packst du rein, was benötigt wird und dann baust du es halt dort. Aber auch in diesem Fall musst du natürlich sowohl das Schatteninventar und das Anzeigeinventar entsprechend aktualisieren. Dem Craftingtable würde ich dann vielleicht ein eigenes Inventar, ähnlich einer Truhe oder so, zuweisen.

    Du könntest doch auch die Differenz ausrechnen welche für den Craft noch fehlt.


    zb.: Du brauchst für den Craft 10 Eisen, du haust einen 4er Stapel auf die Bench (Es fehlen noch 6)

    Nun nimmst du einen 8er Stapel und haust ihn ebenfalls auf die bench. 6 werden somit auf die bench gelegt und 2 (Der Rest) wird wieder im Inventar abgelegt.
    Das verhindert, dass man die Stapel aufteilen muss bevor man sie auf der Bench anwenden kann. So fände ich dass benutzerfreundlicher und die Stapel können auch größer sein als das Rezept.

  • Du könntest doch auch die Differenz ausrechnen welche für den Craft noch fehlt.

    Das wäre ja der Fall, wenn du direkt aus dem Inventar baust. Beim Craftingtable ist ja der Witz, dass du da reinpackst, was du benötigst.

    Obwohl, eigentlich könnte man ihn auch behandeln wie ein besonderes Werkzeug. Also an der Werkbank kannst du dann halt Stühle und Tische herstellen, am Amboss Schwerter und Rüstung. Das wäre dann so ein Mix. Das wäre dann auch direkt aus dem Inventar (Schatteninventar) möglich. Ich dachte bei Craftingtable jetzt mehr an Minecraft, wo man auch Dinge in bestimmte Position legen muss, um eben halt auch den Unterschied von Craften direkt aus dem Inventar heraus ein wenig darzustellen.

    • Offizieller Beitrag

    Ich weiß noch ganz am Anfang bei Minecraft da waren die Rezepte nicht bekannt. Da musst du wirklich durch Probieren (Knobeln) herausfinden wie du einen Stuhl herstellt durch die Anordnung der verschiedenen Rohstoffe.


    Es gibt auch auch andere Spiele wie zb Greenhell wo du auf einen Stein legen musst was du für das Rezept brauchst. Nur wenn die richtigen Sachen auf dem Stein liegen, wird der Craft Button freigeschalten.


    Siehe hier


    Dann gibt es games bei denen es umgekehrt ist, du wählt aus was du bauen willst. (zb ein Stuhl) Dann wird der angezeigt welche Rohstoffe du brauchst.

    Du kannst dann eine Zahl eingeben wie viele Stühle gebaut werden sollen und die Anzahl an Rohstoffen die Gebraucht werden, werden aus deinem Inventar abgezogen.

    Vielleicht gibt es auch einen Button "Alles Bauen" wo alle Rohstoffe verbraucht werden. Es werden also so viele Stühle gebaut wie deine Rohstoffe reichen. Vielleicht gibt noch einen Button "Eins bauen" wo eben nur ein Stuhl gebaut wird.


    Wenn ich mir vorstelle du willst eine Axt bauen und du benötigt hierfür 5 Eisen 2 Holz und 2 Fassern.

    Du hast 2 Eisen mit schlechter Qualität, 2 Eisen mit mittler Qualität, und ein 1 Eisen mit Guter Qualität und bei den anderen Rohstoffen auch, dann musst du ja irgend wie die "Neue Qualität" der Axt ausrechnen.


    Wenn du unterschiedliche Rohstoffe mit unterschiedlicher Qualität hast und du 20 Axte herstellst, welche Axt bekommt dann welchen Rohstoff mit welcher Qualität ? Dafür müsste es dann eine Logik geben.

  • Ja also die unterschiedlichen Qualitäten verkomplizieren das Ganze natürlich ein wenig. Aber man könnte ja jeder Qualität eine Wertigkeit, zum Beispiel auch in Prozent geben. Wenn alle Rohstoffe 100 % haben, kommt natürlich auch ein Objekt in Qualität 100 % raus, es sei denn, man baut noch einen handwerklichen Skill mit ein. Bzw. man könnte ja prozentual wiederum ausrechnen, welcher Qualitätswert dann rauskommt.

    Und auch mit Handwerkerskill wäre das jetzt nicht so viel schwieriger. Man könnte dann ja noch qualitativ etwas abziehen oder hinzurechnen, je nach Skill.

  • So, habe es nun endlich hinbekommen das die Stacks entsprechend bei dem Herstellen von Gegenständen korrekt abgezogen (ReverseForEachLoop sei Dank!).

    Dachte schon ich müsste das ganze abbrechen und für die erste Vorstellung des Spiels im Video irgend eine Mogelei einbauen damit das nicht auffällt... aber es geht wunderbar!


    Bisher zwar nur einfach, also ohne Berücksichtigung der Qualitäten (wobei es nicht nur die Qualitäten sondern auch die Inhalte ((Namen, Beschreibung, Zugehörigkeiten)) sind).

    Also wenn Eisenbarren "Made in Sonstwo" sind, werden diese separat gestapelt, unabhängig von der Qualität. Die Qualität hat mehr die Auswirkung auf die effektive Haltbarkeit und den Bruchwert des Gegenstandes. Mindere Qualität sorgt dafür das die Waffe weniger aushält und schneller dauerhaft kaputt geht. Um das mal für den Anfang primitiv einfach zu halten.


    Jetzt muss ich das ganze noch für den Spielerhandel, für die Quest-Belohnung usw. machen.

    Dazu muss ich noch ein System machen bei dem es unregelmäßig das Inventar aktualisiert und gegeben falls die Gegenstände neu zusammen stapelt. Nicht das irgendwann mal 1x, 1x, 1x, 1x,1x, Eisen habe usw., obwohl man das ganze stapeln könnte.



    Habe das ohne ein Schatteninvenar gemacht, weil man zugleich auch als fremde Person das Inventar einer anderen Person manipulieren kann. Sonst kommt das ganze System zu sehr durcheinander. Auf ein Drag&Drop habe ich bisher noch verzichtet (auch wenn es bequemer wäre), aber das ganze Inventar wird sowieso noch mal in der Zukunft erweitert, angepasst und vielleicht abgeändert.


    So Sachen wie das stecken von Materialien in die Materialslots (Werkbank usw.) oder das aneinanderreihen der Materialien in der Richtigen Position, um unterschiedliche Dinge herstellen zu können... das wäre schon geil, aber das schaffe ich derzeit alleine nicht.


    Vielen Dank an euch allen für die Informationen!

    Manchmal ist das ganze echt so undurchsichtig wie man diverse Dinge am sinnvollsten einbauen soll. Das Inventar + die damit zusammenhängen sind ja essentiell für jedes Spiel.