Incom ist die Kommunikations-Plattform der Technische Hochschule Augsburg Gestaltung

In seiner Funktionalität auf die Lehre in gestalterischen Studiengängen zugeschnitten... Schnittstelle für die moderne Lehre

Final Ergebnis Brütal Jam

Hier wird das Ergebnis von Giulio Grappasonno und Alexander Garhammer dokumentiert. Dabei handelt es sich um ein Third Person Soulslike Spiel welches jedoch auch von Brütal Legends inspiriert ist. Dabei tendiert das Genre sowohl zu Medieval als auch Goth/Metal/Punk.

1. Was wurde umgesetzt / Gliederung

- Nahkämpfer Klasse

- Heiler Klasse

- Tank Klasse

- Simple Boss Klasse

- Individualisiertes Verhalten der NPCs bei Gruppierungen

- Need driven Behavior : Musizieren, Beten, Rauchen

- Psychischer Zustand des Spielers: Schizophren - Aggressiv

2. Detaillierte Angaben zu NPCs

Grundverhalten aller NPCs:

Alle NPCs können einem Pfad folgen/Patrouillieren. Sobald sie einen Gegner sehen ändern sie ihr Verhalten in den Kampfmodus. Sollte der Spieler aus der Sicht- und Hörweite gelangen und den Gegner abschütteln, so wird der NPC den Gegner vergessen und sich wieder seinem Pfad widmen. Oder sich zum entsprechendem Partner bewegen. (Dazu muss der Spieler eine gewisse Zeit lang versteckt bleiben).

Bei den aktiven Kämpfern ist ein Strafemovement eingebaut. Dadurch rotieren die Gegner um den Character und bewegen sich somit dynamisch im Kampf. Dadurch soll ein statischer Kampf vermieden werden.

Hinzu kommt eine Vielzahl an kleinen Elementen die pro Gegnerklasse das Verhalten interessant und individuell gestalten sollen.

2.1 Nahkämpfer Klasse

BehhaviorTreeNahkampfer.pngBehhaviorTreeNahkampfer.png
Nahkampfer.pngNahkampfer.png

2.1.1 Grundverhalten

Der Nahkämpfer - auch Ghul genannt - soll als einfaches Fußvolk dienen. Er hat durchschnittliche Lebens- und Angriffswerte, dabei bewegt er sich relativ schnell. Alleine weist er ein aggressives Verhalten auf, er rennt aktiv auf den Spieler zu und macht verhältnismäßig viele Schläge er kann auch häufig Combos ausführen, also mehrere unterschiedliche Schläge aneinander reihen. Er kann zwar abwehren, dies macht er aber seltener.

In Kombination mit einem Tank springt der Behavior Tree in einen Unterbaum welcher nur durch die Nähe zu einem Tank aufgerufen werden kann. Dieser sorgt für ein passiveres Verhalten des Ghuls. Er sprintet nicht mehr auf den Character zu, sondern rennt zum nächsten Tank. Bei ihm angekommen versucht er sich immer hinter dem Tank aufzuhalten. Wenn es zu einer Kampfsituation des Tanks kommt versucht der Nahkämpfer den Character zu flankieren.

Der Nahkämpfer hat eine realtiv große Schlag-Reichweite.

2.2 Heiler Klasse

BehaviorTreeHeiler.pngBehaviorTreeHeiler.png
Heiler.pngHeiler.png

Die Heilerklasse ist pazifistisch; sie kann nicht Kämpfen. Stattdessen können sie ihre Mitspieler heilen. Wichtig ist allerdings, dass Heiler weder sich selbst, noch andere Heiler heilen können. Wenn der Heiler alleine ist flüchtet er vor dem Spieler. Dabei rennt er immer ein kleines Stück vom Spieler weg, wenn dieser ihm folgt läuft er weiter. Falls ein befreundeter Tank oder Nahkämpfer sich in seiner Reichweite befindet, rennt er zu diesem um seine Überlebenschancen zu erhöhen.

2.3 Tank Klasse

BehaviorTreeTank.pngBehaviorTreeTank.png
Tank.pngTank.png

Der Tank ist dafür zuständig das Schutzschild für alle anderen NPCs zu spielen. Er hat sehr viele Lebenspunkte und macht eher wenig Schaden. Er bewegt sich langsamer und hat eine geringere Schlagreichweite als der Nahkämpfer. Er macht tendenziell wenige Angriffsattacken und Combos. Stattdessen verbringt er viel Kampfzeit mit Blocken. Dies ist in Kombination mit dem Nahkämpfer sehr praktisch, denn wie bereits erwähnt positioniert der Nahkämpfer sich hinter bzw. neben dem Tank. Somit kann also der Tank die Schläge des Character abblocken während die Nahkämpfer für den Damage-Output sorgen. Wenn doch mal ein Schlag des Characters am Schild vorbei geht, kann der Tank diesen durch seine vielen Lebenspunkte verkraften.

2.4 Albtraum Boss Klasse

BehaviorTreeBoss.pngBehaviorTreeBoss.png
Boss.pngBoss.png

Die Boss Klasse ist gezielt die simpelste von allen Klassen. Der Boss kommt nur wenn der Schizo Counter auf -90 steht (wird später weiter erläutert). Er fliegt vom Himmel auf den Spieler herab und attackiert diesen - wie sein schlimmster Albtraum. Er kann grundsätzlich nur Attackieren, Verfolgen und Strafen. Sein Angriff ist unblockbar, hat enorme Reichweite und macht sehr viel Schaden (etwa 70%). Er ist sehr groß und er interagiert nicht mit den anderen NPCs, kämpft aber auch nicht gegen sie.

3. Detaillierte Angaben zum Psychischen Gesundheitszustand

Filter2.pngFilter2.png
Filter1.pngFilter1.png

Der Protagonist hat psychische Probleme. Er befindet sich in einem ständigem Zwiespalt zwischen Schizophrenie und Aggressivität. Sein Ziel ist es auf dem schmalen Grad zwischen den beiden Extremen zu balancieren. Wenn ihm dies gelingt spürt er quasi keine Auswirkungen.

Zunächst zur Aggressivität: diese wird durch Kills gesteigert. Jeder Kill erhöht das Aggressivitätsniveau (Schizo Counter). Der Tank erhöht den Wert um 20, der Nahkämpfer um 15 und der Heiler um 18. Wenn der Wert sich erhöht wird ein Filter auf die Sicht des Spielers gelegt. Dieser Filter wird allerdings exponentiell stärker. Wenn sich der Schizo Counter ins positive bewegt ( viele Kills ) dann wird der Filter rötlich und eine starke Vignette wird aufs Bild gelegt. Wenn der Schizocounter sein Maximum erreicht wird der Spieler kurzzeitigt bewegungsunfähig und lässt einen Schrei ab. Dies macht ihn verwundbar. Anschließend wird der Wert um 50 verringert, also nicht ganz auf 0 gesetzt.

Nun zur Schizophrenie: Der Schizo Counter zählt konstant nach unten bis zu einem Minimalwert von -100. Er soll den Spieler davon abhalten wenige Kills zu machen/ viel zu schleichen. Dabei wird ebenfalls exponentiell ein Filter eingeblendet, dieser lässt das Bild trist erscheinen, er besteht sowohl aus Körnungseffekten als auch aus Blau/Grau Filter. Wenn der Counter -90 erreicht wird der Albtraum Boss gespawnt. Dieser muss besiegt werden um den Filter zu beenden, somit ist weglaufen quasi unmöglich. Wenn er gekillt wird, wird der Wert wieder auf 0 gesetzt.

Da das Spiel bereits einen sehr hohen Schwierigketisgrad hat, reichen diese eher kleinen Effekte um das Spiel deutlich schwerer zu machen. Außerdem wird dadurch die Spielweise auf eine ungewöhnliche Art verändert.

4. Detaillierte Angaben zu Need Driven Behavior

Das Need Driven Behavior soll den NPCs mehr Charakter geben und ihr Verhalten etwas dynamischer gestalten, allerdings sollen auch neue Möglichkeiten im Kampfsystem (z.B. Hinterhalte) entstehen. Die NPCs sollen dadurch authentischer wirken und nicht nur wie hirnlose Zombies(obwohl es eigentlich hirnlose Zombies sind). Während dem Kampf werden NPCs ihre Bedürfnisse nicht erfüllen.

Jede Klasse hat die selben Bedürfnisse welche allerdings unterschiedlich stark ausgeprägt sind. Grundsätzlich haben die NPCs für ihre Bedürfnisse unterschiedliche game-interne (unsichtbare) Ressourcen, wenn eine Ressource leer wird muss das Bedürfniss erfüllt werden. Während die Ressourcen aufgefüllt werden, ist der NPC passiv, er ignoriert den Character. Wenn er allerdings ange,riffen wird geht er in sein normales Verhalten zurück.

4.1 Beten / Jammen

Die beiden Bedürfnisse ähneln sich in Behavior Tree und Blueprint, sind aber so serialisiert, dass sie sehr individuell eingestellt werden können. Wenn die Jam Ressourcen erschöpft sind (zu lange nicht gejammt wurde) dann geht der NPC automatisch zum nächsten Jam Punkt und spielt dort Gitarre. Je nach serialisierten Einstellmöglichkeiten, alleine, in Gruppen, selten oder auch häufig. Wenn mehrere Punkte vorhanden sind geht jeder NPC zum nächstgelegenen Jam Punkt.
Gleiches gilt fürs Beten, welches sich allerdings unabhängig zum Jammen verhält. Während dem Jammen/Beten wird die interne Jam/Beten Ressource live aufgefüllt (z.B. um 10 Punkte pro Jam/Beten Sekunde). Wenn also der NPC beim auffüllen gestört wird, ist die Ressource weiterhin erschöpft. Die Klassen haben auch unterschiedlich große Ressourcengrößen.

4.2 Rauchen

Das Rauchen unterscheidet sich primär dadruch, dass dafür keine bestimmen Positionen aufgesucht werden müssen. Wenn der NPC rauchen will hört er sofort auf seinen Weg zu verfolgen und raucht an Ort und Stelle. Anschließend folgt er seinem Pfad wieder.

5. Level

LevelDesign1.pngLevelDesign1.png
Map2.pngMap2.png
Map4.pngMap4.png
Map3.pngMap3.png
Map1.pngMap1.png

Wir haben drei unterschiedliche Level aufgefüllt/gebaut, für alle Level haben wir kostenlose Assetpacks benutzt, aber auch einige eigene Assets erstellt. Die Elvenruins Map ist eine fertige Map welche wir deutlich modifiziert und mit unseren Game Elementen bestückt haben. Diese Map ist als Demo Level und Start Level eingebaut, wobei diese sich deutlich voneinader unterscheiden.

Wenn man das Spiel startet landet man zunächst im Main Menu, dort kann man das Spiel starten/schließen/die Settings öffnen(aktuell noch leer). Wenn nun die erste Map betreten wird kann man von dort aus über 3 Teleporter die anderen Level betreten.

1. Demo Level

Wie gesagt, die Demo Map basiert auf dem Elven Ruins Level aus dem Marketplace welches von uns mit unseren NPCs/Assets und Actors aufgefüllt wurde um ein kleines mögliches Level zu simulieren.

2. Tutorial Level

Das Tutorial Level haben wir selbst aufgebaut und mit fertigen Texturen versehen. Die Räume haben wir noch mit Assets aus dem Marketplace aufgefüllt. Wir haben unterschiedliche Trigger gebaut um z.B. das Need driven behavior zu deaktivieren oder den Schizo counter zu beeinflussen und somit eine optimale Demonstration unserer Spielmechaniken zu ermöglichen. Es gibt auch ein kleines easter egg. Die Räume sind mit allen möglichen Kombinationen der NPCs gefüllt um ihr Verhalten zu lernen.

3. Survival Arena

Die Arena ist wohl der spaßigste Spielmodus in dem man bereits etwas Zeit versenken kann. In der Arena werden in immer kürzeren Abständen zufällige Gegner gespawnt. Das Ziel ist es so lange wie möglich zu überleben (oben rechts ist ein Counter). Dabei ist es wichtig sein Leben und seinen psychsichen Zustand im Auge zu behalten. Wenn man zu lange vor seinen Gegnern wegläuft kommt der Albtraum Boss. Killt man zu viele zu schnell wird man gestunned ( siehe 3. ). Die Arena wurde mit Zuschauern aufgefüllt (auf dem Balkon stehen unsere Meshes aus Character Design), auf der Tribüne sitzen Mixamo Meshes welche applaudieren. Die Arena wurde auch eigenständig zusammengebaut aber auch mit Texturen und Assets aus dem Marketplace verfeinert.

Für zusätzlichen Spielspaß wurden zwei unterschiedliche Fallen gebaut und in der Arena verteilt. 

Zum einem Rasierklingen (selbst modelliert); diese kann im Endeffekt einfach auf Berührung Schaden verursachen (sowohl bei Spieler als auch bei NPCs, die Fallen können als auch praktisch sein um einen großen haufen NPCs loszuwerden). Die Rasierklingen sind an Wänden und co. angebracht.

Zum anderen haben wir eine rotierende Riesenaxt eingebaut, welche sich in der Mitte der Map befindet, diese kann ebenfalls Freund und Feind sein, denn sie macht Schaden an allem was sich ihr in den Weg stellt.

6. Ressourcen und Tutorials

Verwendet wurde Unreal Engine 5.11 sowie die AssetPacks Bazaar und Elven Ruins aus dem Marketplace. Game Character und GegnerNPC und Zuschauer NPC sowie deren Animationen sind aus Mixamo.

Tutorials wurden in diesem Kurs hauptsächlich nur dazu verwendet um die Namen von Blueprints zu finden oder um Ansätze für die Fehlerbehebung zu finden, da unsere Probleme viel zu spezifisch waren und auf einem enorm großen Blueprintgerüst basieren. Im letzten Semester (TKCS 22w) wurden folgende Tutorials gesehen welche in diesem Kurs sehr geholfen haben:

Alexander:

Materials

https://www.youtube.com/watch?time_continue=1&v=k-zMkzmduqI&feature=emb_logo

Filter/Postprocessing

https://www.youtube.com/watch?v=umzLSts3sto

Fraktures hat mir der Tutor im letzten Semester beigebracht

Giulio:

Für die Grundlage des Spiels aus dem alten Kurs habe ich einige Youtube Tutorials, hauptsächlich von dem youtuber „Beardgames“ genutzt. Allerdings haben wir uns dieses Semester völlig eigenständig an die Arbeit gemacht und keine Tutorials nachgebaut oder Vorlagen genutzt.

Folgende Assets wurden selbst erstellt:
Rasierklinge, Gitarre Rot, Gitarre Antrazit, Zuschauersitzplätze, Zuschauer auf Balkon(Charaktäre aus Charakterdesign), Alle Widgets(Font unterliegt freier lizenz), einige Audiofiles

7. Kleine Auswahl an Blueprints/Grober Log

BP1.pngBP1.png
BP6.pngBP6.png
BP2.pngBP2.png
BP3.pngBP3.png
BP4.pngBP4.png
BP5.pngBP5.png

Einzelarbeit Giulio 26.04.2023:

Neue Ordnerkonstruktion des alten Projekts

-refactoring

Teamarbeit 03.05 und 28.04:

Versuch der Einrichtung von UE5 Multi User Editing über einen VPN, nach vielen Stunden mussten wir es leider aufgeben

Teamarbeit 05.05.2023:

Vorbereitung eines Duplikats der bereits im letzten semester von Giulio erstellten KI für die weiterarbeit

Einzelarbeit Giulio und Teamarbeit 12.05.2023:

Erste Implementierung des need driven behavior bei einem NPC. Nach einer bestimmten Zeit verlässt der NPC seine Patrouille Route und läuft stattdessen zum musizierplatz um dort zu musizieren (voerst wartet er nur da noch keinen Animation da ist).

Teamarbeit 14.05.23:

Need driven behavior timer für warten am Musizier Platz überarbeitet

-refactoring

Einzelarbeit Alex 16.05.23:

Recherche verschiedener Blueprints/Möglichkeiten der Behaviortrees.

Teamarbeit 17.05.23:

Need driven behavior ausgebaut, verlassen des musizier-modus bei attacke. Sehr viel Trouble-Shooting. Verbesserung des mechanismus. optimierung

Teamarbeit 18.05.23:

Hearing sense für AI

Teamarbeit 23.05.23

Erstellung des incom workspaces zur technikrecherche

-refactoring

Teamarbeit 26.05.23

Tank Klasse mit Grundfähigkeiten erstellt - troubleshooting

Teamarbeit 28.05.23

-Combo-System eingeführt

-HP, Damage, Angriffsverhalten, Combowahrscheinlichkeit, Blockwahrscheinlichkeit und Strafeverhalten für Klassen individualisiert

-refactoring

-mechanik für neuen behavior tree wenn tank in reichweite von nahkämpfer

-Nahkämpfer läuft nun zu tank und hält sich an tank, geht nicht mehr auf character zu

Teamarbeit 29.05.23

- Bug beim Blocken gefixt

- Verbesserung der Verfolgung des Characters. Npcs vergessen letzte position des characters nicht mehr so schnell- Hören erst auf character zu verfolgen wenn dieser sich einige meter entfernt von der letzten Sichtposition befindet

- Deutliche verbesserung des Patrouille Modus - die Npcs können nun nachdem sie den character aus den augen verloren haben die patrouille wieder aufnehmen

- Gemeinsames jammen der npcs an einer jam stelle oder separat

- Mehrere Stunden aufwand zum verbessern des zusammenspiels zwischen Tank und Nahkämpfer(Klammern des Nhakämpfers an Tank).

Einzelarbeit Alex 31.05.23

-Animationen zusammengeschnitten

Teamarbeit 31.05.23

- Implementierung Rauchen als Need driven Behavior

- Implementierung Beten als Need driven Behavior

- Glitch zur Need-Position gefixt

- Bug, Leute stoßen sich gegenseitig bei jammen durch die Luft gefixt

- Bug Need-Driven Animation hört nicht mehr auf gefixt

- Wenn need driven unterbrochen wird durch angriff geht npc nicht mehr zu patrouille zurück, daran haben wir sehr viel gearbeitet haben aber noch keine lösung

Teamarbeit 2.06.2023

-bug das pfad nicht mehr gefolgt wird gelöst

-wenn npc bedürfnis erfüllt und dann rauchen muss glitcht er zum pfad zurück gefixt

Teamarbeit 05.06

gitarre model eingebaut

Teamarbeit 13.06

-Tank need driven behavior implementiert

Einzelarbeit Giulio 13.06

-Tank rauchen need driven funktioniert nicht, einige bugs davon gefixt. Pfad wird nach rauchen trotzdem nicht mehr gefolgt

Teamarbeit 16.05.23

Instanz für Healer Klasse implementiert.

EInzelarbeit Giulio 23.06.23

Implementierung der Heilungsfunktion - Teammates in einem bestimmten Radius können vom Npc geheilt werden

Implementierung des Healer Behavior Trees

Teamarbeit 28.06.23

-Healer schaut Spieler an wenn er sich langsam bewegt, sonst schaut er in Laufrichtung

-Heiler rennt weg wenn alleine

Teamarbeit 30.06.23

-Heiler rennt zum nächsten npc wenn npc in reichweite ist und heiler alleine ist

-Heiler bleibt bei Npc um diesen zu beschützen/beschützt zu werden

Teamarbeit 02.07.23

Heilungsanimation eingebaut

Heiler ist pazifist - kein Kämpfen

Heiler neues Mesh

Teamarbeit 03.07.23

Heiler bewegt sich beim heilen nicht

Timer für Schizophrenie implementiert

Konzept für Schizophrenie ausgearbeitet

Teamarbeit 04.07.23

Heiler vergisst nun tote NPCs

Filter Depressiv Aggressiv eingebaut

Rotfilter/Blaufilter post process optimiert

animation bei schwellwert aggressiv eingebaut

05.07.23

Schizophrenie Timer auf exponentielles wachstum geändert (hoch 3)

Clown Gegner wird bei schizophrenie direkt vor Character gespawnt

07.07.23

KI für Schizophrenie Clown Gegner erstellt

neue waffe für clown npc

08.07.23

-bugfixes, ungewöhnliche npcs bewegungen

-bugfixes heiler ist zu weiter entferntem npc gelaufen

09.07.23

-collision probleme wit waffen auf boden gefixt

-level pack installiert und aussortiert

-start level gebaut

11.07.23

Vollständiges Tutoriallevel aufgebaut

12.07.23

Fracture Türen für tutorial level implementiert

Teleporter zu tutorial level im start level eingebaut

tutorial level mit npcs aufgefüllt

tutorial level unterschiedliche trigger eingebaut um schizo counter sinnvoll für demo zu beeinflussen

14.07.23

easter egg eingebaut

weitere collision und physics anpassungen

lightning

alle weitern level change trigger eingebaut

16.07.23

Aufbau Arena Level

Implementierung Spawner für Gegner auf Arena - immer schnellerer spawn auf zeit(survival Modus)

Dekoration Tutorial Level

17.07.23

Need Driven Behavior Values verfeinert und demo Video aufgenommen

Bugfixes:

Serialisierung von Splines für Klassen

Bug - Laufen kann nicht gestoppt werden wenn rolle und w gleichzeitig betätigt wurde gefixt(großer Aufwand)

Schlagen war nicht mehr möglich nach rage modus behoben

Arena Fallen eingebaut(Rasierklinge die Schaden bei Berührung macht, rotierende Riesen-Axt die bei Berührung Schaden macht)

Publikum eingefügt/Tribüne gebaut und animiert

Kaiser/Kaiserin(eigene Meshes) eingefügt und animiert

Athmosphere/Lightning eingebaut

Fachgruppe

Sonstiges

Art des Projekts

Keine Angabe

Zugehöriger Workspace

Künstliche Intelligenz für Computerspiele 2023

Entstehungszeitraum

Sommersemester 2023