2D Pixel Perfect: So richten Sie Ihr Unity Projekt für Retro-16-Bit-Spiele ein

In unserem ersten 2D Pixel Perfect Leitfaden für Retro-Spiele haben wir Ihnen gezeigt, wie Sie das 2D Pixel Perfect Tool einrichten und wie 8-Bit-Grafiken damals erstellt wurden. In diesem Beitrag springen wir in die 16-Bit-Ära. Mit Hilfe von Mega Cat Studios lernen Sie, wie Sie mit Unity Einstellungen, Grafikstrukturen und Farbpaletten authentische Grafiken für Spiele im Sega Genesis (oder Mega Drive) und Super NES-Stil erstellen.
Bringen Sie Ihre 2D -Entwicklungserfahrung auf die nächste Stufe und erkunden Sie die native Suite von 2D -Tools von Unity .

Mega Cat Studios hat die Entwicklung hochpräziser Retro-Spiele zu einer Kunstform erhoben. So sehr sogar, dass einige ihrer Titel auch als Cartridge erhältlich sind und auf Retro-Konsolen wie dem Sega Genesis gespielt werden können.
Bevor Sie sich in diesen Beitrag vertiefen, empfehlen wir Ihnen, sich mit unserem vorherigen Retro-Leitfaden vertraut zu machen, in dem wir die 2D Pixel Perfect Einstellungen und die Nachbildung von Grafiken im 8-Bit-Stil behandelt haben. Mit Unity 2019.2 ist 2D Pixel Perfect nun Teil des 2D Renderers, der sich im Lightweight Render Pipeline (LWRP)-Paket befindet. 2D Pixel Perfect ist auch als eigenständiges Paket (mit dem gleichen Funktionsumfang) für Kreative verfügbar, die LWRP nicht verwenden. In dieser Anleitung zeigen wir Ihnen, wie Sie das Projekt in LWRP einrichten.
Klicken Sie im Unity Hub auf „Neu“, wählen Sie „2D“ und benennen Sie dann Ihr Projekt.

2. Um das 2D Pixel Perfect Paket zu importieren, klicken Sie in der Symbolleiste auf das Menü „Fenster“ und wählen Sie „Paketmanager“ . Wählen Sie im Popup-Fenster das Lightweight RP- Paket aus und achten Sie darauf, dass Sie Version 6.9.0 oder höher erhalten.

3. Als Nächstes konfigurieren Sie den 2D Renderer im Editor und erstellen ein neues Pipeline-Asset. Klicken Sie im Projektfenster mit der rechten Maustaste auf die Assets-Ansicht und wählen Sie Erstellen > Rendering > Lightweight Render Pipeline > Pipeline Asset .
4. In der Assets-Ansicht des Projektfensters erstellen Sie einen neuen 2D Renderer, indem Sie mit der rechten Maustaste klicken und Erstellen > Rendering > Lightweight Render Pipeline > 2D Renderer auswählen.

5. Wählen Sie das von Ihnen erstellte Pipeline-Asset aus. Wählen Sie „Allgemein“ und ändern Sie dann den Renderer-Typ von „Forward Renderer“ auf „Benutzerdefiniert“ .
6. Weisen Sie den von Ihnen erstellten 2D Renderer dem Datenfeld zu.

7. In den Grafikeinstellungen legen Sie fest, dass die Einstellungen Ihrer Scriptable Render Pipeline das neu erstellte Pipeline-Asset verwenden.
Der 2D Renderer sollte nun konfiguriert sein, einschließlich der 2D Pixel Perfect Camera.
In Unity 2019.2 können 2D Sprites über ein „Sprite-Lit“-Material verfügen, das es ihnen ermöglicht, auf 2D Lichtverhältnisse zu reagieren. Wenn Sie in Ihrem Projekt keine 2D Lichter verwenden, stellen Sie sicher, dass Sie ein Material haben, das keine 2D Lichter benötigt, um die Sprites sichtbar zu machen. In diesem Fall können Sie das Material auf „Sprites-Standard“ ändern.

Sie müssen die Pixel Perfect Camera-Komponente zu Ihrer Hauptkamera hinzufügen. Wir empfehlen, den Bearbeitungsmodus zu aktivieren.
Die Sega Genesis- Konsole hat eine Auflösung von 320x224 Pixel (oder ein Raster aus 40x28 Kacheln mit je 8x8 Pixeln). Das ist die NTSC-Version. Das Super NES hat auch in seiner NTSC-Version eine Auflösung von 256×224 (30x28 Kacheln von 8x8 Pixeln).
Für beide Grafikstile wird eine Höhenauflösung von 224 px und eine Gestaltung der Elemente mit 8 PPU empfohlen.

Falls Sie eine kurze Auffrischung benötigen, was die einzelnen Optionen der 2D Pixel Perfect Camera-Komponente bewirken, schauen Sie sich unseren vorherigen Blogbeitrag zu Retro-Spielen an.
In diesem Abschnitt werden wir den Arbeitsablauf zur Erstellung von Grafiken behandeln, die das Aussehen verschiedener Konsolen imitieren, wie wir es bereits in unserem NES-Blogbeitrag getan haben. Im Vergleich zu einem 8-Bit-Projekt gibt es weniger Einschränkungen und mehr Freiheit bei der Farbgestaltung, aber auch der Genesis hat seine Grenzen. Wir halten es außerdem für wichtig zu erklären, wie die Originalhardware funktioniert, damit Sie diese Einschränkungen auf Ihr eigenes Retro-Projekt anwenden können.
Der Umstieg von 8-Bit- auf 16-Bit-Konsolen eröffnet Ihnen mehr Möglichkeiten auf anspruchsvollerer Hardware. Nichtsdestotrotz gelten die Grundprinzipien für die Erstellung großartiger NES-Grafiken weiterhin. Die Grafiken werden beispielsweise immer noch in 8x8-Kacheln gespeichert und dann zu größeren Bildern zusammengesetzt, egal ob es sich um Sprites oder Hintergrundelemente handelt. Sie müssen weiterhin mit begrenzten Unterpaletten und einer gemeinsamen transparenten Farbe arbeiten, obwohl 16 Bit in mancher Hinsicht mehr Freiheit bei den Paletten bieten. Sie werden wahrscheinlich erleichtert sein zu hören, dass 16-Bit-Konsolen im Allgemeinen keine fest codierte Farbpalette wie ihre 8-Bit-Pendants besitzen, was bedeutet, dass die verfügbaren Farben im Vergleich zum NES erheblich erweitert sind.
Darüber hinaus verfügt Genesis über Unterpaletten mit 15 Farben sowie der gemeinsamen Farbe für Sprite- und Ebenentransparenz. Eine der Schwächen beim Entwerfen von Grafiken für Genesis liegt jedoch in den Unterpaletten. Subpaletten können entweder Sprites oder Hintergrundkacheln frei zugewiesen werden, Genesis erlaubt jedoch nur die gleichzeitige Verwendung von vier Subpaletten. Aus diesem Grund müssen Künstler darauf achten, welche Farben in einer Unterpalette verwendet werden, damit diese sowohl für Sprites als auch für Hintergründe optimal genutzt werden können. Eine Unterpalette für Genesis enthält üblicherweise Farben, die sowohl für Hintergründe als auch für Sprites verwendet werden, um ein sauberes Gesamtbild zu erzielen.


Um für eine beliebige 16-Bit-Plattform zu entwickeln, müssen Sie mit einer indizierten Palette arbeiten. Hierfür kann Gimp eine Open-Source-Alternative zu Photoshop sein, die viele Möglichkeiten zur Manipulation indizierter Farbpaletten bietet.
Um in Gimp eine indizierte Palette zu erstellen, gehen Sie zu Bild > Modus > Indiziert …

Das Fenster „Indizierte Farbkonvertierung“ wird angezeigt.

Die maximale Anzahl an Farben sollte auf 15 eingestellt werden. Sie können zwar automatische Dithering-Muster verwenden, diese sehen aber in der Regel besser aus, wenn sie manuell erstellt werden.

Die Farben des Bildes sind nun indiziert. Diese Informationen werden automatisch mit dem Bild gespeichert, sodass der Farbindex verwendet werden kann. Wenn Sie die Reihenfolge der Farben im Index ändern möchten, klicken Sie einfach mit der rechten Maustaste auf die Farbtabelle und wählen Sie „Farbtabelle neu anordnen…“.

Es erscheint ein Popup-Menü, in dem Sie die Farben per Drag & Drop in eine neue Reihenfolge bringen können.

Ein beliebter Trick, um eine größere Farbtiefe zu erzielen, besteht darin, die Farbpalette entlang einer bestimmten Rasterlinie zu steuern, ähnlich wie beim Parallax-Scrolling auf dem NES. Genesis ist in der Lage, die Unterpalettenauswahl für das Artwork entlang einer bestimmten Rasterlinie zu ändern. Dieser Trick wird häufig verwendet, um die Illusion zu erzeugen, dass ein Teil eines Levels unter Wasser liegt. Die „Unterwasser“-Farben werden einer völlig separaten Unterpalettenauswahl hinzugefügt, und die Unterpalettenauswahl wird geladen, sobald eine bestimmte Rasterzeile auf dem Bildschirm gerendert wird.
Im Allgemeinen laden 16-Bit-Konsolen Grafikkacheln nicht auf die gleiche Weise wie 8-Bit-Konsolen. 8-Bit-Konsolen laden Sprite- und Hintergrundkacheln separat und in großen Datenblöcken, um den Verbrauch von Rechenleistung zu vermeiden, während 16-Bit-Konsolen über die nötige Rechenleistung für mehr Flexibilität verfügen. Sie können einzelne Kacheln dynamisch laden und austauschen, sodass Sie nur die Grafiken laden können, die Sie benötigen, und zwar genau dann, wenn Sie sie benötigen. Dadurch kann innerhalb eines einzelnen Levels oder Bildschirms eines Spiels eine größere Bandbreite an Grafiken verwendet werden.
Ein weiteres Alleinstellungsmerkmal des Genesis/Mega Drive ist, dass während des Spiels nicht nur Grafikkachel- und Palettendaten in den VRAM der Konsole geladen werden. Das kann die Gestaltung von Grafiken für die Konsole knifflig machen, da die Anzahl der Grafikkacheln, die zu einem bestimmten Zeitpunkt in den Speicher geladen werden können, je nachdem variiert, was sonst noch im Spiel passiert. Im Allgemeinen bieten die meisten Spiele genügend Speicherplatz für ca. 1000 Spielsteine, und wenn es ein dynamisches Element gibt, können die Spielsteine jederzeit beliebig ausgetauscht werden.

Obwohl eine größere Auswahl an verfügbaren Tiles gleichzeitig in den VRAM geladen werden kann, wird diese zusätzliche Freiheit meist den Sprites vorbehalten, um abwechslungsreichere Animationen und mehr Arten von Sprites gleichzeitig auf dem Bildschirm zu ermöglichen. Das bedeutet, dass die grundlegende Designphilosophie, sich wiederholende Kachelsegmente zu verwenden, in der 16-Bit-Kunst immer noch häufig Anwendung findet, damit der Hintergrund nicht zu viel des verfügbaren Platzes einnimmt. Die Auflösungen von NES, Genesis und SNES sind alle ziemlich ähnlich, daher sind 16x16-Segmente oft der Ausgangspunkt für solche Designs.

Das Genesis/Mega-Laufwerk ermöglicht es, zwei Hintergrundebenen gleichzeitig auf dem Bildschirm aktiv zu haben. Dies bedeutet, dass mehrschichtige Elemente leichter für die Gestaltung von Hintergründen zur Verfügung stehen. Allerdings handelt es sich immer noch nur um zwei Ebenen, sodass Künstler und Entwickler möglicherweise auf Rasterlinientricks zurückgreifen müssen, um eine größere Tiefe in einer Szene zu erzeugen. Zum Glück können all diese Elemente auf einer zweiten Ebene platziert werden, sodass Designer Vordergrundobjekte vor dem Hintergrund anordnen können, ohne die Illusion zu zerstören.
Durch die zweite Ebene wird auch die Verwendung von Sprite-Prioritätstricks zur Erstellung von Vordergrundobjekten überflüssig. Anstatt die Sprite-Prioritäten ständig ändern zu müssen, können Sie jetzt einfach die zweite Hintergrundebene so einstellen, dass sie vor dem Spieler angezeigt wird. Bei komplexeren Ebenenstrukturen ist jedoch möglicherweise weiterhin eine schnelle Anpassung der Sprite-Prioritäten erforderlich. Das zweite Hintergrundfenster verfügt außerdem über ein Unterfenster, das für Head-up-Displays (HUDs) verwendet werden kann. Der Unterbereich wird fixiert und kann nicht gescrollt werden.

Bei der Arbeit mit Sprites hat man mehr Freiheiten beim Übergang zu 16-Bit. Mit dem Genesis/Mega Drive können Sie 80 Sprites gleichzeitig auf dem Bildschirm anzeigen lassen und etwa 20 davon in einer einzigen horizontalen Zeile, bevor das Rendern neuer Sprites aufhört. Darüber hinaus werden Sprites nicht mehr als einzelne 8x8-Kacheln gezählt. Genesis ist in der Lage, einzelne Sprites aus mehreren Kacheln zu erzeugen. Diese können so klein wie eine einzelne Fliese oder so groß wie 4x4 Fliesen sein. Alles, was darüber hinausgeht, würde immer noch die Erstellung aus mehreren Sprites erfordern.

Eines der prägenden Merkmale von Grafiken aus der 16-Bit-Ära ist die Verwendung von Dithering. Die Spiele wurden damals auf Röhrenmonitoren dargestellt, bei denen die Pixel auf dem Bildschirm dazu neigten, ineinander zu verlaufen. Künstler machten sich diese Tatsache zunutze, indem sie Dithering-Muster in ihren Kunstwerken verwendeten. Wenn also ein Pixel in einem sich wiederholenden Muster in den anderen überging, entstand die Illusion, dass mehr Farben zur Verfügung stünden, als tatsächlich vorhanden waren. Bis heute wird Dithering in der Pixelgrafik trotz verbesserter Bildschirme häufig eingesetzt, um eine präzise Ästhetik zu gewährleisten.

Von den beiden wichtigsten 16-Bit-Konsolen bietet der Genesis/Mega Drive einen wesentlich höheren Farbkontrast. Dies sollten Sie auch bei der Auswahl Ihrer Unterpaletten berücksichtigen. Etwas mit gedämpfteren und matteren Farbtönen zu erstellen, wird bei der tatsächlichen Bildwiedergabe auf der Hardware nicht ganz so aussehen, wie man es erwarten würde. Kunstwerke sollten im Allgemeinen mit einer kontrastreichen Farbpalette geschaffen werden, damit das Endergebnis der ursprünglichen Vision des Künstlers entspricht.
Bei Super NES-Projekten arbeiten wir immer noch mit 8x8 Pixel großen Kacheln/Raster, daher ist die Arbeit mit wiederholbaren Kacheln äußerst nützlich. Im Allgemeinen handelt es sich dabei um ein Vielfaches von acht.
Der erste grundlegende Unterschied zwischen Genesis/Mega Drive und SNES betrifft die Farbpalette. Ähnlich wie beim Mega Drive gibt es beim SNES keine fest vorgegebene Farbpalette, sodass man die Farben selbst wählen kann.
Das Tückische am SNES ist, dass es mit 5 Bit pro Pixel (BPP) Farben arbeitet, die heutzutage nicht mehr sehr verbreitet sind. Sie können dies beheben, indem Sie mit Gimp eine Grafik erstellen und diese dann einfach in 32 RGB Farbtöne posterisieren, was 5 BPP-Farben ergibt, selbst wenn Sie das Bild nicht als solches gespeichert haben. Dadurch werden die Farben Ihres Bildes auf der Konsole präzise angezeigt.

Diese Option finden Sie in Gimp unter Farben > Posterisieren… Es erscheint ein Popup-Fenster, in dem Sie die Posterisierungsstufen auf 32 einstellen können, um 5 BPP-kompatible Farben zu erzeugen.

Der nächste große Unterschied zwischen den beiden Systemen betrifft die Bildschirmauflösung. Da SNES der Nachfolger von NES ist, verfügen die beiden Systeme über eine ähnliche Bildschirmauflösung. Die interne Auflösung des SNES beträgt 256x224. Dadurch können alle gerenderten Bilder innerhalb der sicheren Bereiche der meisten CRT-Fernseher angezeigt werden, sodass kein Teil des Bildes abgeschnitten wird. Diese Auflösung ändert sich nie, daher ist dies die Bildgröße, die ein Künstler als Referenz verwenden muss.

Dieser Abschnitt bietet einen kurzen Überblick über die Funktionen der verschiedenen Bildschirmmodi.

Der bedeutendste Unterschied zwischen den Systemen besteht darin, dass das SNES Hintergrundgrafiken in sieben verschiedenen Bildschirmmodi darstellen kann. Das SNES ist in der Lage, in bestimmten Bildschirmmodi insgesamt 256 Farben gleichzeitig in einer einzigen Unterpalette auf dem Bildschirm darzustellen. Hier sind einige der beliebtesten Bildschirmmodi:
- Modus 1: Dies ist einer der am häufigsten verwendeten Bildschirmmodi für das SNES. Es bietet die beste durchschnittliche Leistungsfähigkeit der Konsole. Im Modus 1 können Sie drei Hintergrundebenen verwenden, von denen zwei über eine eigene 16-Farben-Unterpalette verfügen, während die letzte Ebene eine 4-Farben-Unterpalette besitzt.
- Modus 3: Dieser Modus wird im Allgemeinen für größere statische Bilder wie Titelbildschirme und Story-Bildschirme verwendet. Es verfügt über zwei Hintergrundebenen. Die erste Variante nutzt eine vollständige 256-Farben-Teilpalette, die zweite hingegen eine 16-Farben-Teilpalette.
- Modus 7: Dies war eines der Hauptmerkmale des SNES. Der Modus 7, der in den meisten Werbematerialien für die Konsole hervorgehoben wurde, war der erste, mit dem eine Heimkonsole Transformationen in Echtzeit auf ein Bild anwenden konnte, wodurch Skalierung, Drehung, Streckung und Verzerrung in der Hintergrundebene möglich waren. Damit wurden die Pseudo-3D-Effekte erzeugt, die in vielen Renn- und Flugspielen für SNES zu sehen waren.
Die einzelne Hintergrundebene im Modus 7 wird ganz anders behandelt als in allen anderen Bildschirmmodi, damit diese Funktionen funktionieren können. Erstens steht nur eine einzige 256-farbige Hintergrundebene zur Verfügung, was bedeutet, dass alle Sprites ihre Farben mit der Unterpalette der Hintergrundebene teilen müssen. Anstatt mit der normalen Bildschirmgröße des SNES zu arbeiten, hat die Hintergrundebene im Modus 7 eine Größe von 1024x1024 Pixeln. Anschließend wird es so dimensioniert und angepasst, dass es den Wünschen des Designers entspricht.

Nach der Komplexität der Hintergrundbildschirmmodi sind die Regeln für Sprites vergleichsweise einfach. Das SNES verfügt über mehrere verschiedene Sprite-Modi, ähnlich wie das Mega Drive, jedoch mit der starken Einschränkung, dass man für das gesamte Spiel nur zwei verschiedene Sprite-Modi verwenden kann.
Sprites können 8x8, 16x16, 32x32 oder 64x64 Pixel groß sein. Darüber hinaus müssen die Designer aus einer vorgegebenen Liste von Sprite-Größenkombinationen auswählen. Spiele auf dem SNES können folgende Kombinationen enthalten:
- 8x8, 16x16
- 8x8, 32x32
- 8x8, 64x64
- 16x16, 32x32
- 16x16, 64x64
- 32x32, 64x64
Diese Größenangaben sind nach der Auswahl „unveränderlich“, und alle Sprites im Spiel müssen ihnen entsprechen. Das SNES kann 32 Sprites gleichzeitig auf einer einzigen horizontalen Rasterzeile darstellen, hat aber eine beträchtliche Beschränkung von 128 Sprites, die gleichzeitig auf dem Bildschirm angezeigt werden können. Alles darüber hinaus wird nicht auf dem Bildschirm dargestellt.

Sprites stehen acht 16-Farben-Unterpaletten zur Verfügung. Ähnlich wie bei allen Retro-Konsolen ist die erste Farbe jeder Unterpalette eine gemeinsame Farbe, die für Transparenz verwendet wird. Die im Vergleich zu den anderen behandelten Konsolen deutlich größere Anzahl an Unterpaletten bietet Ihnen mehr Freiheit bei der Farbauswahl für Sprites. Sie müssen lediglich beachten, dass es eine feste Grenze von 256 Farben gibt.
Wir hoffen, Ihnen hat dieser Beitrag darüber gefallen, wie man mit 2D Pixel Perfect in der neuesten Version von Unity 8- und 16-Bit-Retro-Spiele erstellt.
Wir sind mit 2D Pixel Perfect noch nicht fertig, da die Funktion in Unity 2019.3 für die Produktion verifiziert wird und außerdem besser mit Cinemachine 2D kompatibel sein wird.
Berichtet uns, wie euer eigenes 2D Pixel Perfect -Projekt läuft, und vergesst nicht, das 2D Forum zu besuchen, um mit der Unity Community und dem 2D -Entwicklungsteam in Kontakt zu treten.
