Games

Lernen Sie Dragon Crashers kennen - unser neuestes 2D-Beispielprojekt

EDUARDO ORIZ / UNITY TECHNOLOGIESSenior Content Marketing Manager
Mar 19, 2021|10 Min.
Lernen Sie Dragon Crashers kennen - unser neuestes 2D-Beispielprojekt
Diese Website wurde aus praktischen Gründen für Sie maschinell übersetzt. Die Richtigkeit und Zuverlässigkeit des übersetzten Inhalts kann von uns nicht gewährleistet werden. Sollten Sie Zweifel an der Richtigkeit des übersetzten Inhalts haben, schauen Sie sich bitte die offizielle englische Version der Website an.
Entdecken Sie, wie wir mit den nativen 2D-Tools von Unity ein idle RPG-Spiel auf die nächste Stufe gebracht haben.

Im Release-Zyklus 2019 von Unity haben wir unsere Vision verwirklicht, 2D-Künstlern und -Entwicklern eine komplette Suite von 2D-Werkzeugen zur Verfügung zu stellen. Die Veröffentlichung unserer 2D-Pakete umfasste die Animation von Charakterskeletten und Inverse Kinematik (IK), Leveldesign mit Tilemaps, Spline Shapes und Pixel Art Tools. Auf unserer 2D-Website finden Sie einen Überblick.

Dragon Crashers Demo-Bild
Caption: Sie können die spielbare Web-Demo hier ausprobieren. Vergewissern Sie sich, dass Sie einen mit WebGL 2.0 kompatiblen Browser wie Google Chrome verwenden, um die Demo in Ihrem Browser auszuführen, da ein RPG-Spiel im Leerlauf automatisch eingeblendet wird und Sie Spezialangriffe auslösen können, wenn eine Anzeige aufgeladen ist.

Unser 2D-Team hat seitdem diese Arbeitsabläufe optimiert und die Grafiktechnologie verfeinert: den 2D-Renderer innerhalb der Universal Render Pipeline. Es gibt keine bessere Möglichkeit, diese Werkzeuge zu testen und zu sehen, wie sie Ihre 2D-Grafiken zum Strahlen bringen können, als ein neues Beispielprojekt zu erforschen. Dragon Crashers ist jetzt kostenlos im Asset Store erhältlich.

Vom Asset Store herunterladen

Über Dragon Crashers

Dragon Crashers ist ein offizielles Beispielprojekt in Unity 2020.2, das die nativen 2D-Werkzeuge und die Grafiktechnologie von Unity vorstellt. Das Gameplay ist ein vertikaler Ausschnitt eines seitwärts scrollenden Idle-RPGs, wie es heute auf mobilen Plattformen beliebt ist.

Während die Heldengruppe ihre Feinde automatisch angreift, können Sie Spezialangriffe auslösen, indem Sie einfach die verschiedenen Avatare berühren oder anklicken.

Das Beispielprojekt wurde auf Desktop-, Mobil- und Web-Plattformen getestet.

Kommendes Webinar

Zusätzlich zu den Informationen in diesem Artikel, besuchen Sie bitte unser Online-Webinar zu Dragon Crashers am 14. April um 11:00 Uhr EST (17:00 Uhr MEZ), um wichtige Tipps und einen Live-Durchgang von unserem globalen Content-Entwickler Andy Touch zu erhalten. Bringen Sie mich zum Registrierungsbereich.

Drache und Ritter
Wie es begann und wie es endete: Die Konzeptgrafik und die Assets des Künstlers Jaroslaw lieferten die nötigen Anhaltspunkte für den Aufbau der Szene.
Erste Schritte

Stellen Sie sicher, dass Sie Unity 2020.2 oder 2020 LTS haben, um das Projekt in den Asset Store zu bekommen. Starten Sie zunächst ein neues 2D-Projekt und gehen Sie dann zu Paketmanager > Meine Assets, um Dragon Crashers zu importieren. Es werden einige Popup-Meldungen zu den Projekteinstellungen angezeigt, die Sie alle akzeptieren sollten.

Wenn ihr auf Probleme stoßt, lasst es uns bitte im 2D-Forum für Dragon Crashers wissen.

Unity Hub Bildschirmfoto

Sobald das Projekt importiert ist, sollten Sie eine neue Option in der Menüleiste sehen, die Verknüpfungen zu den Szenen des Projekts bietet. Wählen Sie Load Game Menu und drücken Sie Play, um es auszuprobieren.

Bild in Unity von der Auswahl "Spielmenü laden" aufgenommen

Wir empfehlen die Verwendung von hochauflösenden Display-Einstellungen in der Spielansicht, wie z. B. die Einstellung Full HD (1920×1080) oder 4K UHD (3840×2160).

Screenshot vom Spielverlauf
Sechs Figuren aus einer animierten Schaufensterpuppe

Unsere Gruppe von Helden und Basisgegnern ist vielfältig und mit verschiedenen Outfits, Accessoires und Variationen ausgestattet. Sie sind jedoch alle Zweibeiner, die einen ähnlichen Körperbau haben.

Um zu vermeiden, dass jeder einzelne von ihnen mit den jeweiligen 2D-IK-Constraints animiert wird, haben wir eine Schaufensterpuppe erstellt. Der Animator benutzte diese Schaufensterpuppe, während der Zeichner einzigartige Häute und Accessoires für die Figuren entwarf.

Bild des Charaktermodells

Die Mannequin Prefab(PV_Character_Base_Bipedal.prefab) wurde verwendet, um Prefab-Varianten für jeden Charakter zu erstellen. Der einzige Unterschied zwischen diesen Varianten ist das Sprite Library Asset, bei dem wir das visuelle Erscheinungsbild der zweibeinigen Figur austauschen.

Alle Assets der Charakter-Sprite-Bibliothek haben die gleiche Kategorie und Bezeichnung, um die Körperteile und ihre Varianten zu definieren. Zum Beispiel haben der Ritter und die Skelett-Feinde beide eine Kategorie namens "Mund", mit Sprite-Varianten wie "Mund offen", "Mund Zähne" und "Mund normal" während der Animation verwendet.

Um die Animationen auf alle Charaktere anzuwenden, stellen Sie sicher, dass jedes visuelle Asset oder PSB eines Charakters ein ähnliches Rig hat. Mit anderen Worten, sie müssen gleich benannte Knochen haben, die an Körperteile derselben Kategorie und desselben Labels gebunden sind. Um Zeit zu sparen, können Sie das Skelett der Schaufensterpuppe (oder die Knochen des Referenzcharakters) kopieren und es in die verschiedenen Charaktere einfügen. Diese Option ist im Skinning-Editor, einem Teil des Sprite-Editors, verfügbar.

Bild eines Charaktermodells mit Hut.
Um Bone-Informationen von einem anderen Charakter zu kopieren und einzufügen, stelle sicher, dass die Kategorie des Sprites und die Bone-Namen übereinstimmen. Sie sollten auch die Geometrie anpassen, damit sie gut mit den neuen Sprites funktioniert.

Die Prefabs enthalten Funktionen, die die Charaktere lebendiger machen, wie Inverse Kinematik und Normal- und Mask-Maps für eine bessere Integration in die 2D-Lichtumgebung.

Bild des Drachencharakters Modell
Zusammenstellen der Szene, der Sprites, der Tilemaps und der Sprite-Formen

Es gibt keinen Grund, das Design eines Levels so früh im Prozess des Prototyping in Stein zu meißeln. Mit den in Unity enthaltenen 2D-Werkzeugen für die Welterstellung können Sie spielerisch Levels entwerfen und diese anschließend problemlos überarbeiten. Der Tilemap-Editor und die Sprite-Form helfen dabei, Aufgaben zu automatisieren, wie z. B. das Einrichten von Kollidern zur Anpassung an Objekt- oder Geländeformen, während die Szenenansicht Ihre Spielwiese ist, um das Spiel aufregender und ästhetisch ansprechender zu gestalten.

Der wichtigste Aspekt ist, dass Sie alle Ihre "Pinsel" in der Kachelpalette bereit haben, die wiederholbare Kacheln, animierte Kacheln, isometrische oder sechseckige Kacheln oder sogar GameObjects enthalten kann, die alle mit nur einem Renderer (Tilemap Renderer) performant gerendert werden. Alle Elemente des Rasters finden Sie in der Palette_GroundAndWalls Tile Palette.

Screenshot des Spiels im Editor
Die Bodenkacheln, die hier weiß sind, erscheinen im Spiel aufgrund der atmosphärischen 2D-Lichter, die der Umgebung hinzugefügt wurden, nicht weiß.

Eine weitere oft übersehene Funktion, die beim Leveldesign nützlich sein kann, ist der Sprite Draw Mode. Gekachelte Sprites, die für Hintergrundebenen verwendet werden, können einen großen Szenenbereich mit einem kleinen Sprite abdecken, um einen schönen Parallaxeneffekt zu erzeugen.

Screenshot des Spiels im Editor. Es gibt Höhlen.
Diese vier Hintergrundebenen sind einfache, wiederholbare Sprites.

Ein Tilemap-Raster ist möglicherweise nicht die praktischste Lösung, um organischer aussehende Objekte oder Spline-basierte Elemente zu Ihrem Projekt hinzuzufügen. Stattdessen empfehlen wir ein splinebasiertes Werkzeug wie 2D Sprite Shape, das ähnlich wie ein Vektorzeichenprogramm zeichnet. Verwenden Sie es als Hintergrundrequisite oder als Teil des Spiels. Mit dem SpriteShape Renderer können Sie effizient viele Sprites rendern, die am Spline oder am Rand Ihrer Formen befestigt sind. Siehe Prefab P_MineCartTracks_A , um zu sehen, wie die Gleise mit der Spline-Linie gezeichnet werden und wie die Stützstruktur aus der Fülltextur des Sprite-Formprofils erstellt wird.

Screenshot des Spiels im Editor. Es gibt Bahngleise.

Prefab P_Bridge oder P_MineCartTracks_B sind weitere Beispiele, die zeigen, dass eine Sprite Shape-Umrandung nicht nur eine einfache Linie sein muss, sondern auch komplexere Elemente darstellen kann - in diesem Fall eine Brücke und ein Gleis.

Bild der verwendeten dekorativen Sprites.
Sprite Shape wurde für dekorative Elemente wie die Eisenbahnschienen oder auch für Vordergrundelemente wie die Holzkonstruktion verwendet.
2D-Shader, Normal Maps und animierte Requisiten

Mit dem 2D-Renderer können Sie den Sprite-Lit-Shader für erweiterte Lichteffekte verwenden. Nutzen Sie diese Effekte in vollem Umfang, indem Sie Ihren Sprites sekundäre Texturen geben.

Das Bild zeigt den Prozess vom grundlegenden Charaktermodell zur voll funktionsfähigen Figur.
Sprite Shape wurde für dekorative Elemente wie die Eisenbahnschienen oder auch für Vordergrundelemente wie die Holzkonstruktion verwendet.

Normal Maps können im Sprite-Editor hinzugefügt werden. Diese RGB-Bilder stellen die XYZ-Richtung dar, in die das Pixel zeigt, und signalisieren den 2D-Lichtern, wie stark sie beeinflusst werden sollen. Maskenmaps können auch durch das 2D-Renderer-Daten-Asset(RenderData_2D.asset im Projekt) genutzt werden, das Teil der Funktion Light Blend Styles ist. Der Lichtüberblendungsstil "Fresnel" wird verwendet, um das Randlicht um Charaktere und Sprites zu akzentuieren. Um beispielsweise den Fresnel-Effekt zu erzielen, wählen Sie die Verwendung der R-Kanal-Informationen aus den Mask-Maps. In diesem speziellen Projekt gibt es nur einen Lichtüberblendungsstil, so dass die drei Kanäle - R, G und B - gleich aussehen (schwarz und weiß). Das macht die Erstellung von Maskenkarten einfacher.

Screenshot des Editors mit Spielkunst/Objekten.
Diese Spielgrafik wurde mit Affinity Designer erstellt. Der Künstler Jaroslaw hat gleichzeitig Normal- und Maskenkarten erstellt - ein Prozess, den wir in einem späteren Blog behandeln werden.

Shader Graph wird in der Demo häufig verwendet, um Requisiten zu animieren, ohne die CPU zu belasten. Sie können Elemente wie Wind, der die Spinnennetze bewegt(P_SpiderWeb_Blur prefab), leuchtende Kristalle(P_Crystals_Cluster) sowie die Animation der fließenden Lava(P_Lava_Flowing_Vertical) beobachten, die eine Flow-Map-Textur nutzt, um die Richtung der UV-Koordinaten der Haupttextur zu steuern. Die Fließtextur verwendet die Farben Rot und Grün, um die XY-Richtung anzugeben, der die Pixel in jedem Bild folgen. Öffnen Sie die SubGraph FlowMap, um zu erfahren, wie Sie diesen Effekt erreichen können.

Screenshot des Spiels im Editor. Lava!
Die handgemalte Flow Map verleiht dem Lavastrom einen zähflüssigen und cartoonhaften Effekt, der zur künstlerischen Ausrichtung des Projekts passt.

In derselben Drachenkampfszene gibt es eine weitere Shader-Animationstechnik, das so genannte "animierte Alphaclipping", das eine flüssige Animation aus einer einzigen Textur erzeugt. Dies geschieht durch die Anzeige eines bestimmten Bereichs von Pixeln in jedem Bild auf der Grundlage ihrer Alphawerte. Visuelle Effekte wie der Lavasplatter(ParticleSystem_Splatters) oder die Trefferanimation(P_VFX_HitEffect) wurden mit dieser Technik mit Shader Graph erstellt.

Splatter-Alpha-Überblendung
Die flüssige Animation dieses Partikels wurde aus einer einzigen Textur und der mit Shader Graph angewandten animierten Alpha-Clipping-Technik erstellt.
Einfärben der Szene mit 2D-Lichtern

Der künstlerische Stil der Demo wurde mit Rücksicht auf 2D-Lichter - und ihre vielen Möglichkeiten - erstellt. Wie Sie sehen können, sind Sprites, die durch die handgefertigten Normal Maps und Mask Maps verbessert wurden, relativ flach. Einige Sprites, wie z.B. der Tilemap-Boden, sind Graustufen, d.h. sie werden mit der Farboption des Tilemap-Renderers in Kombination mit den beleuchteten Bereichen der Umgebung eingefärbt.

Screenshot des Spiels - 3D-Lichter an und 3D-Lichter aus.
Es ist wichtig, die Möglichkeiten der 2D-Grafik von Unity zu berücksichtigen, um die Grafik für das Spiel so zu gestalten, dass das Beste aus allen verfügbaren Optionen herausgeholt wird.

Echtzeit-2D-Lichter ermöglichen es Ihnen, mehr Zeit in der endgültigen Spielszene im Unity Editor zu verbringen. Wenn Sie die direkten Ergebnisse beobachten, während Sie Ihre Szene mit Lichtern und Objekten zusammenstellen, oder sogar die Möglichkeit haben, den Level während des Spiels zu spielen, können Sie die gewünschte Stimmung und Atmosphäre für Ihr Spiel besser aufbauen.

Außerdem können Sie die Immersion erhöhen, indem Sie diese Elemente animieren. Zum Beispiel zeigt die P_Lantern_HangingFromPost Prefab, wie man ein Licht an ein animiertes Objekt anbringt oder der Hexenfigur einen Stab mit Sprite-Lit-Partikeln gibt

Ein weiterer Vorteil der Verwendung von 2D-Lichtern in Ihrem Projekt ist die Möglichkeit, Elemente wiederzuverwenden. Umgebungen und Requisiten können je nach Lichtverhältnissen sehr unterschiedlich aussehen, so dass Sie mit denselben Sprites viele verschiedene Levels erstellen können.

Gameplay-Architektur

Für die Erstellung, Strukturierung, Verwaltung und Iteration des Gameplays verwendete unser Demoprojekt eine Kombination aus skriptfähigen Objekten und Prefabs.

Alle sieben Charaktere, unabhängig davon, ob sie Helden oder Schurken sind, erben ihre Kernstruktur von der Basiseinheit Prefab und verwenden denselben Verhaltenscode. Um die Werte zwischen den Zeichen zu unterscheiden, haben wir skriptfähige Objekte für verschiedene "Blöcke" von einheitenbasierten Werten verwendet. Fest kodierte Werte machen es für Nicht-Programmierer schwierig, das Spiel auszubalancieren, und führen zu einem starren Gameplay. Deshalb haben wir Einheitenwerte wie "Angriffsschadenshöhe", "Abklingzeit der Fähigkeit in Sekunden" und "Lebenspunkte der Einheit" in skriptfähigen Objekten festgelegt, damit jeder, der am Projekt arbeitet, schnelle Anpassungen vornehmen kann. Diese Wertänderungen werden dann vom Gameplay-Code dynamisch verarbeitet.

Screenshot des Unity-Editors

Jede vorgefertigte Einheit verfügt über ein zentrales "UnitController"-Skript, das als "Gehirn" der Einheit fungiert und interne Skriptverweise und Verhaltenssequenzen verwaltet. Wenn der Drache beispielsweise angegriffen wird, führt der "UnitController" entsprechende Verhaltensereignisse aus, wie z. B. den Übergang zu einer Zuck-Animation, das Abspielen eines Brüll-Soundeffekts und die Verringerung der Lebenspunkte des Drachens. Diese Kernverhaltensweisen halten sich an das Konzept der Kapselung und behandeln nur ihre eigenen Zwecke und Aufgaben. UnitHealthBehaviour verarbeitet beispielsweise nur die Logik, einschließlich des Setzens und Entfernens von Gesundheitswerten einer Einheit, und meldet wichtige Ereignisrückrufe, wie "HealthChanged" oder "HealthIsZero". Der "UnitController" sendet jedoch Werte an das "UnitHealthBehaviour", die auf den Szenarien und Aktionen basieren, die während des Spiels stattfinden.

Flussdiagramm des Gerätereglers

In einigen Fällen müssen die Systeme außerhalb der Einheiten aktualisiert werden, wenn ein bestimmtes Ereignis eintritt. Für diese Einsätze werden Delegierte eingesetzt.

Zum Beispiel: Wenn die Hexe durch einen Angriff Schaden erleidet und 'UnitHealthBehaviour' das Ereignis 'HealthChanged(int healthAmount)' ausführt, kann das extern abonnierte 'UIUnitHealthBehaviour' den Lebenspunktebalken der Hexe entsprechend diesem Wert aktualisieren.

Die Verwendung von Delegaten ermöglicht es uns, Bereiche zu isolieren und zu testen, ohne von anderen Systemen abhängig zu sein. Dazu gehörte z. B. das Testen der Leistung des Pop-up-Schadensanzeigesystems in einer separaten Szene, ohne dass das Kampfgeschehen simuliert werden musste.

Flussdiagramm der Pakete
Timeline und Signale

Die Timeline-Funktion von Unity wurde in zwei Bereichen eingesetzt: Lineare Zwischensequenzen und die Sequenzen der Fähigkeiten der einzelnen Einheiten.

Die linearen Zwischensequenzen finden am Anfang und am Ende eines Kampfes statt. Sie übernehmen die Sequenzierung für eine Vielzahl von Bereichen, wie Kameraübergänge (mit Cinemachine), Charakteranimationen (mit Animator), Audioclips, Partikeleffekte und UI-Animationen. Jeder Track wurde an die entsprechende Szeneninstanz gebunden.

Ein Timeline Signal wurde am Ende der Intro Cinematics eingebettet, um ein Unity Event aufzurufen, wenn die Cutscene beendet ist. Damit wird "signalisiert", wann die Logik des Kampfspiels beginnen soll.

Timeline wurde verwendet, um vorgefertigte Fähigkeitssequenzen für jede Einheit zu erstellen. Dies ermöglicht es jeder Einheit, ihre eigenen Spezialfähigkeiten zu haben, die mit ihrem Charakter verbunden und assoziiert sind; ähnlich den Champion-Fähigkeiten in einem MOBA-Spiel.

Jede Einheit verfügt über zwei Fähigkeits-Timelines: einen "Basis"-Autoangriff und einen "Spezial"-Angriff, der manuell aktiviert wird. Das Skript 'UnitAbilitiesBehaviour' steuert die Logik für beide Fähigkeits-Timelines in Bezug auf die aktuell gespielte Fähigkeit, die Fähigkeits-Sequenz-Warteschlange und das Starten/Stoppen von Fähigkeits-Abklingzeiten (je nach übergeordneter Gameplay-Logik, z. B. ob die Intro-Cutscene läuft oder ob eine Einheit gestorben ist). Ability Timeline Tracks, die an lokale Systeme der Unit Prefab gebunden sind, einschließlich Character's Animator für Angriffsanimation und Particle Systems für VFX. Auf diese Weise konnten sowohl der Programmierer als auch der Künstler die spezifischen Fähigkeiten einer Einheit im Prefab-Bearbeitungsmodus isoliert erstellen, wiedergeben und überarbeiten, bevor die Änderungen auf jede Instanz der Einheiten-Prefab im Spiel angewendet wurden.

Figur, die eine Axt niederschlägt.

Timeline-Signale wurden verwendet, wenn eine Fähigkeit eine Art von Wertmodifikator auf die Gesundheit des Ziels einer Einheit anwenden sollte. Wenn der Ritter zum Beispiel sein Schwert schwingt, soll der Schaden zugefügt werden, sobald das Schwert einen kritischen Punkt in der Animation erreicht, und nicht am Anfang oder am Ende des Schwertschwungs. Als sich das Timing für Animationen und VFX während der Entwicklung änderte, positionierte der Künstler das "Ability Happened"-Signal in einem sehr schnellen Arbeitsablauf an den neuen gewünschten Punkt der Sequenz, ohne dass der Programmierer irgendwelche Werte im Code ändern musste.

Dies ermöglichte es uns auch, mehrere "Fähigkeit passiert"-Signale in einem kontinuierlichen Angriff hinzuzufügen, wie z. B. der Drache, der Feuer auf die Gruppe von Helden spuckt.

Dragon Crashers-Charaktere im Kampf mit einem Drachen, wobei der Editor in der unteren Hälfte des Bildschirms geöffnet ist
Sehen Sie sich das Dragon Crashers-Webinar an (und holen Sie sich ein paar Goodies)

Der leitende globale Inhaltsentwickler Andy Touch veranstaltete ein Webinar, in dem er den Character Pipeline Workflow, der für die Erstellung des Projekts verwendet wurde, im Editor demonstrierte. Dieses Webinar vermittelte, wie man:

  • Exportieren einer 2D-Figur aus Photoshop in Unity
  • Einrichten des Sprite-Rigs eines Charakters
  • IK für die Gliedmaßen eines Charakters einrichten
  • Verwenden Sie Sprite Swapping für verschiedene Charaktere
  • Verschachtelte Prefabs für Waffenaufsätze verwenden
  • Sprite-Normal- und Maskenkarten für 2D-Beleuchtungsstile anwenden
  • Sequenzen von Charakterfähigkeiten mit Timeline

Als Dankeschön dafür, dass ihr Dragon Crashers mit uns erkundet habt, möchten wir euch eine Reihe von Hintergrundbildern, Zoom-Hintergründen und anderen visuellen Elementen zur Verfügung stellen, die euch auf eurer Reise zur Entwicklung von 2D-Spielen inspirieren sollen. Holen Sie sich die Dragon Crasher-Hintergründe hier.

Dragon Crashers Hintergründe auf PC, Laptop und Tablet.
Weitere 2D-Ressourcen

Für diejenigen, die ein neues 2D-Projekt beginnen, gibt es bereits einige großartige Anleitungen im Blog und in den Foren. Wenn Sie die Tools noch nicht kennen, empfehlen wir Ihnen, die 2D-Webseite, den Blog 2D Tips Lightning Round und die Präsentation zu besuchen, um nützliche Tipps zu erhalten. Wenn Sie noch mehr wissen möchten, sehen Sie sich hier einen tiefen Einblick in unser Skelett-Animationssystem an, oder unser früheres Projekt, die Verlorene Krypta und das dazugehörige Webinar. Wie immer empfehlen wir auch einen Blick in unsere aktuellen Dokumentationen und natürlich in den 2D-Renderer-Bereich, um weitere Informationen zu bestimmten Funktionen oder APIs zu erhalten.