Incom ist die Kommunikations-Plattform der Hochschule Augsburg Gestaltung

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

Incom ist die Kommunikations-Plattform der Hochschule Augsburg Gestaltung mehr erfahren

Fliehmann_Lea_GDD

Dokumentation des eigenen Spiels „Schneckegeddon“, welches die Semesterabgabe für TKCS ist

Das Spiel

Das Setting

„Du bist eine Nacktschnecke, die mit vielen normalen Schnecken befreundet ist und ihr lebt ein glückliches, langsames Leben in Harmonie.

Doch dann kam da dieser Deal. Immer mehr Menschen wollten von Schnecken gejagt werden für Geld. Den Menschen war es jedoch egal, dass dadurch die Schnecken versklavt wurden und sie von ihren Familien und Freunden getrennt wurden. Von jetzt auf nachher, war nichts mehr wie es einmal war.

Da du eine Nacktschnecke bist, musstest du niemanden jagen, nur deine Schneckenfreunde waren gewollt. Du hast mit angesehen wie deine Freunde versklavt und gefoltert werden, bis du es einfach nicht mehr aushalten konntest. Die Menschen sollten bezahlen.

Du schnappst dir die nächstbeste Waffe und machst dich auf den Weg die Menschheit zu vernichten. Lange genug sind sie auf euch herumgetreten und nun war es an der Reihe ihnen das heimzuzahlen.

Befreie deine Schneckenfreunde, töte die Menschen, leite das Schneckageddon ein.“

Dies ist die Vorgeschichte unserer kleinen Schnecke die sich nach Blut sehnt. Sie startet ihre Reise in einem kleinen Irrgarten, in welchem 5 ihrer Freunde festgehalten und gefoltert werden, mit dem Ziel sie zu befreien und alles und jeden zu vernichten die in ihrem Weg steht.

schneggesetting.PNGschneggesetting.PNG
tilemap.PNGtilemap.PNG

Inspiration und Artstyle

UE 5 wird meist für 3D Spiele verwendet, jedoch habe ich mich für eine 2D Welt entschieden. Dies liegt daran, dass ich sehr gerne einfache 2D Games spiele, wie z.B. The Binding of Isaac und dies einfach gerne mal selbst ausprobieren wollte.

Da in meinem Spiel jede Textur verpixelt ist hat zwei Gründe. Der erste liegt auch mal wieder an The Binding of Isaac, welches auch mit Pixelart arbeitet. Dazu finde ich das Spiel „Voices of the Void“ mit den sehr simplen Grafiken sehr interessant. 

Somit habe ich mir auch das Leben ein wenig einfacher gemacht, indem ich mir gratis Fotos aus dem Internet ziehen konnte, dessen Auflösungen reduziert habe und somit ganz leicht eine verpixelte Grafik bekommen habe.

isaacrebirth.0.0.jpg
isaacrebirth.0.0.jpgisaacrebirth.0.0.jpg
2718227-2698356-bs.jpg2718227-2698356-bs.jpg
voices-of-the-void-c.webpvoices-of-the-void-c.webp
kDMBUa.pngkDMBUa.png

Controls

In „Schneckageddon“ gibt es eigentlich nur zwei Mechaniken die, die Schnecke ausführen kann: Laufen und angreifen.

Laufen kann man ganz simpel mit WASD, während der Angriff mit der Leertaste ausgeführt wird. 

Um das Spiel zu starten, zu wiederholen oder zu beenden, wird jedoch die Maus benötigt um die jeweiligen Widgets anzuklicken.

Die Schnegge

schneggenormalR.pngschneggenormalR.png
schneggenodes.PNGschneggenodes.PNG
schneggeviewport.PNGschneggeviewport.PNG
schneggewidgetactive.PNGschneggewidgetactive.PNG

Die Schnecke namens „Schnegge“, hat wie man sieht eine ganz einfache Grafik, welche flach als Sprite im Viewport liegt. Die Hitbox ist nur etwa ein drittel der Schnecke groß, da man sonst viel zu oft Schaden nimmt.

Im Blueprint selbst wird vieles gemacht, wie z.B. schauen wie viele Freunde noch gerettet werden müssen, die Axt rotieren lassen, natürlich Schaden nehmen und sterben können, Schleim spawnen und vieles mehr.

Die Hauptelemente als Auflistung:

  • Weiß/Widget Setup: Hier werden die Widgets dem Viewport hinzugefügt und auch ein Mapping Context hergestellt
  • Schwarz/Movement Input: Hier werden die Tasten WASD abgefragt und diesem dem Movement Input vom Pawn weitergegeben
  • Grün/Slime spawnen: Hier wird der Schneckenschleim gespawned, welcher sich verändert, falls die Schnecke vergiftet sein sollte
  • Orange/Sound: Der Sound beim laufen wird abgespielt
  • Minze/Tick mit vielem anderen: Hier wird abgefragt ob ein Widget aktiv ist und ob man schon gewonnen hat
  • Hellrot/Attacke: Hier wird die Rotation der Axt gesetzt und ihr Sound abgespielt
  • Gelb/Counter: Wenn man einen Freund rettet wird der Counter niedriger gesetzt
  • Dunkelrot/Damage und Sterben: Hier wird jeglicher Damage an die Schnecke verarbeitet, mit Sound und eben auch der Möglichkeit zu sterben.

Die Axt

BattleAxeL.pngBattleAxeL.png
axtnodes.PNGaxtnodes.PNG
actviewport.PNGactviewport.PNG

Die Act ist die einzige Waffe der Schnegge, mehr braucht sie aber auch nicht, wo sollte sie diese denn auch lagern?

Die Kollision habe ich hier nur an die Klinge gemacht, da dies realistisch am meisten Sinn macht.

Die Axt selbst verarbeitet nicht viel:

  • Weiß/Teleportation: Die Axt teleportiert sich immer wieder zu Schnecke
  • Hellrot/Damage an Playern: Wenn sie einen Gegner trifft bekommt dieser auch Damage

Die Gegner

GuyL.png
GuyL.pngGuyL.png
funguy.pngfunguy.png
grannyidleL.pnggrannyidleL.png
enemyviewport.PNGenemyviewport.PNG
enemynodes.PNGenemynodes.PNG
enemyfunnodes.PNGenemyfunnodes.PNG
enemygrannynodes.PNGenemygrannynodes.PNG

Die Gegner habe ich in drei verschiedenen Varianten, während sie jedoch alle von einem Abstammen.

Der Typische kann nur hoch und runter laufen, während der spaßige Gegner von Seite zu Seite läuft.

Die schlimmsten Gegner sind jedoch die gemeinen Omis, welche Salz auslegen um dir zu schaden. Diese können jeweils hoch und runter oder links und rechts laufen.

Der Code vom Hauptgegner enthält:

  • Weiß/Setup: Ein normales Setup in welchem zwei Variablen gesetzt werden
  • Hellrot/Damage Player: Hier wird geprüft ob die Schnecke berührt wird, wenn ja bekommt diese Damage
  • Dunkelrot/Damage und Sterben: Hier wird der erhaltene Damage verarbeitet mit Sound und Blut, auch hier wird geschaut ob der Gegner gerade stirbt
  • Orange/Move: Hier wird der Gegner auf seiner Achse bewegt und seine Healthbar aktualisiert
  • Hellblau/Schleimverlangsamung: Hier wird der Gegner langsamer falls er in Schleim getreten sein sollte und auch wieder schneller wenn er diesen verlässt

Der Code vom Spaßigen:

Hier wird nur die Achse auf welcher er sich bewegt im Setup geändert

Der Code von der Omi:

  • Weiß/Setup: Die Omi hat eine größere Range und bekommt einen Timer, welcher random gesetzt wird

Der restliche Code ist für ihr Salz auslegen da. Der Timer wird verwendet, damit sie immer zufällig in einer Zeitspanne das Salz legt. Dazu hat sie eine Maximalanzahl an Salz das sie auslegen kann, welches hier auch abgefragt wird. Die Omi hat auch noch eine Vererbung an die Horizontale Omi, welch wie der Name sagt auch horizontal laufen kann.

Die Freunde und die Schlüssel der Freundschaft

friend1walk.png
friend1walk.pngfriend1walk.png
friendnodes.PNGfriendnodes.PNG
key.pngkey.png
keynodes.PNGkeynodes.PNG
Cage.pngCage.png
kaefignodes.PNGkaefignodes.PNG

Die Freunde sind einfache Schnecken die von den Menschen in Käfige weggesperrt wurden. Diese kann man nur mit den Schlüsseln der Freundschaft öffnen, welche auf der Map verteilt sind.

Der Code des Freundes:

  • Weiß/Setup: Ein Käfig wird als Child Actor gespawned
  • Grün/Befreiung: Wenn der Freund von der Schnegge berührt wird, ist sie befreit und kann gehen
  • Gelb/Abfrage Bereit und Counter: Wenn der Freund befreit wurde, macht er eine kleine „Animation“ und setzt den Counter eins herunter

Der Code des Schlüssels:

  • Rosa/Rotation:  Hier dreht sich der Schlüssel einfach nur
  • Grün/Pickup: Falls der Player noch keinen Schlüssel bei sich trägt wird dieser ausgehoben und mitgenommen. Falls er jedoch schon einen besitzt, kommt eine Nachricht dass man nur einen tragen kann

Der Code des Käfigs:

  • Grün/Öffnen: Wenn der Player einen Schlüssel bei sich hat, kann der Käfig geöffnet werden, wenn er jedoch keinen hat, kommt eine Nachricht, dass einer benötigt wird

Die Items

Die Items unterteilen sich in zwei Kategorien: Welche die die Schnecke heilen und welche ihr Schaden bereiten.

Schadende Items

salt.png
salt.pngsalt.png
saltnodes.PNGsaltnodes.PNG
poison.pngpoison.png
poisonnodes.PNGpoisonnodes.PNG

Für mich haben Items die Schaden machen nur Sinn gemacht, welcher einer Schnecke wirklich Schaden machen würden. Deshalb habe ich mich für Salz und Blaukorn entschieden.

Das Blaukorn erbt vom Salz ab, kann jedoch auch die Schnecke vergiften und macht ihr mehr Schaden.

Der Code vom Salz:

Hier passiert nicht viel, da es nur überprüft ob die Schnecke das Salz berührt, ihr dann Schaden macht und sich dann selbst löscht

Der Code vom Blaukorn:

  • Grün/Vergiftet: Hier wird dazu die Schnecke noch vergiftet wenn sie das Blaukorn berührt, was ihr mehr Schaden macht, aber sie davon vergifteten Schleim bekommt

Heilende Items

salad.png
salad.pngsalad.png
apple.pngapple.png
saladnodes.PNGsaladnodes.PNG

An den heilenden Items habe ich mich daran orientiert was Schnecken gerne essen, weshalb ich mich für den typischen Salatkopf und einen Apfel entschieden habe. Sie tun eigentlich das gleiche, der einzige Unterschied liegt darin, dass der Apfel nicht so viel heilt wie der Salat.

Der Code vom Salat:

  • Grün/Heilung: Hier wird überprüft ob die Schnecke verletzt wurde und falls dies der Fall sein sollte auch geheilt werden. Wenn die Schnecke vergiftet wurde, wird dies hier auch geheilt

Der Schleim

schneggeslime.PNGschneggeslime.PNG
slime.pngslime.png
slimenodes.PNGslimenodes.PNG
poisonslime.pngpoisonslime.png
poisonslimenodes.PNGpoisonslimenodes.PNG

Was ist eine Schnecke ohne ihren typischen Schleim?

Als Schleim habe ich ganz einfache Kreise verwendet, welche nach gewisser Zeit verschwinden.  Der Schleim macht die Gegner langsamer wenn diese in ihn treten.

Wenn die Schnegge jedoch vergiftet ist, sondert sie giftigen Schleim ab, welchem den Gegner Schadet. Die Schnegge hat diese Fähigkeit doch nur wenn die vom Blaukorn genascht hat und sich seitdem nicht mehr geheilt hat. Man muss sich also entscheiden, mehr Damage und dafür weniger Leben und eine höhere Chance zu sterben, oder weniger Damage und dafür auf der Sicheren Seite sein? Die Entscheidung liegt beim Player.

Der Code vom Schleim:

Hier wird nur alle paar Sekunden die Größe vom Schleim verringert, bis dieser verschwindet

Der Code vom giftigen Schleim:

Hier wird auch nur noch der Damage am Gegner verursacht, falls dieser reintreten sollte

Die Widgets

infowidget.PNGinfowidget.PNG
counterwidget.PNGcounterwidget.PNG
gameoverwidget.PNGgameoverwidget.PNG
winwigdet.PNGwinwigdet.PNG
widgetcode.PNGwidgetcode.PNG

In „Schneckageddon“ gibt es ein paar Widgets, wie z.B. die ganzen Screens, wie die Info am Anfang, wenn man Gewinnt und Verliert. Kleinere Widgets sind z.B. die Healthbars von der Schnecke und den Gegnern oder auch der Counter von den Freunden. Manche Widgets werden nur für ein paar Sekunden angezeigt, wenn man z.B. keinen Schlüssel hat oder keinen weiteren mehr tragen kann. 

Viel Code ist in den eignen Widgets nicht, das meiste wird von außen angesteuert.

Probleme und Unzufriedenheit

Kein Projekt kommt ohne Probleme, da ist „Schneckegeddon“ keine Ausnahme.

Da ich vorher noch nie mit Unreal gearbeitet habe, war dies das größte Hindernis für mich. Ich bin kein Fan von visueller Programmierung, konnte aber auch kein C++,  weshalb ich leider mit den Nodes arbeiten musste. 

Da ich das Spiel 2D gemacht hab und die Engine normalerweise für 3D Spiele verwendet wird, habe ich mir auch hier ein Bein gestellt, da man für 2D viel weniger Tutorials und Antworten auf Fragen bekommt als für 3D.

Die Freunde konnte ich auch nicht in die Welt spawnen ohne, dass sie nicht min. 2 Tiles von einer Wall entfernt waren. Dadurch musste ich meine Map nochmal umbauen, was mich echt genervt hat, da ich das Level nicht so verschlungen machen konnte wie ich es mir vorgestellt hatte.

Manchmal wenn man gegen eine Hitbox rennt, verschwinden andere Objekte. Ich weiß bis heute nicht warum und konnte dies leider auch nicht fixen.

Wenn man auch hinsieht, sieht man das der Schleim über der Schnegge spawned und manchmal die Axt durch die Schnecke clipped. Das liegt daran in welcher reinfolge die Sprites gemalt werden, jedoch kann ich bis heute nicht sagen wo man das einstellt, außerhalb von Widgets.

Auch das mit der Teleportation der Axt ist nicht schön gelöst. Ich hätte dies bestimmt auf eine bessere Weise machen können, ist mir nur leider nicht bis zu diesem Zeitpunkt eingefallen.

Dazu ist die Rotation der Axt nicht vom Delta abhängig, weshalb sie sich manchmal verscheiden schnell dreht. Leider konnte ich dies auch nicht mehr ändern.

Ich wollte auch vieles anders machen, wie z.B. dass die Gegner auf einen zu laufen. Hier hat dann leider nur die Flipbook Animation nicht funktioniert, weshalb es so aussah als würden die Gegner leblos auf einen zu schweben. Bei diesem Problem habe ich auch den Prof. Rist gefragt, welcher mir auch eine Antwort geben konnte, welche ich aber in der Zeit leider nicht mehr umsetzen konnte.

Ich wollte auch mehr Gegner, Items und Level hinzufügen, wofür nur leider keine Zeit mehr geblieben ist.

Auch die Tilemap hätte schöner aussehen können, mit Bäumen, Wasser, Zäunen uvm.. Aber auch hier ist keine Zeit mehr dafür geblieben.

Ein Gedanke war auch mehrere Enden zu haben, wie z.B. ein Pazifist Ende zu haben, welches auch noch im Code steht (die Pinken Boxen). Dies hat nur leider nicht direkt so geklappt wie ich wollte, weshalb ich mich dann auf andere Sachen konzentriert habe.

Je länger ich an diesem Spiel saß, desto mehr Ideen kamen mir, mehr als ich hier auflisten kann.

Persönliches Fazit

Trotz der ganzen Frustration hat es doch schon Spaß gemacht an einem Spiel zu arbeiten, auch wenn ich wahrscheinlich wieder zu Godot wechseln werde, statt Unreal zu verwenden.

Freundet euch mit Schnecken an, nicht mit Unreal

Ein Projekt von

Fachgruppe

Interaktive Medien

Art des Projekts

Keine Angabe

Zugehöriger Workspace

TKCS 24s

Entstehungszeitraum

Sommersemester 2024