Kämpfe gegen Gegner um Gegner, indem du deine Angriffe kombinierst und ihre elementaren Schwächen ausnutzt. Erweitere dein Arsenal an Angriffen und verbessere sie, um den härtesten Herausforderungen zu trotzen!
The Alchemist's Handbook ist mein viertes Game-Jam-Spiel und wie immer fand es in der wunderbaren Stadt Hannover am SAE-Institut statt! Diesmal war meine Freundin Theia wieder mit dabei, und ich arbeitete mit einigen Teammitgliedern aus früheren Game Jams zusammen:
Hai Lam vom letzten Jahr war erneut mit ihren großartigen künstlerischen Fähigkeiten dabei, und Luke half wieder mit seinem Unity-Wissen. Eine weitere Künstlerin, die unter dem Namen Koa'Rynn bekannt ist, war ebenfalls Teil des Teams, sodass wir eine größere künstlerische Leistung als sonst abliefern konnten.
Jonas wollte wie gewohnt Musik beisteuern, verletzte sich jedoch am ersten Tag des Game Jams an der Hand und konnte nicht wirklich teilnehmen. Technisch gesehen war er also Teil des Teams, aber diesmal hatte das Spiel keine Musik oder Soundeffekte, da wir keine heruntergeladenen Assets verwenden wollten.
Gemeinsam haben wir es geschafft, ein ziemlich unterhaltsames Spiel zu entwickeln, auch wenn das Balancing etwas unausgewogen ist und es sehr schwer ist, überhaupt die letzte Stufe zu erreichen – ich fühle mich ehrlich gesagt schlecht für Hai Lam, denn ihre wunderbare Drachen-Illustration wird nur selten zu sehen sein!
Idee
Diesmal lautete das Thema „Neugier“. Einige Teams gestalteten ihre Beiträge rund um Katzen (im Sinne von „Neugier ist der Katze Tod“), und zwei beschäftigten sich mit dem Mars-Rover „Curiosity“. Ich wollte jedoch ein Spiel auf der Grundlage des Entdeckens machen.
Ich wollte außerdem ein Spiel mit einem RPG-Kampfsystem machen, also entschieden wir uns für ein Spiel im Stil von Darkest Dungeon, bei dem man Gegner für Gegner bekämpft, mit Angriffen in Form von Karten.
Das Thema Neugier zeigt sich in The Alchemist's Handbook auf mehrere Arten:
- Das Herausfinden der Schwächen der Gegner und das Notieren im namensgebenden Handbuch
- Das Erkunden verschiedener Kombinationsangriffe und ihrer Auswirkungen im Kampf
- Und schließlich der erzählerische Aspekt des Alchemisten, der von seiner eigenen Neugier angetrieben immer tiefer in den Dungeon eindringt, stets neugierig, welchen Gegner er als Nächstes begegnet
Kampf
Ich bin tatsächlich ziemlich stolz auf das Kampfsystem, auch wenn es nur erlaubt, dass jeweils ein Gegner gleichzeitig präsent ist. Andernfalls hätte ich ein System implementieren müssen, mit dem der Spieler einen bestimmten Gegner auswählen kann – das hätte das Spiel aber unnötig komplex gemacht.
Daher ist das Spiel in vier Stufen mit den jeweiligen Gegnern unterteilt:
Goblin -> Skelett -> Elementarmagier -> Elementardrache
Der Spieler muss jeden Gegner besiegen, bevor er zur nächsten Stufe weitergehen kann.
Elementarangriffe
Es gibt sechs Schadensarten im Spiel: Die physischen Hieb, Stich und Wucht, sowie die elementaren Feuer, Eis und Elektrizität (Volt). Diese erkennst du vielleicht aus früheren Atlus-Spielen wie Persona 3 oder besonders aus der Etrian Odyssey-Reihe, die mich direkt inspiriert hat.
Jede Schadensart hat eine zugeordnete Angriffskarte: Schwert für Hieb, Lanze für Stich, Hammer für Wucht und Elementarkugeln für die elementaren Angriffe. Zu Beginn jeder Spielrunde erhältst du drei zufällige Karten, mit denen du den ersten Gegner bekämpfst. Nach dem Besiegen eines Gegners bekommst du drei weitere zufällige Karten zur Auswahl, von denen du eine wählen kannst. Falls du diese Karte noch nicht besitzt, wird sie deinem Arsenal hinzugefügt, andernfalls wird sie aufgewertet, um mehr Schaden zu verursachen! Das erlaubt unterschiedliche Spielstile: Entweder man sammelt möglichst viele Schadensarten, um alle Schwächen ausnutzen zu können, oder man spezialisiert sich auf einen Typ und verbessert diesen so stark, dass man Gegner auch ohne Ausnutzung ihrer Schwächen besiegen kann – solange sie nicht immun dagegen sind!
Damit das System nicht zu simpel wird, greift man im Kampf nicht nur mit einer Karte an, sondern kombiniert zwei Karten. Dadurch können Spezialkombos ausgelöst werden: Erst den Gegner mit Eis einfrieren und dann mit dem Hammer zuschlagen verursacht mehr Schaden als beide Angriffe einzeln. Finde alle sechs Kombinationsangriffe!
Am letzten Tag entschieden wir uns, zur Unterscheidung der drei Elementarangriffe einfache Statuseffekte einzubauen: Feuer kann Gegner verbrennen und ihre Angriffskraft senken. Eis kann sie einfrieren und verwundbarer machen. Volt kann sie lähmen, sodass sie eine Runde aussetzen. Realistisch betrachtet war das wohl etwas zu ambitioniert für den kurzen Zeitraum, und die Statuseffekte sind ziemlich fehlerhaft...
Zugänglichkeit
Ein klarer Trend, den ich nach vier Game Jams erkannt habe, ist mein wachsender Fokus auf Zugänglichkeit.
Flower Defense war eine herunterladbare .exe-Datei für Windows und konnte nur mit einem Controller gespielt werden. Das bedeutete aber auch viel Aufwand für die Spieler: Spiel herunterladen, installieren, Controller besorgen, evtl. aufladen oder anschließen – viele meiner Freunde hatten schlicht keine Lust auf diesen Aufwand.
Bei Murder at the Great Exhibition und Daydreamer habe ich mich für Webversionen entschieden – schließlich nutzen immer mehr Leute Mac-Geräte, und ich werde sicher keine $99 jährlich für eine Mac-Entwicklerlizenz zahlen. Außerdem fällt damit die Hürde weg, dass Spieler das Spiel erst installieren müssen. Beide Spiele erforderten jedoch Tastatureingaben und waren damit auf Mobilgeräten unspielbar – schade, da man das Handy fast immer dabei hat, aber selten einen Laptop.
Für The Alchemist's Handbook wollte ich daher, dass das Spiel vollständig mit Maussteuerung spielbar ist – dadurch lässt es sich auch auf Mobilgeräten nutzen, da Bildschirmtipps in Unity als Klicks zählen. Ideal für ein Game-Jam-Spiel, bei dem keine Zeit bleibt, mobile Steuerungen separat zu programmieren.
Lessons Learned
Dieser Game Jam hat mir mehr über Spieleentwicklung beigebracht als die vorherigen.
Eine wichtige Lektion war das Implementieren dekorativer Animationen, wie etwa der Angriffsanimationen. In der ersten Nacht habe ich das grundlegende Kampfsystem programmiert, basierend auf einem ereignisgesteuerten Ablauf: Der Spieler trifft eine Wahl, der Schaden wird berechnet, es wird geprüft, ob der Gegner besiegt ist, dann greift der Gegner an, erneut wird Schaden berechnet usw. Mit simulierten Eingaben können so hunderte Kämpfe pro Sekunde ablaufen – ohne Animationen.
Am zweiten Tag mussten wir Animationen für alle diese Schritte einbauen. Das stellte uns vor neue Herausforderungen:
Einige Animationen sollten länger sein als andere – feste Zeitangaben reichten nicht aus. Auch war es nicht möglich, Animationen einfach auf Basis des Schadenstyps zu wählen, da bestimmte Kombinationen eigene Animationen erfordern, und falls keine Kombo vorhanden ist, sollten einfach zwei Standardanimationen nacheinander abgespielt werden.
Hai Lam zeigte mir das großartige DOTween-Plugin, mit dem sich einfach Werte animieren lassen. Ich nutzte das intensiv für UI-Animationen, während Luke die Angriffsanimationen übernahm.
Er wählte einen anderen Ansatz: Die Bewegungen der Charaktere wurden hart codiert und bestimmten Animationsframes zugeordnet. Besonders problematisch waren die Elementarangriffe: Die Animation bestand darin, eine Feuer-/Eis-/Volt-Kugel auf den Gegner zu schießen – als echtes 3D-Objekt, das auf ein Kollisionsobjekt am Gegner treffen sollte. Kam es dabei zu Fehlern (falsche Positionen, unvollständige vorherige Animation, Leistungseinbruch), konnte es sein, dass der Ball das Ziel verfehlte – die Animation endete nie und das Spiel hing sich auf.
Solche Probleme kosteten uns am Samstag und am Sonntag wertvolle Zeit kurz vor Abgabe. In einem Game Jam hat man nicht genug Zeit, um perfekt robuste Systeme zu entwickeln. Aber der Code sollte zumindest drei Tage überstehen, bevor alles zusammenbricht – bei unserem Animationssystem war das leider nicht der Fall.
Beim nächsten Mal werde ich mehr Zeit in ein robustes System investieren, bevor ich mit den Animationen beginne. Ich denke über ein asynchrones Nachrichtensystem nach, bei dem jeder Kampfschritt ein Animationsobjekt erzeugt, das eine Animation abspielt und dann eine „animationFinished“-Methode aufruft. Zusätzlich sollte ein Timer als Fallback dienen, der die Animation nach ein paar Sekunden beendet, falls sie sich aufhängt.
Ich war außerdem traurig, dass wir kaum Zeit hatten, den Schwierigkeitsgrad zu balancieren – selbst bei perfektem Spielstil ist es unwahrscheinlich, die späteren Gegner zu erreichen, es sei denn, man hat Glück mit den Karten. Damit war Hai Lams Arbeit an den späteren Gegner-Sprites fast vergebens, da sie kaum jemand zu sehen bekommt. Sehr schade bei ihrem Talent! Nächstes Mal will ich die frühen Phasen einfacher machen, damit fast jeder Spieler das Ende erreicht – der Schwierigkeitsgrad soll dann im letzten Kampf steigen. So sieht jeder alles, was wir gestaltet haben!
Abschließende Gedanken
Auch wenn wir das Thema Neugier nicht perfekt getroffen haben, bin ich trotzdem sehr zufrieden mit dem Ergebnis!
Das Kampfsystem hat großen Spaß gemacht zu programmieren, und die UI-Animationen mit DOTween waren super!
Das wird vermutlich mein letzter Game Jam für eine Weile sein, und ich hoffe, ihr habt Spaß beim Spielen!
