Beiträge von Veelos

    Ich verstehe nicht genau worum es da jetzt geht. Willt Du mit C++ ein Plugin erstellen das die Project Settings beeinflusst? Ich denke es könnte da ein Problem darin bestehen, dass ein Plugin normalerweise in der Bibliothek hinzugefügt wird und dann im Projekt nur noch aktiviert wird, von Plugins die man noch verändert während die Engine läuft weiß ich halt nichts.


    Und ich glaube grundsätzlich sollte man da vorsichtig sein, mach das auf jeden Fall in einem fast leeren Projekt.


    Schönen Sonntag noch.

    Nicht ganz.

    Ich habe ein Plugin, dass spezifische Settings braucht. Diese Settings sollen in den Projektsettings auftauchen, damit sie einfach modifiziert werden können.

    Die Projektsettings bestehen ja aus mehreren .ini Files die zusammen gewürfelt werden. Soweit ich weiss können diese ini Files auch in einem Plugin Ordner liegen. Allerdings krieg ich es nicht hin, dass meine eigenen Settings in den Projektsettings auftauchen.

    Hey Leute,


    Ich versuche mich gerade etwas mit Plugins und C++.


    Soweit ich weiss gibt es die Möglichkeit Plugin spezifische ProjektSettings zu definieren, die dann ausgelesen werden können.

    Hier ein Beispiel aus dem IMG Media Plugin:


    Leider habe ich es bisher trotz Source durchlesen von anderen Plugins noch nicht hinbekommen meine Config in den ProjectSettings Sichtbar zu machen.

    Ich weiss, dass ich dafür meine Klasse als config Flaggen muss.


    Allerdings taucht diese dann nicht in den ProjectSettings auf.


    Hat jemand von euch schonmal sowas implementiert?


    Gruss Veelos

    Gab es nicht um UE 4.18 rum mal Optimierungen von Epic Seite. Bei denen Sie einiges Umgestellt haben? Wenn dein Integrierter Code älter ist könnte ich mir vorstellen, dass der Compiler Schwierigkeiten hat bestimmte Files noch zu finden und irgendwelche Brücken zusammenwurstelt.
    Hast du evt. noch alte Includes, Makros oder ähnliches in deinem Code drin?

    Ist ein Schuss ins Blaue. Kenne mich mit dem Compiler nicht so wirklich aus.

    Sleepy hat mit dieser Metapher den Nagel auf den Kopf getroffen. Unreal legt mit dem Delay eine Referenz zu dieser Funktion auf den Ingame Time Tick. Das Tick Event feuert deutlich schneller als der 1s Delay verstreichen kann und schiebt ihn nach hinten bevor er überhaupt einmal feuern kann. (Anderes Beispiel: Mutter kommt alle 5min in das Kinderzimmer und sagt ihrem Kind "In einer Stunde gibt es essen". Das Kind muss leider verhungern;).

    Das ist der Grund warum das Delay im Tick Event nicht wirklich funktioniert.


    Was mich an deinem Screen stutzig macht ist aber nicht die Animation vor dem Delay sondern das "Set Game Paused" dahinter wo du die Game Pause wieder deaktivierst. An der Stelle muss ich vermuten weil ich das noch nie getestet habe. Ich gehe mal von folgendem aus:


    1. Du pausierst das Game bevor du Delay aktivierst

    2. Delay ist an die Ingame Time gebunden (ka ob Unreal das wirklich so macht)


    In diesem Fall würde es niemals weiter gehen da eine Sekunde Ingame Time in der Pause schlecht weiter laufen kann.


    Ich vermute mal weiter das du diesen Delay nur eingebaut hast um auf das Ende der Animation zu warten? Falls ja benutz mal die Node: https://docs.unrealengine.com/…hFinishedevent/index.html und lass das Delay komplett weg.


    Wie gesagt, bin mir hier an der Stelle nicht sicher. Wäre also Super wenn du uns sagen könntest ob du das Game wirklich pausierst:D.


    Gruss Veelos

    Puh, C++ bin ich gerade selber noch am rumprobieren.


    In diesem Fall liegt es wohl daran, dass der AIController eigentlich keine physikalische Position hat (irgendwo liegen kann). Was dich interessiert ist die Position des kontrollierten Pawn's.


    versuchs mal mit:

    FVector Startpunkt = GetPawn()->GetActorLocation();


    Zu deinem lernvorgehen:

    1. Guck dir zuerst ein kurzes Tutorial in Unreal an was die einzelnen Klassen für Aufgaben haben. (Auch wenns BP ist). Über die Unreal Doku alleine wirst du das nur schwer verstehen, da die Doku leider etwas mangelhaft ist.

    2. Bastel dir deinen Prototypen zuerst in BP, wenn er da funktioniert, dann kannst du ihn zu C++ rüber ziehen. (Es sei denn du kennst die Engine schon ziemlich gut und bist ein C++ Profi)

    3. Um Himmels Willen, gib deinen Variabeln bitte keine deutschen Namen ;)


    Hoffe ich konnte dir damit weiter helfen

    Gruss Veelos


    Ein Cast macht nur dann Sinn, wenn du nicht weisst, was für eine Klasse du zurück kriegst. Bei GetAllActorsOfClass(BPCeilingLamp) weisst du ja, dass du nur CeilingLamp's findest. Die bessere alternative wäre hier, den cast einfach weg zu lassen.


    Würdest du hingegen GetAllActorsOfClass(Actor) machen und in dieser Liste nur nach CeilingLamp's suchen, dann könntest du nach CeilingLamp casten. (Macht aber in deinem Beispiel Null Sinn).


    Konnte ich damit deine Frage beantworten?


    Gruss Veelos

    Keinen Plan von C++ aber ich denke mal es ist genau wie in BP. Cast nutzt du um eine Funktion in einem anderen Kontext (Anderes Objekt) zu nutzen. Sprich du wählst exakt die richtige Instanz des anderen Objektes aus um dort eine Funktion zu nutzen. Du bist jetzt im "script" (oder wie auch immer man das in C++ nennt) der Waffe und brauchst aber ne Funktion aus dem Controller des Pawn.

    Sorry da muss ich dich korrigieren. Das stimmt weder in BP noch in C++ (noch in irgend einer anderen Programmiersprache)


    Um Casten zu Verstehen muss man erstmal wissen was Vererbung ist.


    Hier ein kleines Beispiel:

    Angenommen du hast die Klasse Fahrzeug mit den Funktionen:

    - Fahren()

    - Bremsen()

    Nun möchtest du eine Klasse "Auto" erstellen. Ein "Auto ist grundlegend ein Fahrzeug, also erbst du von der Klasse "Fahrzeug". Nun hat die Klasse die Funktionen Fahren() und Bremsen() ebenfalls. Du möchtest jetzt noch eine Zusätzliche Funktion Schalten() implementieren.

    Deine Klasse "Auto" hat jetzt also folgende Funktionen:

    - Fahren() --> geerbt

    - Bremsen() --> geerbt

    - Schalten()


    Wenn du nun mit new Auto() ein Objekt von Typ Auto erstellst hat dies alle 3 Funktionen.

    Du kannst jetzt dein "Auto" in einer Variable "Fahrzeug" speichern.

    Warum geht das?

    Ganz einfach, weil dein Auto ein Fahrzeug ist. Das Problem hierbei ist, dass dein Auto Objekt so gesehen vergisst, dass es ein Auto ist. Es weiß jetzt nur noch, dass es ein Fahrzeug ist. (und kann auch nur auf die Funktionen von "Fahrzeug" zugreifen)


    Möchtest du nun wieder auf die Funktionen von "Auto" zugreifen muss du dein Fahrzeug zu zu einem Auto "Casten".

    Würdest du eine versuchen eine andere Klasse (zb "Pawn") zu einem Fahrzeug zu casten, dann würde der Cast fehlschlagen.


    In kurz kannst du es dir so merken:

    Du nimmst dein Fahrzeug Objekt und fragst es:

    Bist du ein Auto?


    Nun ein praktisches kleines Beispiel. Vielleicht kennst du das Event: On Actor Begin Overlap

    Da kriegst du den anderen überlappenden Actor als "Other Actor" übergeben.

    Wenn du nun wissen möchtest ob dieser Actor zum Beispiel ein "Character" ist, dann kannst du den Parameter "Other Actor" zu einem "Character" casten. Ist der andere Actor ein Character, dann kannst du auf die Character Funktionen zugreifen, wenn nicht schlägt der Cast fehl.


    Ich hoffe das war einigermaßen Verständlich.


    Gruss Veelos

    Eigentlich geht das relativ einfach.


    Ich hab sowas ähnliches bei uns im Projekt schon implementiert. Bin aber nicht ganz sicher, ob ich die Problematik richtig verstanden habe.


    Wenn du magst, kannst du mir eine PM im Forum schreiben und wir setzen uns mal zusammen. Ich denke das kriegt man in ner knappen Stunde hin.


    Sobald wir ne Lösung haben Posten wir sie hier im Forum, damit die Leute hier auch davon profitieren können:)


    Gruss Veelos.

    Hey Leute.


    Nach 1.5 Jahren Arbeit haben wir es endlich in den Alpha Status geschafft.:)



    Soulborn handelt in der nordischen Mythologie.

    Ihr spielt Brynjar Towshield, einem seelen-geborenen Halbgott, der in der Lage ist mit verstorbenen Seelen zu kommunizieren.

    Euer treuester Begleiter ist Mjölnir, eine lebende Waffe, die sich nicht nur in einen Hammer, einen Schild oder einen Bogen verwandeln kann, sondern auch in einen reitbaren Wolf.

    Eure Aufgabe ist es, den nächsten anstehenden Ragnarök zu verhindern.


    Das Spiel ist ein RPG-Adventure, mit Fokus auf Story, Combat & Rätseln.


    Ihr seid herzlich eingeladen der Alpha beizutreten und euch selber ein Bild zu machen.


    Dazu könnt Ihr gerne auf unseren Discord joinen und euch einen Key generieren lassen.

    (Die Key Generation läuft über einen Discord Bot)


    Sleepy Ich würde hier gerne den Discord Link einfügen, bin aber nicht sicher ob ich das darf.^^


    Den Discord Linke findet ihr auch in der Videobeschreibung des Trailers.;)


    Bitte beachtet beim Spielen, dass dies immer noch eine Early Alpha ist. Bis zum finalen Release wird sich noch vieles ändern.


    Freundliche Grüsse

    Veelos

    Ich bin nicht ganz sicher ob ich dich korrekt verstanden.


    Bei der AES Verschlüsselung handelt es sich um eine symmetrische Verschlüsselung. Willst du allerdings die Daten verschlüsselt senden, dann brauchst du eine asymmetrische Verschlüsselung. Diese funktioniert so, dass die Daten mit einem public key verschlüsselt werden und nur mit dem private key entschlüsselt werden können.

    Vor der Übertragung wird der Public Key vom Empfänger an den Sender übertragen.

    Der Sender verschlüsselt dann die Daten und sendet sie an den Empfänger.

    Der Empfänger kann dann die Daten mit dem privaten Key wieder entschlüsseln.


    Theoretisch könntest du den Key zum entschlüsseln der Daten asymmetrisch verschlüsselt übertragen, falls das notwendig wäre.


    Hoffe ich konnte dir damit helfen.


    mfg Veelos

    Ich sehe auch kein Problem darin einen String in mehreren Sprachen zu übersetzen. Kleine Tabelle, mit Deutsch, English als Array und dann den Text anhand des Sprachindexes anzeigen. Wie gesagt, kriege ich bei C# und Co ja auch hin.

    Logik die du selber implementieren musst, die aktuell aber von Unreal selber übernommen wird.


    Gibt viele Dinge in der Engine, wo sich Epic dafür entschieden hat es zu tun obwohl es nicht unbedingt notwendig wäre.


    Beispiele:

    Behavior Trees: braucht eigentlich keiner. Ich kann auch selber eine StateMachine implementieren.

    SaveGames: Files Serializen kriegt man auch selber ohne grosse Probleme hin.


    Ich kann verstehen warum Epic diesen Weg mit den "Text" eingeschlagen hat.

    Wenn ich selber eine Engine schreiben würde, weiss ich ehrlich gesagt nicht ob ich es auch so machen würde.


    Sich aber bei jedem Feature zu fragen warum Person xy jetzt auf die Idee gekommen ist das so zu machen... Tut mir leid, dass kann ich dir leider auch nicht beantworten:/

    Texte die innerhalb eines Widgets angezeigt werden sollen, werden in der Regel auch in mehrere Sprachen übersetzt.


    Die FormatText Methoden wurden wenn ich das richtig verstanden habe nur auf der Klasse Text implementiert. Macht auch irgendwo Sinn, da du für den User nicht sichtbaren Text in der Regel auch nicht Formatieren willst.


    Ich denke nicht, dass man hier Epic vorwerfen kann, dass Sie an Ihrer eigenen Konvention festhalten.


    Von den verschiedenen Möglichkeiten wie man Engine weite Übersetzungen machen kann halte ich die eigenen "Text" Variable nicht für die schlechteste.

    Ok, aber was hindert Epic daran das Ganze in Form von Strings umzusetzen? Das ist ja die Frage dahinter. Mir scheint da kein Sinn dahinterzustecken zwei verschiedene Variablentypen dafür zu nehmen. Man kann theoretisch das alles auch im Stringformat belassen, so wie ich es bei C# und Co. auch tun würde.

    Der Unterschied ist wirklich nur der, dass von der Engine "Text" Variabeln als zu übersetzender Text erkannt werden.

    So gesehen ein nettes Feature womit du dir Übersetzungsaufwand minimieren kannst. Gibt ja bestimmte Strings die du nicht übersetzen möchtest (zb Logs). Mit dem Text Datentyp kann dir Unreal eine Liste mit den zu übersetzenden Texten exportieren (& ich glaube sogar die Übersetzungen dann importieren? habs bisher noch nie benutzt).


    Stimmt Theoretisch hätten sie es bei Strings belassen können.

    Allerdings kann man über jedes Feature der Engine behaupten, dass man es ja theoretisch weglassen kann.:S

    Ja genau Epic würde dann jeden Monat für deutlich weniger User 30 Euro einnehmen Heute ist die Engine for free uns sie nehmen gar nichts mehr ein. Schlechter deal ?


    Epic lebt heute davon das irgend jemand der kostenlos mit der Engine arbeitet ein Spiel raus bringt an dem Epic dann mit verdient.


    Ich kann das wie gesagt nicht verstehen. Eine so teuere Software für umsonst zu haben...

    Früher wäre das Spezialsoftware gewesen die sich nur die großen Firmen hätten leisten können.


    Ich bin früher Snowboard gefahren und hab im Jahr auch rund 800 Euro für Liftkarte, Equipment und Hotels ausgeben. So ist das eben bei einem Hobby.

    Ich würde tatsächlich behaupten, dass Epic mit der Free Version besser fährt als mit dem Abo Modell. Nehmen wir als Beispiel Dying Light.


    Das Spiel wurde über 5 Mio mal verkauft. Gehen wir dabei von ca 20 Euro Durchschnittspreis aus dann sind das 100 Mio wovon % an Epic gehen. Also 5 Mio für Epic für Dying Light (eigentlich wohl einiges mehr zb DLC's nicht eingerechnet sind und der Preis im Durchschnitt wohl höher war als 20 Euro.


    Mit den 5 Mio können 166k + Abbos / Monat bezahlt werden.

    Geht man nun von einer Entwicklungszeit von 4 Jahren = 48 Monaten, dann finanziert Dying Light alleine ca 3500 User über 4 Jahre hinweg.


    Ich weiss nicht wie viele aktive Abbos Epic gleichzeitig im Schnitt hatte aber durch das Abo Modell werden wohl einige abgeschreckt worden sein. (vor allem da es kostenlose alternativen wie Unity gab / gibt)


    Fazit:

    Ich denke nicht das Epic aus Nächstenliebe auf das 5% Modell eingeführt haben. Die werden wohl mit dem neuen Modell genau so viel, wenn nicht mehr einnehmen.

    1.WIr nutzen ja wie bereits geschrieben Office 356 um unsere Daten extern zu sichern. (Wir vertrauen hier auf Microsoft)


    2.Eine Externe Speicherung unserer Projekte wie zb auf Gitup (Extern) kommt für uns nicht in Frage.

    Hierzu zwei kurze Infos.

    1. Github != Git. Es ist ohne weiteres möglich Git auch bei sich auf einem Server zu installieren und zu verwenden. (Damit will ich aber nicht sagen dass Git besser als Perforce ist. Ich wollte nur darauf hinweisen, dass man mit Git nicht dazu gezwungen wird seine Files irgendwo zu speichern)

    2. Microsoft hat 2018 Github gekauft. Deshalb musste ich hier etwas schmunzeln. Extern bei Microsoft ein Backup ist gut aber extern auf Github versionieren nicht.


    3.Office 356 hat gerade bei kleinen Dateien (Unreal) große Probleme und ist auch keine richtige Versionierung dafür aber eine sichere Sicherungsgeschichte.

    Als reines Backupsystem für den Fall der Fälle ist immer eine gute Idee.

    Versionierung ist ne tolle Sache aber sie ist auch überwiegend für Quellcode gedacht wo man im Quellecode jede Zeile vergleichen kann. Versioniert man Unreal Dateien miteinander, ist das schon keine richtige Versionierung mehr zumindest nicht wie von den Erfindern gedacht.

    Es gehört ebenfalls viel Disziplin dazu und gerade in großen Teams braucht man eventuell einen Projektmanager der nur die Perfoce Streams überwacht und den Überblick behält.

    Auch mir Perforce kann viel schiefgehen wenn man das Tool nicht beherrschaft.

    Das ist leider nur teilweise korrekt. Du sprichst hier nur ein Feature an, was bei Klartext-Files erlaubt diese Files zu kombinieren. Das ist aber nicht die Hauptaufgabe von Versionierung. Bei der Versionierung geht es darum das jeder vergangene Zustand eines Files wiederhergestellt werden kann. Bei serialisierten Files fallen einige sehr nützlichen Features weg, trotzdem bleibt es eine "richtige Versionierung".

    Beim zweiten Teil hast du absolut recht.


    Gruss Veelos

    Ich arbeite mit beiden Engines und entscheide je nach Projekt.


    Unreals stärken liegen meiner Meinung nach in allem was extrem gut aussieht.

    - Bessere Performance bei den Partikel Systemen

    - die Neue Physics Engine mit der Zerstörbaren Umgebung

    - Lightning etc.


    Schwächen von Unreal

    - Viele Entities darstellen (Strategiespiele mit vielen Einheiten) In Unity dank dem neuen ECS kein Problem

    - Spezielle Technologien wie zb Leap Motion oder Augmented Reality hinken im Vergleich zu Unity hinterher.

    - VR ist teilweise auch mühsamer als notwendig

    - 2D Spiele sind (meiner Meinung nach) in Unity auch schneller zu erstellen


    Jetzt zu deiner Frage ob sich Unreal oder Unity für ein MMO System eignet. Mir ist derzeit nur ein Beispiel bekannt in dem die Unreal für ein MMO gebraucht wird: Ashes of Creation.

    Die Entwickler mussten allerdings den Source Code stark anpassen damit dies funktioniert.


    Fazit: Für ein MMO wirst du keine fertige Engine finden. Es ist üblicher, dass Engines eigens für ein MMO entwickelt werden.


    Wenn du neugierig bist kannst du ja mal nach Ashes of Creation googeln und gucken was das so kostet, wie viele Leute dran arbeiten und wie lange die schon dabei sind.