In seiner Funktionalität auf die Lehre in gestalterischen Studiengängen zugeschnitten... Schnittstelle für die moderne Lehre
In seiner Funktionalität auf die Lehre in gestalterischen Studiengängen zugeschnitten... Schnittstelle für die moderne Lehre
Ein kleines Unreal Game bei dem man mit einem Panzer andere Tower abschießen muss um zum Goal zu gelangen. Bei dem Projekt ging es darum die Grundlagen der C++ Programmierung in Unreal zu lernen. Zusätzlich wollte ich einen Überblick gewinnen wie die einzelnen Komponenten in Unreal zusammen arbeiten (Wie C++, Blueprints, Maps, Widgets, PlayerController etc.).
Für die Programmierung des Spiels wurde ein Tutorial aus einem Udemy Kurs benutzt.
Um den Todeseffekt eines Towers zu verschönern habe ich noch ein Dissolve Material aus diesem Tutorial hinzugefügt.
Der BasePawn ist dafür zuständig die einzelnen Komponenten (Collider, Meshes und Spawnpoints) zu erstellen. Außerdem kümmert er sich um das verbleibende Leben, das Schießen von Projektilen und die Rotation.
Der Tank basiert auf dem BasePawn. Er verarbeitet den PlayerInput und erweitert den BasePawn so das sich der Tank auch bewegen kann.
Ach der Tower basiert auf dem BasePawn. Er muss sich jedoch nicht bewegen können, dafür muss er den Spieler auf dem Feld finden und ihn angreifen sobald dieser in Reichweite ist.
Das Projectile ist relativ einfach gehalten. Es merkt sich von wem es geschossen wurde und bewegt sich einfach solange in eine Richtung bis die Lebenszeit abgelaufen ist oder etwas getroffen wurde.
Ich wollte das der Spieler mit einem Panzer durch einen Parkour fahren muss. Damit der Spieler aber von dem Parkour abweichen kann musste ich eine Kraft hinzufügen die den Panzer ein bisschen weg drückt sobald er getroffen wurde.
Damit der Panzer dann auch von seinem Weg herunterfallen konnte musste ich Gravitation hinzufügen. Im Kurs war es vorgesehen das sich der Panzer immer nur auf einer Ebene bewegt weshalb dies nicht behandelt wurde. Da es darum ging C++ zu lernen wurde im Kurs auch nicht das Unreal eigene Physik System benutzt um den Panzer zu bewegen. Deshalb lonnte die HitForce und die Gravitation auch nicht einfach über das Physik System laufen.
Jeder Tower und der Panzer haben eine eigene Healthbar bekommen um dem Spieler ein Feedback über das verbleibende Leben zu geben. Die Healthbars der Tower erscheinen auch nur wenn sich der Panzer in deren Reichweite befindet.
Da es gar nicht so einfach war mit den Projektilen zu treffen habe ich einen AimHelper hinzugefüht. Das ist ein Niagara System welches durch ein C++ Skript den Start und Endpunkt zugewiesen bekommt. So lässt sich einfacher auf Tower zielen.
Die Projektile haben einen Feuerschweif bekommen. Außerdem entsteht eine Explosion wenn diese irgendwo auftreffen. Dies sind auch beides Niagara Systeme. Zusätzlich kommt Rauch aus der Mündung des Towers oder Panzers wenn ein Projektil abgeschossen wird. Das ist ein normales Cascade Partikel System.
Die Kamera bekommt jedes mal wenn ein Projektil abgeschossen wird, der Panzer getroffen wird oder ein Projektil in der nähe aufkommt einen Camera Shake. Dieser schwächt sich auch ab je nach dem wie weit das Projektil vom Panzer entfernt explodiert ist.
Alle Effekte haben einen 3D Sound bekommen. Außerdem wird ein Fahrgeräusch am Panzer abgespielt welches lauter oder leiser wird je nach dem wie schnell sich der Panzer bewegt.
Zum Schluss habe ich noch ein Start, Game Over und Game Won Menü hinzugefügt.
Der Kurs war wirklich gut um die Grundlagen der C++ Programmierung zu erlenen. Besonders Hilfreich war es jedoch als ich verstanden habe wie C++ und Blueprints miteinander funktionieren. Es ist super angenehm wenn man die gesamte Spiellogik effizient in C++ programmieren kann und danach die Artists einfach in den Blueprints Sounds, Camera Shake, Meshes und Effekte ändern und anpassen könnnen.
Das Spiel wurde mit der Unreal Engine 5.0.3 gemacht.