Beiträge von Sleepy

    Was ist eigentlich wenn von dem Excalibur Schwert (als Beispiel) 1000 unterschiedliche Varianten existieren, weil diese alle von den Spielern manuell modifiziert wurden. Wie sortiert man das?

    Jeder Spieler hat eine Zeile in der Datenbank mit seinem Besitz. Dort steht eine Zelle mit dem Excalibur-Schwert und über welche Attribute es verfügt. Diese Datenbank sollte BTW auch Sicher sein, damit keine Daten gecheatet werden können.
    Statt 1000 verschiedene Schwerter zu machen, könntest du ein modulares System verwenden. Zum Beispiel könntest du den Griff ausblenden oder einen anderen Griff einblenden. Ein Schwert hätte bei 1000 Möglichkeiten vielleicht 10 Dinge, die geändert werden können. Bei 100 Dingen, die ausgewechselt werden können, ergeben sich 1000 Möglichkeiten. Aber du brauchst in der Datenbank nur 10 Spalten dafür, wo geschrieben steht, welcher Griff verwendet wird, welche Verzierung die Klinge hat, welche Verzierung der Griff hat usw.
    Für die Welt draußen hättest du für jede Kiste eine Zeile, wo steht, was drin ist und über welche Attribute dieser Gegenstand verfügt.


    Die einen Daten speicherst du in einer Weltdatenbank: Wenn in einer Kiste ein bestimmtes Schwert Spawnt müssen alle Spieler das selbe Schwert in der Kiste finden.

    Die andren Daten zb das Inventar, speicherst du in den Player Informationen des jeweiligen spielers.


    Das Thema Sicherheit geht manchmal komplett unter: Ich vor über 10 Jahren mal Facebookspiele Manipuliert in dem ich über eine Software die Datensätze analysiert hab. Dafür gibts Software.

    Du startest eine Software die ein Spiel überwacht. Du kaufst in diesem Spiel etwas, und das Programm schaut was im Spiel passiert.

    Wenn das Online passiert. Kannst du diesen Datenaustausch simulieren. Du zb dem Server sagen: Hey hier hab ich einer Kiste 1000000 Millionen Münzen gefunden.

    Da muss man Sicherheitsmechanismen einbauen dass man sich so nicht einfach dinge ercheaten kann.


    Ich will damit sagen: Du musst die Datenbank so aufbauen das du solche dinge verhindern kannst. Sonst merkst du am Schluss das du die Datenbank so wie du sie gebaut hast in die Tonne treten kannst.


    Ich kann dir da aber leider auch nicht viel dazu sagen.


    (Der Grund warum ich keine IDs verwende, weil ich nicht den Sinn dahinter verstehe

    ich dachte der Sinn ist zwischenzeitlich klar ? Es ist ein Unterschied ob du in einer Datenbank nach einer einer ID mit vielleicht 4 Stellen suchst oder ob du ewig lange Strings durchsuchen musst. Auch kannst du Gegenstände sortieren, in dem sich zb Waffen in einer Range von ID 100 - 200 befinden. Rüstungen von 400 -600 usw


    Mein Eindruck ist so wie du es geschildert hast, dass du immer nach Gegenständen und ihrem Namen suchst und dass dürften ja dann strings sein.


    Was ich auch nicht verstehe: Wenn du deine Sachen in einem Array speicherst, dann kannst du sie ja nicht persisent speichern. Wenn dein Spiel Online verfügbar sein soll, dann brauchst du ne Datenbank. Es ist doch viel Sinnervoller eine Datenbank zu haben wo alle Player ihr Kram reinspeichern. Die Menge an Daten wächst sonst expotenziell zu deinen Playern. Wenn es 10 Gegenstände gibt, dann haben 100 Player bereits 1000 Datensätze die durchsucht werden müssen. Bei 1000 Player sind es bereits 10000 Datensätze.


    Jeder Internet Shop und jede App und des Spiel benutzen IDs um ihre Artikel und Gegenstände schneller verwalten zu können.

    Nur um das mal festzuhalten: Du hast ja diesen Thread eröffnet weil du der Meinung warst der Editor (Unreal wäre Langsam) Ich glaube wir können zwischenzeitlich sagen dass das Problem nicht Unreal ist sondern die Größe deiner Datenbank. Oder hab ich was übersehen ?


    Das mit den IDs hatte ich auch schon aber wie stellst du sicher das die ID nicht bereits anderswo vergeben wurde?


    Weil wenn mehrere Spieler in das Gleiche Inventar gucken (was auch immer das sein mag), besteht ja immer eine Chance das Gegenstände eine gleiche ID haben und das würde zu Fehlern führen.

    Moment: Ververwechsel bitte nicht das Speichern von Gegenständen mit dem Lesen Gegenständen.


    Was du eigentlich hast ist eine lange Liste mit allen Gegenständen in deinem Spiel. Da könnte zb ein Datatable sein. Dann kannst du die Liste in Exel bearbeiten. In dieser Liste kannst du nicht nur den Namen des gegenstandes bearbeiten sondern zb auch welchen Damage die Waffe macht oder welchen Schutzwert die Rüstung hat. Diese Liste ist dynamisch erweiterbar und kannst die Daten über ein Blueprint abfragen.


    Wenn bei Workaround kämen alle Informationen aus dem Datatable. Aber du kannst die Exeltabele auch nutzen um diese Informationen in ein Array oder in eine Datenbank zu exportieren. Ich persönlich finde es einfacher solche dinge in eine Tabelle zu bearbeiten als sie immer in einem Array zusammen zu suchen.


    Egal wie du das nun anstellst. Alle deine Gegenstände haben eine eindeutige ID. Das Exailbur Schwert hat zb ID 1


    Wenn dinge in eine Kiste gelegt werden, so bekommt die Kiste ein Array mit dem Inhalt. In der Regel passen in die Kiste keine 2 Millionen Gegenstände rein. Ich gehe daher mal davon aus das dir zum speichern eine 8 Bit Interger reicht.


    Hier mal Liste zu den Integer

    8 Bit Integer kann von - 128 bis + 127 Zahlen speichern.

    16 Bit Integer kann von -32.768 bis 32.767 speichern.

    32 Bit Integer kann von -2.147.483.648 bis 2.147.483.647 speichern.

    64. Bit Integer kann von -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 speichern.


    Ich denke, egal was du vor hast eine 16 Bit Integer wird dir auf jedenfall reichen vermutlich reicht dir auch eine 8Bit interger.



    Jede Kiste hat sein eigenes Array. Alles was du speicherst wenn etwas in die Kiste gelegt wird, ist ID1 völlig Wurst ob es sich um das Exalibur Schwert handelt.


    Macht die Kiste jemand auf, suchst du in deiner Datenbank nach ID 1 und zeigst die jeweiligen Informationen an.


    Du liest im nur Informationen aus der Datenbank schreibst da aber nichts rein. Speichern tust du nur die ID welche 1 Platzhalter für alle Informationen sind.


    Jeder Gegenstand und jede Gegenstandsart braucht ja unterschiedliche Informationen. Ein Fahrzeug hat diese und jene Informationen, eine Waffe andere und Gebäude wieder andere usw.

    Das spielt in der Datenbank keine Rolle. Du kannst dein Script ja so bauen, dass wenn in der Tabelle in einer Zelle nichts steht, diese Information auch nicht angezeigt wird.


    Das schöne ist doch, dass du auf diese Art auch schön sortieren kannst. Du schreibst die Tabelle auch rein ob es sich um eine Waffe oder um eine Fahrzeug handelt. So kannst du Inhalt in einer Kiste auch entsprechend sortieren.


    So sieht ein typisches Datatable aus:


    Du siehst, dass viele Felder einen Wert von 0 haben hier sind keine Informationen hinterlegt.


    Du kannst Script so aufbauen das du die gesamte ID liest völlig egal was drin steht. So kannst du deine Tabelle auch immer erweitern.

    Du machst ein Script fürs Kistenlesen wo einfach nur neue Gegenstände hinzufügst.

    Hier siehst du auch die ID nur heißt es hier Row Name



    Was keinen Sinn macht ist jeden Gegenstand jedes mal in eine Tabelle zu speichern und wieder zu lesen. Somit hast du hast du jede Information mehrmals gespeichert.


    Das wäre ein jetzt mein Gedanke

    Days Gone wurde mit der Unreal Engine 4 entwickelt. Die größte Horde in diesem Spiel besteht aus 500 Gegnern. Es sollte jedoch möglich sein, zwischenzeitlich 1000 Gegner ohne Probleme darzustellen. Das Spiel ist bereits fünf Jahre alt, und die Technologie dahinter ist wahrscheinlich sechs bis acht Jahre alt.


    Externer Inhalt www.youtube.com
    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.

    Dies wird jedoch nur durch eine Reihe von Optimierungen ermöglicht:

    1. LOD-Stufen: Je weiter die Gegner entfernt sind, desto niedriger ist die Polycount. Der LOD-Wechsel sollte so erfolgen, dass er beim Annähern der Gegner nicht bemerkt wird, um die Leistung zu optimieren.
    2. LODs können auch vereinfachte Animationen enthalten. Gegner, die weiter entfernt sind, werden weniger aufwendig animiert, mit weniger Schlüsselbildern und Knochen.
    3. Das Ausblenden (Culling): Die Leistung wird nur für das verbraucht, was der Spieler sieht. Beispielsweise könnten Gegner, die weit entfernt sind, nur einfache Modelle ohne detaillierte Texturen haben, um Leistung zu sparen.
    4. Auch die Komplexität der Gegnermodelle und ihrer Materialien ist wichtig. 1000 Charaktere mit einem Polycount von 1000 und jeweils 2k-Texturen sind weniger ressourcenintensiv als 1000 Charaktere mit einem Polycount von 10000.

    Letztendlich kommt es darauf an, wie viel Polycount und Draw Calls gleichzeitig angezeigt werden können. Eine halbe Million Tris sollten zwischenzeitlich ohne Probleme dargestellt werden können.

    Es ist wichtig zu bedenken, wie hoch der Polycount deines Levels allein ist. Wenn wir von einer Million ausgehen, hättest du rein rechnerisch 4000 Tris pro Gegner. Es ist jedoch wichtig, zu testen, wie flüssig das Spiel dann noch läuft.

    Außerdem solltest du die Schattenberechnung für 1000 Gegner berücksichtigen. Möglicherweise sollten Sie zunächst ohne Schatten testen, da dynamische Schatten ebenfalls leistungshungrig sein können.

    Exaran

    Nur zur Sicherheit und das wir nicht von unterschiedlichen dingen sprechen.

    Reden wir hier Arrays oder von Datenbanken ? Das ist nicht das selbe.


    Der Vorteil an einem Array ist, dass Elemente schnell durch ihren Index gefunden werden können.


    Eine Datenbank ist ein strukturiertes Datenspeicherungssystem welches darauf ausgelegt ist große Mengen an Daten effizient zu speichern. Es persistent und hat mehr möglichkeiten Daten zu sortieren und zu organisieren.


    Ein Array ist genau genommen keine Datenbank weil es nicht die selben Möglichkeiten bietet wie eine SQL Datenbank


    Falls du also von Arrays redest solltest du vielleicht in Betracht ziehen eine richtige Datenbank zu verwenden.


    Bei so riesen Informationen, reichen Arrays eventuell nicht mehr aus da du auch gar nicht filtern kannst.


    Mich würde immer noch interessieren was du genau vor hast und warum dass so riesige Daten sind. Dann kann man dir doch viel besser helfen wie du das aufbauen kannst.

    Dein Problem ist vermutlich, dass ein riesiges Array durchsucht werden muss. Dabei muss jeder Eintrag durchsucht werden. Das ist das, was lange dauert.

    Ich weiß nicht genau, was du vorhast oder warum du ein so großes Array hast. Daher ist es schwierig, eine brauchbare Lösung zu präsentieren.

    1. Grundsätzlich kannst du ja nur eine bestimmte Anzahl an Items gleichzeitig anzeigen. Warum also 1 Million Items lesen, wenn du nur 50 anzeigen kannst? Vielleicht kannst du an dieser Stelle filtern?
    2. Du könntest jedem Item einen Tag zuweisen, z.B. allen Waffen einen "Waffe"-Tag. Du durchsuchst dann nur Items mit dem Tag "Waffe".
    3. Wie suchst du nach deinen Gegenständen? Wenn du jetzt nach einer bestimmten Waffe im Array suchst, ist das sehr unperformant. Überlege eher, mit IDs zu arbeiten. Also einem Integer-Wert, wo eine bestimmte Zahl eine bestimmte Waffe ist. Das Laserschwert hat die ID 1. Du suchst nicht nach dem Laserschwert im Array, sondern nach 1. Das ist dann viel viel schneller als einen Haufen Strings abzusuchen.
    4. Als Batching versteht man eine Programmierlogik, bei der mehrere Operationen gleichzeitig ausgeführt werden, statt zig einzelne Operationen zu haben.

    Mal ein Beispiel, wie man es nicht machen sollte:

    Du willst 200 Items von einer Kiste in dein Inventar übertragen. Du liest Item1, kopierst diesen Eintrag von Array (Kiste) nach Array (Inventar). Wenn diese Operation abgeschlossen ist, dann kopierst du Item2 von Array (Kiste) nach Array (Inventar) usw.

    Hier wird wirklich Item für Item kopiert. Eventuell wird das Kistenarray sogar jedes Mal neu gelesen, geöffnet und geschlossen.


    Besser wäre es, eine Logik zu überlegen, wie du alle Items mit einem Schlag von A nach B kopieren kannst. Zum Beispiel könnte jede Kiste eine Nummer haben (eine Art Postleitzahl). Nur die Items mit dieser Postleitzahl werden kopiert, alle anderen werden nicht angefasst.


    grob gesagt:


    1. Dein Array sinnvoll in mehr Arrays aufteilen.

    2. Deine Einträge filtern zb durch Tags oder IDs. Lieber nummern suchen als Strings.


    Um die Übersicht zu behalten würden sich vielleicht Datatables die du mit einer Exel bearbeiten kannst anbieten. Du könntest die Einträge aus der Exel auch in deine Arrays kopieren. Entweder im UnreakEditor per Script (Offline) oder (Ingame) einfach direkt aus der Exel auslesen.

    Sorry wenn ich das so direkt sage, aber vielleicht liegt es auch nicht am Editor sondern an dem was du programmiert hast ?


    Möglicherweise ist dein Array auch sehr groß, so dass das durchsuchen eine Zeit dauert ?


    Hier ein paar Tipps:


    1. Verwende den Profiler um zu analysieren was beim Austausch der Array Variablen passiert.

    2.Code Optimierung

    3.Batch Operationen beim Durchsuchen der Arrays verwenden.

    InstaMAT ist ein neu auf den Markt gebrachtes Konkurrenzprodukt zu den Substance 3D-Produkten von Adobe (früher Allegorithmic).

    Anders als die beiden Substance-Produkte Substance Painter und Substance Designer setzt InstaMAT auf ein einheitliches Tool, das sowohl zur Erstellung prozeduraler Materialien als auch zum 3D-Painting, ähnlich wie im Substance Painter, verwendet wird.

    Das Tool basiert zum einen auf einem node-basierten Workflow mit Parametern, wie man ihn aus dem Substance Designer kennt, aber auch auf einem Layer-basierten Workflow, wie er im Painter bekannt ist.


    Externer Inhalt www.youtube.com
    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.


    Einige Punkte zusammengefasst:

    1. InstaMAT bietet eine Pioneer-Lizenz mit einem Umsatz unter 100.000 € kostenlos an. Weitere Informationen zu den Lizenzen finden Ihr hier: Link zu den Lizenzinformationen.
    2. Es gibt eine Integration für Blender, Maya und 3ds Max.
    3. Eine Integration für Unreal Engine und Unity.
    4. Das Entwicklerstudio ist eine deutsche Firma mit Firmensitz in Stuttgart.

    Den Link zur Homepage finden Sie hier: Link zur Homepage von InstaMAT.

    Eigentlich ist doch die Kollision dein Problem, oder?

    Ich kenne dein Mesh und kenne deine Kollisionen nicht, aber mal ein Gedanke:


    Wenn du einen Würfel erstellst und mit einer Booleischen Operation ein Loch hineinmachst und dann eine Kollisionsbox darauf legst, dann kann es sein, dass dieses Loch in der Kollision nicht erkannt wird und die Kollision um den ganzen Würfel herum geht. Somit wäre das Loch nicht begehbar.


    Wenn auf deinem Raum ein Collider ist, dann könnte auch er um den ganzen Raum herumgehen, ohne dass der innere Bereich begehbar ist.


    Mesh Collider sollten das eigentlich hinbekommen, probier mal aus, die Wände deines Raums aus mehreren Box Collidern statt einem oder mehrere Mesh Collider zu nehmen (Jede Wand ein Box Collider) und auf Mesh Collider komplett zu verzichten. Box Collider sind sowieso performanter und gleichzeitig sollte sich dein Problem erledigen. Deine gesamte Bodenplatte und deine gesamte Decke bekommen ebenfalls einen einzigen Mesh Collider.

    Bei sehr komplexen Meshes werden nicht selten mehrere Box Collider kombiniert.

    Ich würde die Räume auch separieren. (Jeder Raum ist ein separates Mesh) Dadurch kann das Culling ganze Räume ein- und ausblenden. Auf gar keinen Fall den ganzen Stock oder sogar das Haus zu einem riesigen Mesh machen. Die Transition von alt auf neu ist sonst für die Grafikkarte eine ziemliche Herausforderung.

    Auch Interior, falls du das hast, würde ich separieren und je Raum ein Mesh machen. Somit kann das Culling jeden Raum und jedes Interior für jeden Raum ein- und ausblenden.

    Dies versus ein riesiges Haus mit einem sehr komplexen Mesh Collider, welcher Fehler aufgrund der Geometrie verursacht.



    Puh eine ganz schön lange Fehlermeldung die wirst du nicht so einfach weg kriegen. Ich hab leider keine Masterlösung aber versuch mal die Fehler zu deuten.


    Bevor du irgend was machst, solltest du deinen Stand gut sichern.


    Zitat

    Microsoft platform targets must be compiled with Visual Studio 2022 17.4 (MSVC 14.34.x) or later for the installed engine. Please update Visual Studio 2022 and ensure no configuration is forcing WindowsTargetRules.Compiler to VisualStudio2019. The current compiler version was detected as: 14.

    Ich glaube deine Visual Sutdio Version ist zu alt. Versuch mal ne neuere Version vielleicht verschwinden dann schon ein paar Fehler.



    Zitat

    [2024.02.08-13.29.55:823][ 1]LogD3D12RHI: Cannot end block when stack is empty

    Dieses D3D12RHI deutet dass es ein Problem mit der Garfikschnittstelle Direct3D 12 gibt.


    Genauer gesagt, sagt dieser Fehler, das versucht wird ein Block zu schreiben der entweder nicht vorhanden oder bereits geschlossen ist.

    Als Block bezeichnet man eine Reihe von Befehlen der Grafikkarte die nacheinander ausgeführt werden. (Mehre Tasks die nacheinander ausgeführt werden)

    Beim Abarbeiten dieser Blocks gibt es einen oder mehre Fehler.


    Die einfachste Möglichkeit wäre es deine Treiber zu checken und zu hoffen dass dadurch der Fehler weggeht. Auch falsche konfiguration der Garfikkarte könnte dass Problem sein.

    Ich weiß nicht welche Frameworks du verwendest aber hier könnten Frameworks veraltet oder kaputt sein ? Eventuell mal Direct12 neuinstallieren ?

    Falls es am Code liegt, hilft wohl nur debugging.


    Zitat

    Failed to load 'aqProf.dll' (GetLastError=126):

    Failed to load 'VtuneApi.dll' (GetLastError=126) und Failed to load 'VtuneApi32e.dll' (GetLastError=126):

    Ich da scheinen ja insgesamt einige DDLs Fehler zu schmeißen.
    Hast du nicht möglichkeit auf einem anderen Rechner zu Builden ? Damit könntest du komplett Software und Hardware Probleme ein bzw Ausschließen ?



    Zitat

    SourceControl: Revision control is disabled

    Benutzt du Perforce oder ähnliches ?

    Weil die Versionskontrolle ist deaktivert und funktioniert nicht. Falls du Plugins in den developer branch gemerged hast, sind diese in diesem Build nicht dabei.

    Meine Gedanke ob du überhaupt den aktuellsten Build buildest ?


    Ich kenne solche Probleme bei mir aus der Firma. wir Mergen auch Plugins in einen Testbranch, und wenn alles funktioniert, wird er in den Mainbranch gemerged.

    Wenn man das machen würde, wären die Plugins auch nicht dabei. (ich hoffe du verstehst was ich meine ^^) falls nicht, ist es wahrscheinlich nicht die Ursache.


    Zitat

    RenderDocPlugin: Display: RenderDoc plugin will not be loaded:

    Das ist auch merkwürdig. Den RenderDoc ist ein Werkzeug zum Debuggen von Fehler.

    Auch dass deutet darauf hin, dass etwas kaputt ist bezüglich Framework oder DLLSs.







    Ich bin mir sicher, aber du kannst auch mal versuchen den Intermediate und den Saved Ordner zu löschen und dann einmal neu zu builden.

    Die beiden Ordner müssten dann neu erstellt werden.


    Wie gesagt auch hier gut sichern.


    Vielleicht hat noch jemand anderst ne bessere Ideen.

    „Frame budgets are no longer constrained by polycounts, draw calls, and mesh memory usage“

    In dem Link steht aber auch:

    Zitat

    Although the advantages can be game-changing, there are practical limits that still remain. For example, instance counts, triangles per mesh, material complexity, output resolution, and performance should be carefully measured for any combination of content and hardware. Nanite will continue to expand its capabilities and improve performance in future releases of Unreal Engine.

    Aber, zumindest Werbetechnisch, wird ja immer behauptet, dass sich damit der Polycount und Normalmaps etc. damit erledigt hat.

    Hast du dazu ne Offizielle Quelle von Epicgames ? Ich hab das auch öfter irgend wo gelesen aber ich glaube nicht dass dieses Versprechen jemals von Epic Games kam.

    Ja das sieht super aus und auch hier wurden viele neue Techniken genutzt. Aber dieses Spiel hat bei weitem nicht den Polycount welchen du bei Cliffwood Village siehst.


    Felsen und Steine und auch die Pflanzen sind sehr Polycount hungrig.


    Auch wenn Cliffwood Village voll gut aussieht, wird auch hier nur mit Wasser gekocht das ist keine Hexerei.


    Bei dem Bodycamspiel seh ich jedenfalls keinen hohen Polycount. Das sind vermutlich RVT oder SVT Texturen. Daher sehr hochlöste Texturen.


    Ich will das auch nicht schlecht machen beide Spiele sehen Hammer aus.


    Es gab ja auch diese Matrix Demo, kennst du bestimmt das war auch nur eine Technologiedemonstation und kein Spiel. Zwischenzeitlich 3 Jahre alt.

    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.

    Das ist ein Abschluss Projekt von einem Studenten das 8 Monate gedauert hat.

    Viele Meshes die die du sind, sind gescannte Megascans Assets.


    Die Flüsse und Wasserfälle wurden per Simulation in Houdini erstellt, die Häuser wurden in Maya erstellt und im 3D Painter texturiert. Da sind einige neue Techniken mit drin.


    Taichi Kobajashi heißt der Envoirement Artist der das erstellt hat.

    https://www.artstation.com/artwork/qeeX5z


    Das ist übrigens eine Virtuelle Kamera der läuft da nicht als First Person durch. (Mehr Film als Spiel)


    Ich vermute mal, schnell könntest du da nicht durchs Ingame Level rennen geschweige den ein Gameplay haben.


    Auch wäre das Spiel am Schluss riesen Groß.


    Ich glaube Red dead remdempation hat 60GB und hat in der Entwicklung über 500 Millionen US Dollar gekostet, bei diesem Spiel wäre das mit Sicherheit nochmal deutlich deutlich Festplatten Speicher. Außerdem wäre die Produktion richtig richtig teuer.


    Siehst ja: 10 min Video: Ein Entwickler: 8 Monate Arbeit. Bei 20 Stunden oder mehr Spielzeit ? ...

    Das solltest du so per Copy & Paste nicht machen.


    Wenn du in der Unreal etwas importierst, wird dieses in einem Index angelegt. Das ist sowas das Einwohnermeldeamt der Unreal Engine. Dieser Index nennt sich Asset Registry Tag.


    Du kannst auch ein Mesh einfach im Explorer löschen. Das bedeutet aber, das Unreal nicht mitbekommt das die Meshes in deinem Projekt Ordner gelöscht wurden.

    Unreal versucht diese Meshes dann noch zu laden aber da sie nicht mehr da sind, hagelt es Fehlermeldungen.


    Warum das manchmal geht ist mir ein Rätsel. Auch wundert mich, dass es überhaupt geht.
    Vielleicht legt Unreal den Index aber auch beimEinfügen an.

    Da du aber Probleme hast, würde diesen Weg lieber nicht gehen.

    Ich kann mir auch vorstellen, das Copy und Paste in diesem Fall verbugt sind und es deswegen manchmal geht und manchmal nicht. Eventuell hängt es aber auch mit der Größe des Meshes zusammen.


    Wie du siehst, gibt es viele wenns und aber. Mach das so nicht. Schau die Meshes sauber exportierst und importierst.


    So wirst du viel weniger Probleme haben.


    Edit: Da du gesagt hast dass du Anfänger bist, weiß ich natürlich auch nicht was du weißt bzw nicht weißt. Vor allem warum du das so machen willst.

    Vielleicht erzählst du uns eher mal was du genau vorhast und warum und was du dir dabei gedacht hast. Vielleicht dann dafür andere Wege.

    Die Physik an zu machen ist eine Sache damit fallen dinge eben runter.


    Damit dinge auf dem Boden oder einem Tisch liegen bleiben, brauchen diese auch einen Collider


    In den Details Einstellungen des Objektes, gibt es auch zwei Arten von Kollisionen.


    Einmal Block und Einmal Overlap.


    Block bedeutet wie der Name schon sagt, dass Objekt wird geblockt.

    Overlap bedeutet: Es findet eine Kollision statt aber das Objekt fliegt hindurch.

    Das Objekt als Overlab kannst du beispielsweise als Trigger verwenden.


    Du springst auf eine Wolke, du fällst durch die Wolke hindurch es zieht dir aber Energie oder ein Leben ab.

    Wenn dein Objekt auf Overlap steht, wäre es klar warum es nicht funktioniert und wenn deine Meshes keine Collider haben wäre es auch klar.

    Ich verstehe nicht ganz wie du das meinst ?

    Was ist den der Unreal Editor bei dir ? In Regel Öffnest du ja die Unreal und hast Unreal auch nur einmal geöffnet.


    Wenn du ein Mesh importierst, beispielsweise eine FBX oder OBJ so wandelt diese Unreal in ein UAsset um.

    Bei dieser Konvertierung, speichert die Unreal weitere Informationen im UAsset.

    Du kannst also nicht einfach ein Asset von einem Unreal Projekt in ein anderen Unreal Projekt kopieren.


    Das Funktioniert dann nur über den Export und den Import bzw die MIgration.

    Wenn du sagst ohne Seiten. Meinst du dann es soll nur eine Plane von z.b. Blender sein?

    Ja genau zwei Planes eine Verbindung brauchst du nicht. (Die Tris kannst du dir sparen)

    Was mir noch durch den Kopf geht. Man könnte auch eine Leiste entlang der Schneidfläche machen.

    Also kann man sich vorstellen wie eine Regenrinne auf der Klinge. ^^

    Ja kannst du machen, dann wäre deine Klinge noch mehr der realen Klinge nachempfunden. Die Frage ist ob es wirklich so exakt sein muss?


    Wie einen Meshcollider wird auch ein StaticMesh genommen, oder? 🤔

    Ein MeshCollider ist einfach nur ein Lowpoly Objekt von einem ursprünglichen Objekt. So grob wie möglich und so komplex wie nötig.

    Ich denke mal, für eine Kollision kann es auch einfach ein Strich sein und muss kein geschlossenes Objekt sein, oder?

    Ein Strich wäre eine Edge du braucht schon eine Fläche. Auch ist die Kollision nicht so exakt. Bisschen Aufprallfläche schadet nicht.



    Ach wäre das schön, wenn ich neben mir jemanden hätte, der mit mir ein Spiel programmiert und Ahnung hat, sodass ich mehr lernen kann. xD


    Früher also ich noch mein Portfolio aufgebaut habe, hab ich noch richtig Spaß an solchen dingen gehabt. Seit ich beruflich solchen Shit mache, nutze mein Wochenende anderst.

    Die Lernphase ist die Phase die am meisten Spaß macht. Alles andere ist Arbeit.

    Achso verstehe, du willst den Schade exakt an Klinge haben. Also nicht bei Kollision der Akt sondern bei Kollision der Klinge.

    Dann mach das doch genau so ?


    Mache die Klinge separat, mach einen Collider nur auf die Klinge dann hast dus ja schon. Wenn du es performanter haben willst und es ausreichend ist. dann verwende KEINEN MeshCollider sondern zwei Box Collider.


    Im Prinzip genau so:


    Dann müsstest die Klinge nicht mal abtrennen.


    Du kannst auch ein mesh als Collider verwenden.


    So könnte das Mesh aussehen:

    Mit Rückseite wären das 10 Tris als Collider (Ohne Seiten) die brauchst du ja nicht.


    Beide Varianten kosten nicht die Welt an Performance ich denke die untere Variante wäre besser weil du weniger Collider brauchst.

    Mesh Collider sind natürlich auch nicht so toll was die Performance angeht aber bei 10Tris pffff