Beiträge von Annubis

    Die Faustregel bei Netzteilen - besonders bei Platin und Gold - ist, dass das Netzteil doppelt so viel Watt schafft, wie die Componenten im Standardbetrieb. Verbrauchen die Teile 500W baust ein 1000W Netzteil ein, weil dann die Effektivität am höchsten ist. Viele Hersteller haben dazu sogar eigene Vorgaben. Corsair gibt die Effektivitätskurve ordentlich an.


    Definitiv ist die Effektivität bei 90% Auslastung am schlimmsten, was für wohl alle Netzteile gelten sollte.


    Letztlich sollte man auch immer bedenkten, dass man die Abwärme auch nutzt, also zumindest in den kalten Monaten. Man spart Heizkosten. Meine beiden Radiatoren wärme mir die Füße in den Kalten monaten :D.

    Wegen der Klassen kannst dir das mal anschauen.... ist aus dem Bereich der Grundlagen, aber da verdammt gut erklärt... meiner Meinung nach ein must-know


    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    persönlich nutz ich Eset, was mich bisher noch nie enttäuscht hat. Ressourcen sind auch völlig in ordnung und ich kann Windows vollständig blocken.


    Speicher war mal bei 78%, aber da war auch alles offen, was viel Speicher frisst. Firefox, Unreal, Photoshop, Blender, Speedtree, etc. Da war ich dann froh auch mal 64GB zu haben, wobei ich mir das heut nicht mehr so zu Herzen nehme, wenn da ne M2 drinn ist. Selbst mit Auslagerung ist das noch schnell genug.

    Es vereinfacht auch in gewissen Fällen die Möglichkeit der Übersetzung. Falls ein Game in mehreren Sprachen kommen soll. Unsere Lösung war für verschlüsselte Bücker bzw. Papyrosrollen. So musste man nicht rumklickern und konnte simpel abfragen, ob jmd die Fähigkeit hatte, die Rollen zu lesen, dann wurde er einfach auf einen anderen DataTable geleitet. Dem "Buch" ist das ja wumpe.

    Das AxisMapping führt schlimmstenfalls zu InputLags. Hat nen Kumpel von mir gemacht und es hat mich paar Stunden gekostet, den Fehler zu finden. Solang nicht zu viel Abfragen innerhalb eines Frames gemacht werden solles, ist ja alles in Butter, aber eben auch nur solange....

    Wie schon gesagt gibts da viele Möglichkeiten. Letztlich ist ja auch egal was hinten drann ist und sichtbar gemacht wird. So eine Lösung würd ich selber auch nicht verwenden. Die frist für das zu lösende Problem zuviel Performance, vor allem mit BP. Alles was am EventTick hängt, muss immer wohl überlegt werden.


    Mir würde auch eher eine Dinstanzkontrolle vorschweben, die eben nur dann zum Tragen kommt, wenn der Spieler x<= Distance hat und der ForwardVector zum Object zeigt. Das sollte auch mathematisch wendig Aufwand sein und nur dann berechnet werden, wenn der Spieler in der Triggerbox des Objects steht.

    Bei nem Buch brauchst ja nur eine Variable, ne ID. Wie Butter Fly Games richtig sagt, ziehst über die ID den Inhalt des Buches und den Mesh rein. Läuft dann halt über nen DataTable oder ne sonstige Datenbank. Lässt sich auch wesentlich geschmeidiger verwalten. Für den Leveldesigner ist das dann auch einfacher. Der setzt nur den BP und gibt die ID ein und schon hast du dein Buch fertig eingefügt.

    Ich hab mir gerade mal alles durchgelesen. Wenn ich das richtig sehe, dann führen selbstverständlich viele Wege zum Ziel.


    Allerdings denke ich, dass hier ein grundsätzliches Missverständnis zwischen Realität und anzuwendenter Logik vorliegt. Du willst das Programmieren, wie du dir den kausalen Zusammenhang im echten Leben vorstellst. Die Idee ist, dass dir auf dem Bildschirm beispielsweise am unteren Rand angzeigt wird, dass du mit "E" interagieren kannst. So entheme ich das deiner Erklärung als auch deinem Screenshot mit dem roten Kasten und dem "x" am unteren Bildrand.


    Aus meiner Sicht benötigst du keine Variable und einen Tag. Das LineTrace gibt immer ein Ergebnis/Tick, also ist die erste Prüfung immer nur: "isValid".


    Die zweite Prüfung ist, dass ein Tag: "Interaktion" beim Aktor vorhanden ist.


    Der Actor vom LineTrace wird für diesen Zweck nicht abgespeichert. Dein Hinweis am unteren Bildschrimrand wird also nur dann eingeblendet, wenn der Tag "Interaktion" vorhanden ist ("hasTag"), was eine typische if/else Kondition ist.


    Im Blueprint ist das der Flip/Flop mit der Verbindung des "AND", da der LineTrace am EventTick arbeitet, ändert er die Sichtbarkeit deines Buttons am unteren Bildschirmrand mit jedem Tick.


    Die Interaktion selbst, gehört nicht in diesen Logikaufbau hinein, da die Logik über die Sichtbarkeit des Interaktionshinweises in sich abgeschlossen ist und auch nicht von weiteren Bedingungen abhängt.


    Dein Blueprint wird als kleiner und performanter.


    Hinweis: Da es sich insbesondere durch das LineTrace und den EventTick um eine LowLevelProgrammierung handelt, rate ich dir an, diesen Teil in C++ zu schreiben und in ein Macro umzuwandeln. Falls du etwas Weiterbildung in dem Bereich haben möchtest, empfehle ich dir Alex Forsythe auf YT und dort insbesondere das Video zu BP/C++.

    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.

    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.

    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.

    Da ich aktuell 5 Structs (Gegenstandsarten) habe, habe ich auch 5 Inventar-Arrays.

    Da ist doch schon der Fehler. Gegenstände müssen immer eindeutig identifizierbar sein. 5 Structs für Gegenstandsarten mögen noch okay sein, aber dein Inventar besteht nur aus einem einzigen Array.


    Wenn ich mich recht entsinne, hat das schonmal jemand gefragt und das selbe oder ein ähnliches Problem aufgezeigt.


    Letztlich schnappst du die Excel oder etwas vergleichbares und erst wenn alle Gegenstände in einer einzigen Tabelle stehen, dann klappt das auch.


    Fehlern kommt es immer, wenn etwas nicht eindeutig identifiziert werden kann, wie du das anstellst, ist dir überlassen, dass muss nicht über die Indexzahl erfolgen oder kann auch eine gemischte Identifizierung sein, nur muss sie eben eindeutig ablaufen.


    Hast du schonmal versucht mit Tag zu arbeiten? viele kommen damit besser zurecht als mit Indexzahlen.


    Deine Gegenstände haben Eigenschaften, die meisten erstellen mehrere Listen, weil sie meinen, dass das übersichtlicher ist. Bspw Waffen, Nahrung, Rüstung, Baumaterial, Rohstoffe.


    Dieses System halte ich persönlich für möglich aber eben auch extrem anfällig. Besser ist es, wenn alle Items in einer Liste stehen und neben der Indexzahl einen Tag erhalten. bspw Nahrung.


    Eigenschaften einer Sache müssen nicht ausgefüllt werden und erhalten dann auch keinen Wert. Viele Werte sind also für verschiedene Items überhaupt nicht auszufüllen, aber über Tag kannst du schnell und einfach filtern.


    Größtes Problem für mich war es damals, wenn du später Gegenstände individualisierst.