Beiträge von Barni

    Huhu,

    Exaran

    Ich habe mir deine Beitrag zu deinem Editor Performance Problem durchgelesen und diesen neuen Post auch. Da du in deinem anderen Beitrag geschrieben hast, dein Item/Datenmanagement baut derzeit auf großen Arrays auf, wirst du wenn du dein Spiel als multiplayerfähiges Spiel im großen Stil anbieten willst, nicht um Datenbanken herum kommen. Auch das Durchsuchen der SQL Datenbanken über PrimaryKeys (einzigartige) ist wie beschrieben der Suche nach Stings vorzuziehen. Schon alleine aufgrund des Fehlerteufels der sich viel zu leicht einschleicht ;).


    Als Beispiel:

    Du hast eine Datenbanktabelle in der du deine Spieler/Benutzerdaten verwaltest. Ein Benutzer hat z.B. in dieser Tabelle den einzigartigen PrimaryKey "23452", nun werden deine erstellten Helden über diesen Key "23452" in einer eigenen "Helden"Tabelle mit dem Benutzerkonto verbunden. Die Helden haben eigene einzigartige PrimaryKeys, über welche du jetzt in einer weiteren "Inventar"Tabelle das Inventar des Helden verbindest. In dieser speicherst du aber auch keine Itemdaten, bzw wieder nur Keys, die auf eine weitere Tabelle zeigen und dort dann endlich die Itemdaten drin stehen.


    Ist einfacher umzusetzen, als es sich hier ließt, wenn man es ein bisschen verstanden hat. Auch ist es ordentlich und recht leicht anpassbar.

    Ich arbeite mit großen Datenbanken, leider (noch) nicht mit der UE. Denke aber, es wird sich nicht sehr groß unterscheiden. Daher kann ich dir leider jetzt auf zackzack aber keine Blueprintbeispiele posten. Muss ich mich erst selbst mit befassen wie es bei UE geht und was geht.


    tl:dr

    Daher empfehle ich dir, dich mit der Mechanik Datenbanken zu beschäftigen. Das wird dein Spiel für multiplayerfähigkeit ganz sicher brauchen. Möglicherweise, soll ja oft vorkommen, eröffnen sich dir ganz neue Wege ans Ziel zu kommen, an die du jetzt noch gar nicht gedacht hast, weil nicht bekannt.

    Die Frage ist, warum hast du überhaupt LOD-Stufen? Was willst du damit erreichen?

    Hast du das Mesh selber erstellt und dir dabei etwas gedacht oder ist es ein Mesh, das du irgendwo heruntergeladen hast und das jetzt Probleme macht?

    Ja, das ist schnell beantwortet, weil ich keine Ahnung hatte ;) Ich hab mit LODs bisher noch nichts umgesetzt. Ich wusste was es ist aber nicht wie und wo man es richtig einstellt. Jetzt bin ein ein bisschen schlauer.


    Lösung: Ich habe jetzt wie du vorgeschlagen hast alle LOD Stufen gelöscht, so nur noch eine vorhanden war, die LOD 0. Das hat jedenfalls mein Problemchen gelöst. Beim Reimport b.z.w initialen Import werden aber komischerweise immer mal LOD Stufen angelegt, obwohl ich die Option in den Importeinstellungen deaktiviert habe. Danach lösche ich die Stufen einfach wieder. Also erstmal nicht weiter tragisch.


    Danke für deinen Hinweis Sleepy

    Hallo Forum,


    es ist mal wieder soweit, ich habe eine Seltsamkeit festgestellt (Problem).


    Ich habe ein .fbx in die UE importiert, dieses mit den richtigen Materialien eingestellt und als Modell für meinen PlayerCharakter verwendet. Alles hat wunderbar funktioniert. Jetzt stelle ich aber fest, wenn ich das .fbx über die UE REimportiere (auch wenn sich im .fbx nichts verändert hat) treten Fehler bei der Darstellung meiner Materialien auf.


    Ich habe DynamicMaterials erstellt um eine simple Düsenantriebsfunktion darzustellen und an- und ausschaltbare Scheinwerfer. Der Fehler betrifft aber auch Materialien und Teile des Mesh, bei welchen ich in diese Richtung nichts eingestellt habe. Nenne dies nur der Vollständigkeit halber.


    Fehler: Wenn ich im Editor nahe an meinem Mesh bin, werden die Materialen mitsamt der Texturen alle richtig angezeigt. Scrolle ich jetzt aber vom Mesh weg, tauscht sich das Material eines Teiles des Mesh aus durch andere Materialien. Schwer zu erklären, siehe Sceenshots.

    Das Problem verschlimmert sich zunehmend, mit jedem weiteren reimport.


    Fehlersuche: Habe bemerkt, dass sich das Problem beseitigt wenn ich im Editor LOD auf 0 stelle, bei allen anderen Einstellungen erscheint weiterhin der Fehler. Dies funktioniert allerdings nur im Editor, nicht in der Spielesimulation.



    Jemand eine Idee was hier los ist, wer hat einen Tipp in Richtung der Lösung? Vielen Dank

    Also ich habe natürlich innerhalb von Blueprints, zB meinem Character Funktionen angelegt und auch schon Makros genutzt. Diese sind aber ja auf den Blueprint in dem Sie gebaut sind beschränkt (wenn man nicht von wo anders darauf einen call ausführt und so die Funktion startet).


    Ich meinte mit meiner Frage eher ob es einen Blueprint oder eine "Bibliothek" gibt, die man einfach in andere Blueprints zB Actor einbinden kann und dadruch alle Funktionen für diesen zur Verfügung stehen, die in der Biblieohek angelegt sind.

    Wenn du weißt wie man per Blueprints das Landscape verändern kann. Dann kannst du diese Funktionen ja nach dem Laden durchführen und danach erst anzeigen lassen.

    Danke, das ist genau das worauf ich hinaus wollte. Damit wird es auch möglich (denke ich) prozedural, mit Werten/Parametern die im laufendem Level gesetzt oder manipuliert wurden, das Landscape des Sublevels zu "formen". Beispielsweise, wie stark die Landmass durch eine Textur - in deren dunklen Bereichen nach oben und in den hellen nach unten gezogen wird. Als ganz simples Beispiel.


    Wenn man also die Position des Landscape (Sublevel) im PersistentLevel dadurch auch verändern kann, ist es möglich eine Art DungenCrawler aufzubauen der sich wie ein Puzzle spielt und immer etwas verschieden ist (oder sehr). Schöne Idee.

    Danke Tomarr, für deine Mühe. Ja, wenn man nicht von Anfang an Ordnung hält und alles strukturiert, dann ein paar Tage nicht weiter daran arbeitet, kann man schon mal verwirrt sein was man da eigentlich zusammengestöpselt hat ;)


    Du baust die Actors wie hier beschrieben anders auf als ich das bisher habe. Die wichtigsten Parameter oder wie hier Tags über weitere "Dateien" in den Actor zu laden (wenn ich das richtig verstehe) ist sicherlich eine weitere Ausbaustufe die auch ein Flexibilitätsgewinn sein kann. Einige neue Begriffe die du hier nennst mit welchen ich mich erst mal befassen muss um zu verstehen was du da machst :).


    Aber gleich eine Frage: Was meinst du genau mit "FunctionsLibs"? Bibliotheken (eigene Datei?) mit Funktionen die du bei Bedarf in Actors oder Level und weiteres laden und wieder entladen kannst?

    Hallo Tomarr, nein nicht mit Tick, mit Timelines habe ich es erstellt.

    Was ich machen möchte ist eine Liste, die Actors im Level auflistet die sich in einer bestimmten Distanz zum Player befinden. Die Distanz ist ein flexibler Wert, auch die Häufigkeit der Aktualisierung der Liste kann in einem bestimmten Rahmen, zB alle 1-5 Sekunden beeinflusst werden. Auch bewegt sich natürlich der Player, sowie die aufzulistenden Actors können sich bewegen.


    Über die Liste können Aktionen gestartet werden, die den ausgewählten Actor betreffen. Was genau möglich ist wird jedesmal abgefragt (bei Klick auf ListItem. IsAttackable, IsDestroyable... und so weiter. Denn, auch diese Möglichkeiten können sich ändern.


    Ich habe es nun so wie oben beschrieben über einen Array aller Actors im Level (mitTag toOverview) umgesetzt. Aus diesem Array wird nach Actors die sich in (flexibler) Reichweite des Players befinden gesucht und in der Liste angezeigt. Funktioniert mit "DestroyActor" mit vorangehender Abfrage ob dies möglich ist, sehr gut.


    Bis gestern Abend hat es noch nicht funktioniert, jetzt habe ich es hinbekommen, zumindest bis zu diesem Punkt ;) Ich bin mir (fast) sicher, es gibt noch eine "hübschere" Möglichkeit dies umzusetzen und ich möchte lernen :D. Zum Beispiel mache ich es bisher mit "ListItemClicked", hab aber schon erfahren, dass man es mit einem Interface möglicherweise besser machen kann.

    Codeabschnitte kann ich gerne mal liefern, allerdings sind es natürlich mehrere Funktionen in mehreren Blueprints. Wenn ich es aufgeräumt habe kann ich die kritischen Abschnitte fotografieren und zeigen.

    Hallo Leute,

    wie würdet ihr folgendes umsetzen?:


    Ich habe einen "Overview" gebaut, der Actors im Level mit einem bestimmten Tag (toOverview) auflistet, die sich innerhalb einer bestimmten Distanz zum PlayerCharacter befinden. Es wird der Name und die Distanz in der Liste angezeigt.


    Nun würde ich gerne beim Klick auf den Listeneintrag wieder den Actor abfragen, ob zum Beispiel eine bestimmte Variable (bool) gesetzt und entweder TRUE oder FALSE ist... oder den bestimmten Actor markieren, also sozusagen auswählen. Weitere Aktionen wie das öffnen eines kleinen Dropdowns in Mausposition ist geplant die weitere Interaktionsmöglichkeiten mit dem Actor bereitstellt.


    Wie kann ich wieder von der Liste auf den Actor zugreifen oder was würdet ihr versuchen? Vielen Dank :)



    NACHTRAG:

    Ein Weg der mir einfallen würde ist, in der Funktion die nach Actors im Level und Distanz zum PlayerCharacter sucht ein Array zu erstellen und den Array Index mit an die Listeneinträge zu schicken. Beim Klick auf den Listeneintrag wird der Index abgefragt und so erhalte ich die Actor bzw Object Reference im Array und kann somit dessen Werte/Variablen abfragen. Problem allerdings, welches ich sehe ist, dass das Array immer wieder neu aufgebaut wird sobald die "Overview" Liste aktualisiert wird. Was derzeit jede Sekunde passiert. Irgendwann wird das auf die Performance gehen denke ich. Die Liste und somit das Array muss immer wieder aktualisiert werden können, da die Actors die angezeigt werden sowohl zerstört werden können als auch spawnen.


    Ach, wie ich bei Klick auf den Listeneintrag zugreife um den Array Index wieder zu bekommen, das muss ich auch noch rausfinden ;)


    Ja, soviel noch meine Überlegungen, danke .

    Das klingt alles sehr spannend. Mir stellen sich jetzt natürlich Fragen, da ich werde ich mich noch einlesen und sehen ob ich Tutorials finde um das auszuprobieren. Um das Gespräch hier aber ein wenig weiter zu führen, gerne eine der Fragen die ich jetzt habe:


    Das PersistentLevel (in dem sich wie ich verstanden habe auch kein Landscape oder ähnliches, also wirklich nichts befindet) ist im Prinzip auch nicht in seiner Größe beschränkt. Landscape kommt erst mit einem Sublevel (genauso wie Häuser oder Bäume mit anderen SL etc.).


    In wieweit sind diese Sublevel beeinflussbar/manipulierbar, bevor sie tatsächlich in das PersistentLevel geladen und angezeigt werden. Kann beispielsweise das Landscape durch Parameter verformt werden? Kann die Position des Landscape verändert werden?


    Danke @Sleppy für die schönen Denkanstöße

    Vielen Dank, Sleppy für deine ausführlichen Tipps. Mit Level Streaming habe ich mich noch gar nicht befasst. Ich fange gerade erst an, mache aber jeden Tag Fortschritte. Level streaming finde ich spannend, da ich damit wenn ich dich richtig verstehe auch ein aktuell geöffnetes Level, durch nach Bedingungen ausgewählte "Level" erweitern kann... Also die Karte wird größer oder sowas... Ich les mich mal ein ins Thema. Danke

    Hallo Leute,


    eine Frage, gibt es einen Level übergreifenden Blueprint. Also einen Blueprint, welchen ich wie zB einen Character Controller für alle betreffenden Level einstellen kann. Für andere Level dann vllt einen anderen.


    Es geht darum, dass ich z.B. meinen DayNightCycle und weitere Funktionen die für mehrere Level geschrieben sind, nicht jedes mal im LevelBlueprint copy und pasten möchte.


    Was kann ich da nehmen oder habt ihr eine andere Idee?


    Danke

    Also Gelb ist bei mir Vector als Variablentyp. Jedenfalls konnte ich drei Werte eingeben.


    Aber mal ganz anders gedacht:

    Wenn ich Anfangs von meinem Material eine Materialinstanz erstelle, im Blueprint dann mit "Create Dynamic Material Instance" von meiner händisch erstellten Materialinstanz nochmal eine mache, manipuliere ich ja nicht diese sondern erstelle doch eine neue. Müsste ich dann nicht auch die neue generierte Instanz auf mein Mesh anwenden und sagen wofür sie steht?


    Wenn ich jedenfalls den Wert in der Variable in der ich die generierte Materialinstanz gespeichert habe ausgebe, erscheint ein Name mit fortlaufender Nummer.


    Habe ich da etwas nicht verstanden?


    Update:

    Ich habe nun "Set Material" abschließend eingebaut und als Target mein Mesh, als Elementslot den auf dem auch meine Triebwerksmaterial liegt und als Material die mit "Create Dynamic Material Instance" generierte Instanz eingestellt und siehe da, es funktioniert.

    Die Lösung für mich war:

    Ich glaube in Unreal, wenn du ein Mesh importierst, gibt es im Importfenster eine Checkbox "combine Meshes" oder "combine".

    Kann ich gerade nicht selbst nachschauen.


    EDIT:

    Die Checkbox befindet sich in einem DropDown, welches man leicht übersehen kann aber in den Importoptionen eines .fbx in die Unreal Engine zu finden ist.

    Vielen Dank.



    Hier habe ich in diesem Forum noch eine Frage zu einem Problem gestellt, weshalb ich überhaupt meine Modells als .fbx und nicht als .obj speichern wollte.

    Hallo Leute,


    ein Problem, welches ich aktuell mit meinem Blender Modell habe: Bei Zylindern, welche ich über "Face auswählen" > "Extrude + ESC" > "Scale"...(wird im Screenshot klarer) aufbaue, habe ich beim anschließenden .fbx und schlimmer noch beim .obj export und import in die Unreal Engine fehlende oder durchsichtige Oberflächen des Mesh.


    - Zuerst habe ich natürlich an Normals gedacht, doch wie man auf den Screenshots sieht, dürften diese richtig zeigen.

    - Dann habe ich es mit "triangulate faces" versucht (Screenshot), aber auch hier habe ich dieses Problem.

    - Ich habe auch bereits überprüft ob ich, sich überlagernde Faces habe und hier evtl. die Lösung zu finden ist, doch leider nein.


    Ich habe ebenfalls Google befragt, doch nichts mehr gefunden was geholfen hätte.


    Fällt euch noch etwas ein was ich versuchen könnte?


    Hallo Leute,


    wisst ihr wie ich aus Blender ein .fbx exportieren kann, in dem alle Teile meines Modells als ein Mesh exportiert wird.


    In Blender besteht mein Modell aus mehreren Teilen, exportiere ich ein .obj packt es mir alle Teile in ein Mesh und ich kann es bequem in Unreal importieren (Macht dann aber in unreal Probleme, gerade was Zylinder angeht).

    Exportiere ich ein .fbx, dann macht er aus jedem Teil ein eigenes Mesh, was dann in Unreal wieder Probleme macht, gerade bei der Collision da ich im root Mesh kein Static Mesh angeben kann.


    Da ich in Blender aber nicht alles joinen möchte und an einigen Teilen noch weiter arbeite, frage ich mich ob es eine Lösung gibt ohne in Blender vor dem export alles zusammen zu fassen.


    Wie macht ihr es, habt ihr eine Idee hierzu?