Waffen - Wohin mit Variablen und Funktionen

  • Guten Tag zusammen,


    ich stehe wieder mal vor einem Problem. In meinem ARPG- Projekt kann man, wer hätte es gedacht, Waffen aufsammeln.


    Jetzt gibt es hierbei mehrere Möglichkeiten und zu jeder habe ich ein Tutorial- Video gefunden, habe aber keine Ahnung was die beste/performancesparenste Möglichkeit darstellt.


    Möglichkeit 1:

    Ein Actor mit allen Variable und Funktionen. Dieser wird via Attach an den Spiele gepackt und mittels Funktion, die auf dem Waffenactor selbst liegen "benutzt". Also Variablen, spezielle Funktionen wie Sound- oder Visuelle- Effekte.

    Hier ist das Problem, dass ich für alles auf den Actor zugreifen muss. Also die Berechnung des Schadens, Boni, etc. Außerdem muss immer der Collider und die Physik umgestellt werden.


    Möglichkeit 2:

    Ich bauen einen Dummy-Actor der nur ein Model für die Optik und die Information für einen Data-Table hat. Lasse beim Aufheben die Informationen an den Playercharacter senden und Spawne wieder ein optisches Modell. Die Funktionen liegen dann auf dem Spieler Allerdings wird es dann schnell unübersichtlich wenn es um spezielle Waffeneigentschaften (Aufladen eines Schusses) geht. Das würde, so schätze ich, Perfomance sparen, wenn nicht das "richtige" Item/Waffe im Level liegt.


    Wie geht ihr an die Sache ran, bzw. was habt ihr für Erfahrungen gemacht?

  • 1) ist sauberer und du kannst mittels Polymorphie gut abstrahieren (d.h. der Actor der die Waffe trägt muss nicht wissen um welche waffe es sich handelt, sondern nur dass es sich um eine Waffe handelt) und somit bleibt dein Code simpel. Das Attachment System von UE ist auch gut genug um so dinge wie physik und collider einfach zu halten.

    Das hinzufügen neuer Waffen wäre im Idealfall- also wenn du gute Vorarbeit geleistet hast, also eine gute Abstraktion in Form einer Basis Klasse geschaffen hast, von der alle anderen erben - nur eine Sache vom Hinzufügen eines neuen Waffen Blueprints.

    Wenn du keine OOP erfahrung hast, dann solltest du dir zuerst aber mal die Grundlagen beibringen.


    2) ist i.O. wenn du nur wenige Waffen hast, skaliert aber schlecht wenn es um Maintanability geht.

    Wie du sagst, würde das hinzufügen einer neuen Waffe in deinem Spiel hier bedeuten, dass du die Data Table ändern musst, die Funktionen im Actor, etc. D.h. viele Änderungen an verschiedenen Stellen, die zusammenspielen müssen.