Guide

Persistente HP für euren RPG-Hit!

Persistente HP Cover

Um mit seinem RPG-Maker-Titel aus der Masse der täglich erscheinenden Titel herauszustechen, braucht es oftmals besondere Features. Dies kann einerseits durch eine individuelle Optik geschehen, andererseits kann das Spiel auch über gewisse Kniffe verfügen, die nur in wenigen anderen Spielen vorhanden sind. Eine Möglichkeit ist es, persistente HP für Gegner einzuführen. Warum das sinnvoll sein kann und wie ihr das ganz ohne Plug-ins schaffen könnt, erkläre ich euch hier.

Anwendungszwecke von persistenter HP

Die Anwendung von persistenter HP bei Gegnern ist sinnvoll, wenn ihr den Spieler in Situationen bringen wollt, in denen er dem Feind unterlegen ist, aber trotzdem Fortschritte durch Scheitern erzielt.

Nehmen wir beispielsweise an, ich habe ein Kampfsystem entwickelt, bei dem das Endziel darin besteht, einen Turm zu erobern, indem ich in jeder Runde Einheiten zu diesem schicke. Wenn der Turm insgesamt 100 HP hat und die erste Einheit 20 Schaden verursacht, möchte ich, dass die zweite Einheit nur noch einen Turm mit 80 HP vorfindet, damit der Fortschritt der ersten Einheit nicht vollständig verloren geht.

Eine weitere Möglichkeit ist, dass ich einen Nemesis-artigen Gegner erschaffe, der meinen Spieler über ein Level hinweg immer weiter verfolgt, aber durch die vielen Begegnungen zermürbbar ist.

Oder ich möchte einfach die Grundlage dafür schaffen, dass die HP-Werte der Feinde auch außerhalb eines Kampfes durch Aktionen in der Spielwelt beeinflusst werden können.

Ihr seht also: Persistente HP sind ein Werkzeug, das es euch erlaubt, euer RPG-Maker-Game zu etwas Besonderem zu machen, das aus der Masse der mit dieser Engine kreierten Spiele heraussticht.

Bedingungen und Logik

Um zu erreichen, dass Gegner persistente HP haben, benötigen wir – um ehrlich zu sein – nur zwei Variablen, die korrekt mathematisch angewendet werden müssen. Eine davon dient dazu, am Ende jeder Runde die aktuellen HP des Gegners abzuspeichern, während die andere als temporäre Variable dient und den jeweiligen HP-Maximalwert des Gegners repräsentiert.

Subtrahiert man zu Beginn des Kampfes den HP-Maximalwert vom HP-Wert, den der Gegner am Ende der letzten gekämpften Runde hatte, erhält man einen negativen Variablenwert. Dieser wird einfach von der tatsächlichen Maximal-HP des Gegners subtrahiert, um die Illusion zu erzeugen, dass der Gegner über persistente HP verfügt.

Befinden sich mehrere Gegner im Kampf, die persistente HP haben sollen, muss dieser Ablauf natürlich für alle Feinde wiederholt werden, die über persistente HP verfügen sollen. Diese Prozedur kann im Prinzip auch für alle anderen Werte der Gegner so umgesetzt werden, wodurch sich zahlreiche Möglichkeiten für spannendes Game-Design eröffnen.

Schritt-für-Schritt-Guide:

Zunächst begeben wir uns in die Datenbank des RPGMakers MZ und wählen im Trupp-Fenster die Begegnung aus, in der wir persistente HP für einen Gegner implementieren möchten. Ich habe hier eine zufällige Begegnung mit einem einzelnen Feind gewählt. Um persistente HP zu implementieren, benötigen wir zwei Seiten. Die erste dient dazu, alle zum Beginn des Kampfes notwendigen Operationen durchzuführen, während die zweite alle Operationen am Ende der Runde beinhaltet.

Entgegen aller Vernunft beginnen wir zu Zwecken der Nachvollziehbarkeit mit der zweiten Seite. Da diese am Ende jeder Runde durchgeführt werden soll, stellen wir die Auslösebedingung auf „Rundenende” und die Spanne auf „Runde”.

Persistente HP SS1

Nun erstellen wir eine Variable und geben ihr einen passenden Namen. In meinem Fall habe ich mich für den Titel „GegnerHP“ entschieden. Als Operation wählen wir „Einstellen“ und wählen dann unter „Spieldaten“ die HP des gewünschten Feindes aus. Sobald wir das erledigt haben, sind wir mit Seite zwei schon fertig. Am Ende jeder Runde speichern wir den aktuellen HP-Wert des gewählten Gegners in die Variable „GegnerHP“. Die persistente HP für Gegner rückt somit in greifbare Nähe.

Persistente HP SS2

Nun gehen wir zurück auf Seite eins und stellen die Bedingung „Runde 0“ ein, da wir die HP des Gegners auf den aktuellen Wert setzen wollen, bevor der Kampf richtig beginnt. Bei der Spanne wählen wir Kampf, da wir diese Seite nur ein einziges Mal auslösen wollen, und zwar zu Beginn des Kampfes.

Persistente HP SS3

Nun wiederholen wir den Prozess von Seite zwei und erstellen eine zweite Variable namens „GegnerMaxHP“, der wir den aktuellen HP-Wert des Gegners zuweisen. Man könnte versucht sein, stattdessen „MaxHP“ auszuwählen. Allerdings ist die Funktion hinsichtlich Ereignissen vor dem Kampf deutlich flexibler, wenn ihr den aktuellen HP-Wert nehmt. Beispielsweise, wenn der Gegner durch andere Ereignisse bereits mit Schaden in den Kampf starten soll.

Persistente HP SS4

Als Nächstes erstellen wir eine if-Abfrage bzw. eine Bedingung. Wir müssen nämlich überprüfen, ob die Variable „GegnerHP“ dem Wert 0 entspricht. Das bedeutet, dass wir den HP-Wert des Gegners nicht bearbeiten müssen, da kein Schaden gewirkt wurde. Ist dies jedoch nicht der Fall, müssen wir diesen anpassen, weswegen wir den Operator „ungleich“ auswählen. Ein Else-Zweig ist nicht notwendig. Dieser Schritt ist im Großen und Ganzen nicht zwingend notwendig, spart uns jedoch Rechenleistung bei vollen HP des Gegners.

Persistente HP SS5

Nun beginnt die Mathematik. Wir benötigen die Differenz zwischen den Variablen „GegnerMaxHP” und „GegnerHP”. Um diese herauszufinden, subtrahieren wir „GegnerMaxHP” von „GegnerHP” und erhalten einen negativen Wert. (z. B. GegnerMaxHP = 10; GegnerHP = 7 → GegnerHP – GegnerMaxHP = x → 7 – 10 = x → x = -3). Da wir uns eine dritte Variable möglichst sparen wollen, überschreiben wir die Variable „GegnerHP“ mit dem neuen Wert, der aus der Gleichung hervorgeht.

Persistente HP SS6

Im dritten Reiter der Ereignisbefehle wählen wir nun den Punkt „Gegner HP ändern“ aus und erhöhen den HP-Wert des Zielmonsters um die Variable „GegnerHP“. Warum erhöhen? Nun, der Wert, den wir in „GegnerHP“ eingespeichert haben, ist negativ, und 10 + (-3) = 7.

Persistente HP SS7

Tatsächlich ist das auch schon der ganze Zauber, den es benötigt, um persistente HP zu ermöglichen. Eure finale Seite 1 sollte also so aussehen:

Wichtige Hinweise:

Obwohl die Implementierung persistenter HP nicht allzu kompliziert ist, gibt es einige wenige Dinge, welche man stets im Hinterkopf behalten sollte, wenn man mit dem Gedanken spielt diese Art von Schadenskalkulation in sein Spiel einzubinden.

1. Mehrere Gegner mit persistenter HP:

Der oben beschriebene Prozess eignet sich sehr gut, um einen einzelnen Gegner mit persistenten HP in euer Spiel zu implementieren. Bedenkt allerdings, dass ihr bei mehreren Gegnern auch mehrere Variablen der Funktion „GegnerHP“ benötigt. „GegnerMaxHP” ist nur einmal notwendig, da dieses pro Gegner immer wieder überschrieben werden kann.

Wenn in einer Begegnung mehrere Gegner mit persistenten HP vorkommen sollen, muss der Prozess oben für jeden einzelnen Gegner wiederholt werden.

Je nach Anwendungszweck in eurem Spiel kann es also ggf. unpraktikabel sein, jeden Gegner in jeder Begegnung mit persistenten HP auszustatten. Ich würde empfehlen, diese Mechanik für spezielle Gegner zu reservieren, doch schlussendlich ist das natürlich euch überlassen.

2. Potenzielle Fehlerquellen:

Da diese Funktion verhältnismäßig simpel ist, gibt es recht wenige Faktoren, die dazu führen könnten, dass die Begegnung mit persistenten HP nicht korrekt funktioniert. Eine mögliche Fehlerquelle ist, dass die Spannen nicht ordnungsgemäß eingestellt sind. Achtet in jedem Fall darauf, dass Seite 1 auf „Kampf” und Seite 2 auf „Runde” gesetzt wurde.  Ein weiteres Problem könnte darin liegen, dass am Ende die Differenz versehentlich subtrahiert statt addiert wurde. Viele weitere Möglichkeiten, etwas falsch zu machen, sehe ich bei der Implementierung dieser Variante von persistenten HP kaum.

3. Besonderheiten dieser Implementierung

Bei dieser Variante, persistente HP in euer Spiel einzubinden, bieten sich einige Vorteile gegenüber anderen Varianten, die oftmals übersehen werden. Da wir den aktuellen HP-Wert unseres Gegners am Ende des letzten Kampfes speichern, können durch Ereignisse vor Beginn des Kampfes bereits Änderungen des HP-Werts umgesetzt werden, die dann von unserer Variante der persistenten HP berücksichtigt werden.

Ein Beispiel: Unser Bossgegner „Ultraschleim“ hat eigentlich 20.000 HP. Der Spieler stürmt in einem ersten Versuch gegen den Gegner und reduziert seine HP auf 18.500, bevor er selbst stirbt. Nun findet der Spieler vielleicht vor der nächsten Begegnung eine magische Seife, die dem „Ultraschleim“ vor dem Kampf 5.000 Schaden zufügt und somit seine Start-HP auf 15.000 reduziert. Da der gewirkte Schaden nicht ungeschehen gemacht werden soll, soll der „Ultraschleim“ mit 13.500 HP starten.

Dies erreichen wir, indem wir von der Variablen „GegnerHP” den von der Seife verursachten Schaden subtrahieren. Da dieser 5.000 beträgt, gilt: Gegner-HP = Gegner-HP – Seife, also 18.500 HP – 5.000 HP = 13.500 HP.

Somit können wir den Schaden oder die Heilung von Gegnern durch verschiedenste Ereignisse in unserem Spiel beeinflussen und ein wirklich variables Spielerlebnis schaffen.

Ich wünsche euch nun viel Spaß damit persistente HP zu nutzen um euer Game aufzupeppen. Ein mit dem RPGMaker erstellter Titel welcher mir lange in Erinnerung bleibt ist a Vampire’s Dawn. schaut euch doch mal meine Retrospektive dazu an.

Kommentieren

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Verwandte Artikel

GRIS – Die ultimative Komplettlösung

Habt ihr Schwierigkeiten dabei GRIS durchzuspielen? Hier findet ihr unsere vollständige Komplettlösung!

Haven and Hearth – Ein Einsteigerguide

Ein deutscher Einsteigerguide zu Haven and Hearth

Final Fantasy 7 Rebirth – Der Ultimative Performance Guide

Schlechte Performance in Final Fantasy 7 Rebirth? In diesem Guide findet ihr...

The House of Da Vinci VR – Komplettlösung

Mit unserer The House of Da Vinci VR - Komplettlösung wird der...