Beiträge von Phoenix-100

    Nun, wenn der Wert nicht = 0 ist funktioniert es, wenn der Wert gleich 0 ist stürzt die gesamte Engine ab.

    Genau so ist, das ist die Konsequenz. Nun crashed die Engine. Der Entwickler sieht nun in welcher Zeile welcher check fehlgeschlagen hat und nun kann das repariert werden. Ziel erreicht oder nicht? Wenn du nicht möchtest, dass die Engine crashed kannst du ensure nutzen.


    Try... Catch funktioniert nicht, weil die Engine keine Exceptions benutzt, was dann mein gewohntes Umfeld wäre. Also bleibt wirklich nur das, was ich von Anfang an gemacht habe.

    Check und ensure empfinde ich da in jedem Fall als überlegen. Ich verstehe nicht wieso die selber basteln müssen. Die asserts sind ideal zum Absichern der Annahme in der Methode und bieten umfangreiche Möglichkeiten.


    Kannst du genauer beschreiben was dich stört?

    Hey zusammen


    Häufig ergeben sich die Paramter einer Blueprit Node zur Laufzeit, das beduetet eine Prüfung zur Compile time ist häufig gar nicht möglich.

    Der übliche Ansatz sind Asserts, wenn durch null dividert wird, wird bei check die Ausführung unterbrochen und in der IDE genau die Zeile geöffnet, wo das passiert ist.

    Ansonsten hast du den Stack auch zur Verfügung, mit der Nachricht vom Ensure und der Zeile wo es passiert ist.


    Code
    LogOutputDevice: Error: === Handled ensure: ===
    LogOutputDevice: Error: Ensure condition failed: B != 0 [File:.../Private/ActorComponentB.cpp] [Line: 37]
    LogOutputDevice: Error: Division by Zero
    LogOutputDevice: Error: Stack: 


    Der Ansatz ist es diese ungültigen Zustände zu finden. Also bei einer Division geht man davon aus, dass der Programmierer da nicht durch null teilt. Falls doch wird die ausführung unterbrochen, und der fehlerhafte Code angzeigt und das Problem kann behoben werden. Deine Log message könnte halt übersehen werden, ein check nicht.


    Du kannst try - catch blocks nutzen. Die Engine nutzt diese kaum. In diesem Beispiel sehe ich da auch kein Vorteil von Exception, weil es halt ein Programmierfehler ist.


    Gruss

    Kann ich nach 3 Zahlen Statt Punkt einen Komma setzen?

    Deine Frage war, wie man den Punkt durch ein Komma ersetzen kann, die Antwort ist die replace node.


    Weiß einer wieso ich immer das € zeichen sehe, obwohl ich "G" reinschreibe? Würde das Währungszeichen durch das M ersetzen, dann würde es passen, aber das Währungszeichen ändert sich nicht.


    G ist keine Währung.


    Je nach eingestellter Kultur werden zahlen in der Unreal Engine anderst formatiert. Du kannst das natürlich umgehen und einfach selber die Zahl in dreigruppen unterteilen, und dann dort dazwischen schreiben was immer du willst.


    Gruss

    Mittels der Kismet String Library. Du willst die "replace" node auf dem String nutzen, dort einfach , durch . ersetzen.

    In Blueprint einfach String eingeben und dann hast du eine riesen Auswahl :)


    Hey zusammen


    Es geht ja nur um die Darstellung, das kannst du mittels string formatieren wie auch immer du willst.

    Für ultra grosse zahlen kann man auch structs nutzen. Für Million, hunderter, zehntausender Stelle jeweils ein eintrag oder double in c++.


    Gruss

    Hey zusammen


    Du kannst es machen wie im alten Shooter Game example, oder das neue in der UE5 anschauen.


    Den Network part lasse ich mal aus.

    Und dann die berechnung beim Refire

    Gruss

    Hallo


    Mittels contains kannst du prüfen, ob das Array ein Objekt enthält.

    Mittels Find kannst du prüfen ob das Array ein Objekt enthält und welchen Index es hat.

    Falls das -1 zurückgibt, wurde das Objekt nicht gefunden, ansonsten gibt es den Index zurück.


    Wenn das nicht ausreicht, musst du das selber in einem For loop prüfen.



    Gruss

    Hallo


    Es gibt im Grunde zwei Szenarien. Das erste ist, dass alle zwar das gleiche Bild haben, aber verschiedene Möglichkeiten der Kontrolle. Das ist auf einer Instanz auf dem Server möglich und du kannst in JavaScript verschiedene Interaktionsmöglichkeiten erstellen für verschiedene User, im Grund bleibt es aber eine Instanz und das findet damit irgendwo dann Grenzen. Um dein Beispiel aufzugreifen, es bleibt bei einem Character.


    Das andere Szenario ist, dass du möchtest dass alle Nutzer unabhängig ein eigenes Bild haben. Dazu musst du aber für jeden Nutzer auf dem Server eine Instanz erstellen. Du kannst mehrere Instanzen auf einem Server haben, wie beim "normalen" Client-Server Multiplayer braucht die Instanzen einfach einen eigenen Port.

    Das Problem dabei ist natürlich, dass das ohnehin schon relativ GPU aufwändig ist und du nicht duzende Instanzen / Server im "Wartemodus" halten möchtest, weil teuer.

    Dank Cloud computing ist das aber auch nicht nötig. Mittels dem Cloud Anbieter deines Vertrauens kannst du einfach je nach Nachfrage hoch und runter skalieren ("Scaling on Demand"). Also je nachdem, wie viele zugreifen möchten, fügt der Anbieter dann automatisch Server hinzu und schaltet diese wieder ab, wenn die Nachfrage nachlässt

    Die aktuell verfügbaren Server werden von einem Matchmaking Server verwaltet, die Unreal Engine hat davon auch eine Beispielimplementation.


    Problematisch sind die Kosten (zumindest aus meiner Sicht).

    Du brauchst Server mit starker GPU und die sind verhältnissmässig teuer. Ob das wirtschaftlich möglich ist, hängt stark von deinem Anwendungszweck ab.


    Gruss

    Es ist richtig, das Packaging für HTML5 wird nicht mehr offiziell unterstützt. Es ist aber nicht zu vergleichen mit Pixel Streaming. Pixel Streaming wird in den aktuellsten Version vollständig unterstützt.


    Das HTML5 Packaging, hat die Applikation für den Browser exportiert, das Rendern wird aber auf dem Client gemacht. Die Last liegt also beim Client, genau wie bei ganz normalen Spielen.

    Bei Pixel Streaming, wird das Bild auf dem Server gerendert und lediglich auf dem Client gestreamt Das rendern findet auf dem Server statt. Da die Hauptlast liegt also auf dem Server, können auch sehr schwache Geräte tolle Grafik erhalten. Einfach gesagt wird nur ein Video vom Server auf den Client gesendet. Entsprechend ist die Last auf dem Server aber viel höher.


    Das sind zwei fundamental verschiedene Dinge.

    Hallo


    Ja das ist möglich. Du kannst die Objekte aus der Cloud laden, zum Beispiel mit diesem Plugin.

    Dann liegen die Objekte irgendwo in der Cloud und werden von da geladen und anschliessen gespawnt. Das funktioniert mit StaticMesh, aber auch Skeletal Mesh mit Animation und Materials. Ist relativ simpel, das laden kann allerdings ein bisschen dauern.


    Alternativ, kannst auch Pixel Streaming verwenden. Dort renderst du die Dinge einfach auf dem Server und überträgst einfach das Bild. Hier hast du wirklich die volle Kontrolle auf dem Server. Per default läuft deine Applikation dann im Web Browser. Der Vorteil ist, dass du nichts laden musst und einfach das fertige Bild überträgst. Cool auch, der User braucht keinen starken Pc. Das rendern übernimmt der Server.


    Gruss

    Geloscht Danke dir für deine Erklärung und ja, genau so meinte ich das.

    Also Input.ini, GameUserSettings.ini und sonstige relevante .ini files und du kannst doch aber auch .ini files in der Steamcloud speichern. Du musst die Video settings ja sowieso aus dem Savegame holen und dann über die Gameusersettings anwenden, wodurch diese sowieso wiederum in den GameUserSettings oder Inputsettings oder was auch immer landen. Einfach schon etwas früher.
    Bralligator Will natürlich nicht dein Thema kapern, wünsche viel Erfolg.

    Hallo


    Du kannst dazu das Gameplay Ability System nutzen. Hier die offiziellen Doks.

    Ein Attribut besteht aus zwei Werten - einem BaseValue und einem CurrentValue. Der BaseValue ist der permanente Wert des Attributs, während der CurrentValue der BaseValue plus temporäre Änderungen durch Skills.


    Der CurrentValue ist also der Basis Wert + Skill, wenn ein Skill hinzukommt oder entfällt wird das dann entsprechend neu berechnet, inkl. Buffs und Debuffs etc. Der Basis Wert bleibt aber gleich.


    Gruss

    Doch das geht. Aber die UE hat eben keinen Service für Accounts. Aber ich glaube du meinst das schon korrekt.


    Du brauchst die Web API von Epic, also Epic Online Services (oder eben Steam, Amazon oder was eigenes). Glücklicherweise gibts dafür ein Plugin von Epic, das ist schon in der Engine und das musst du nur unter Plugins aktivieren. Das ist extrem einfach zu nutzen. Dieses Plugin erlaubt dir dann die nutzung von Login, Freunden, Achievements, Purchase, Session, Voice etc.


    Zusammen mit deiner DB, die du dann vom UE dedicated Server aus direkt ansteuert hast du dann die Grundfunktionalität.

    Hallo


    Ich habe keine Erfahrung mit MMO Server Systemen.

    Aber Was genau meinst du mit "oder"?

    Die meisten (klassischen) Spiele verwenden beides. Meist einen Online Service wie den EOS, Steam, Amazon etc. oder eine eigene API mit entsprechender Implementation des OnlineSubSystem.

    Ich denke für ein MMO braucht es aber einen angepassten UE Server und eine eigene Web API.

    Denn weder der UE Server nocht die üblichen Online Services, wie EOS etc. werden die notwendingen Anforderungen für ein MMO erfüllen. Kommt aber auch natürlich auf die Art des Spiels an.


    Gruss

    Hallo


    Welche Einstellungen meinst du genau?

    Deine Animation darf so gut wie keinen Vorlauf haben. Du kannst das einfach zuschneiden wenn du die Animation öffnest. Zudem kannst du die Blend Duration anschauen (Mittig gleich rechts auf deinen Screenshots). Die ist in den Screenshots fast überall bei 0.2. Das entscheidet wie schnell die Animation verblendet werden und ist vermutlich mit 0.2ms zu lange. Das kannst du auch mal runter setzen damit das schneller passiert.


    Gruss