Variablen für mehrere unterschiedliche Actors

  • Hallo und einen schönen Tag,


    ich muss mich leider mit einer Frage an euch wenden, denn ehrlich gesagt bin ich zu faul um es selber auszuprobieren und ich habe noch sehr wenig Ahnung von Blueprints und programmieren.


    Für mein Projekt habe ich einige Objekte erstellt und diese in Blueprint-Pawns eingefügt. Nun würde ich gerne eine Variable für jedes dieser Objekte erstellen auf den der Player und NPC zugreifen können. Sinn der Sache ist es mehrere Wände, Waffen und andere Gegenstände mit Variablen (Haltbarkeit, Schaden, …) aufzubauen, die dann im Spiel vom Spieler verändert werden können, aber eben auch von NPC.

    Ich dachte daran in einer Gamemode-Instance die Variablen mit einem Wert von 0 zu bestimmen und diese dann in den Blueprints mit einem Cast to einzufügen und je nach Objekt zu ändern. Wenn ich das aber mache nennt er mir Warning: Gameinstance does not inherit from Static Mesh Component(Cast to … would Always fail), und Error: The property associated with "Durance(Variable/Float)" could not be found in '/Game/Field_Test.Field_Test_C(Das Actor Blueprint+MeshComponent).

    Vielleicht könnt ihr mir ja helfen. Bin für jede Anregung und Vorschlag dankbar.


    Auf jeden Fall wünsch ich euch einen schönen Tag und viel Erfolg,


    Mit freundlichen Grüßen

    Marc

  • Casting - Am Anfang wohl so ziemlich das nervigste was einem so begegnet.


    Ich musste lange nachdenken, aber ich glaube es geht hier um so etwas wie ein RPG bei dem Spieler sowie NPCs verschiedene Waffen und Rüstung anlegen können um Ihre Werte zu erhöhen?


    Es kann wirklich helfen Beispiele von bereits existierenden Spielen zu geben. oder wenigstens ein Genre. Dann versteht man eher was du erreichen möchtest.

  • Sinn des Ganzen ist ein RPG, das stimmt. Nun habe ich Wände erstellt und diese sollen je nach Waffentyp und Attributen des Charakters und anderen NPCs denen ich Befehle erteilen kann Schaden erleiden, wenn sie von den Angriffen des Spielers und der NPC getroffen werden. Ebenso sollen diese Variablen wie Haltbarkeit und Rüstung der Wände und Objekte im Allgemeinen durch Anwenden von Fähigkeiten des Spielers und der NPC verbessert werden können. Sprich ich lege auf die Wand einen Zauber und er hält mehr aus, oder aber ich verzaubere eine Waffe damit sie mehr Schaden gegen Wände und Häuser verursachen kann. Mir fehlt ein wenig die Erfahrung als dass ich weiß wo ich die Variablen am Besten reinpacken soll, damit ich mit einer Anwendung die Werte unterschiedlicher Objekte, denen jedoch dieselbe Variable zugrunde liegt, diese im Spiel durch Aktionen der Charaktere veränderbar machen kann. Dass sich damit vermutlich dann auch noch das Äußere der Objekte verändern sollen, davon will ich erst gar nicht anfangen. (Sprich: Ich lasse meinen Baumeister eine Metallplatte an der Hauswand anbringen, welche die Wand vor Schlägen und Feuer schützt.)


    Ich hoffe so ist es detailliert genug. Ich weiß auch noch nicht wie ich den Objekten mitteilen kann, dass sie nun Schaden von einem Angriff eines NPCs oder des Spielers erhalten haben. Bin erst ganz am Anfang und verbringe meine Freizeit damit Objekte in Blender zu erstellen. Kenne mich mit Programmierung eigentlich nicht aus, was ich sehr Schade finde, was ich aber definitiv vor habe zu ändern.

  • Na DAS ist doch mal ne Antwort mit der ich gerne arbeite!


    RPGs sind eine anstrengende Sache.

    Wie du dir denken kannst, wird das ganze jetzt umfangreicher:


    Items werden oft mit Master Classes erstellt (Parents).

    1.

    Erstelle ein Interface mit dem Namen "DamageInterface".

    Hier fügst du eine Function hinzu, nenn sie "DoDamage".

    Diese braucht noch Input Variablen mit den Variablen Typen die du weitergeben willst.

    Beispiel:

    - Damage (Integer)

    - FireDamage (Integer)

    - Type (String)

    Dann abspeichern.


    2.

    Erstell einen Actor, nennen wir ihn "ItemWeaponMaster".

    In den packst du erstmal alle Variablen die für ALLE späteren Waffen relevant sein werden.

    Zum Beispiel:

    Floats / Integer für Schaden, Haltbarkeit etc.

    String / Text für Namen, Beschreibungen etc.

    Außerdem fügst du noch ein StaticMeshComponent für das Aussehen hinzu. (Wahlweise auch SkeletalMesh Component)

    Dann addest du das Interface "DamageInterface".


    Du kannst alle Variablen beliebig füllen - Ist erstmal irrelevant.


    3.

    Mach einen Rechtsklick auf "ItemWeaponMaster" und wähle "Create Child Actor" aus.

    Diesen Actor nennst du "ItemWeaponBeginnerSword"

    Er wird 1:1 die Werte beinhalten, die die Master Class (Also Parent) auch hat.

    Hier änderst du die Werte der Variablen ab, wie du sie später im Spiel haben willst.


    Du kannst "3." so oft machen wie du willst.

    Gibt den Childs verschiedene Werte in den Variablen und es werden andere Waffen sein.


    Lass uns den Teil:

    Ich weiß auch noch nicht wie ich den Objekten mitteilen kann, dass sie nun Schaden von einem Angriff eines NPCs oder des Spielers erhalten haben.

    erstmal überspringen, das erkläre ich dir gerne wenn der Rest geschafft ist.


    Sag Bescheid, dann dokumentiere ich, wie man den Schaden gegen bestimmte Objekte richtet.

  • Naja, leider nur im Ansatz.


    Ein Interface fügst du über die "Class Settings" im Actor hinzu.


    (Du solltest, wenn du die Dinge nicht kennst mit den du arbeitest, mal in die offizielle Dokumentation rein schauen.

    Ein Interface beispielsweise ist eine Schnittstelle, welche die Kommunikation zwischen mehreren Objekten ermöglicht, die normalerweise unähnlich sind.)


    Was wir gerade machen ist übrigens einfach nur deiner Waffe eine Funktion zu geben.


    An der Stelle möchte ich dir empfehlen, dir wirklich erstmal Tutorials anzusehen und einfach nachzumachen.

    Wenn du Deutsch bevorzugst, schau mal hie rein:

    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.


    Ich werde dir hier leider nicht alles erklären können - aber damit du weiter machen kannst solltest du zumindest Grundlagen des castings sowie der Interfaces kennen.

    Structs wären auch hilfreich, aber lange nicht so wichtig.


    Ich wär auch okay damit, dir per Discord ein wenig zu helfen (1-2h). Sag einfach bescheid, dann erkläre ich dir fundamentales.

  • Danke, ja bin leider sehr unerfahren. Ich sehe mir einmal die Tutorials an. Will dich nicht zu lange belästigen, hast sicher Besseres zu tun. Da ich keine Ahnung habe versuche ich halt auf diese Weise eine Lösung zu finden. Hab mir auch die Documentation runtergeladen, doch meine speziellen Probleme ohne Ahnung von der Materie in dem Gewirr aus Seiten zu lösen ist auch nicht ganz einfach.


    Kannst du mir nur deinen Discordtag senden, damit ich dich finde. Meine lautet MacArmand#7216. Hoffe das stimmt, hab erst gerade Discord runtergeladen.


    Ich danke dir auf jeden Fall für deine Zeit und deine Mühen. Falls ich einmal irgendwie behilflich sein kann, wer weiß, dann bitte melden. Muss ja nicht unbedingt mit Unreal zu tun haben.


    Alles Gute und Danke