In unserem
ersten Retro-Game-
Tutorial haben wir gezeigt, wie man das 2D Pixel Perfect-Tool anpasst und wie Grafiken im Zeitalter von 8-Bit-Spielen erstellt wurden. In diesem Beitrag werden wir in die 16-Bit-Ära versetzt. In Mega Cat Studios lernen wir, wie Sie mit Unity-Optionen, Grafikstrukturen und Farbpaletten authentische Grafiken für Spiele im Stil von Sega Genesis (Mega Drive) und Super NES erstellen.
Erstellen Sie authentische Grafiken im Genesis-Stil
In diesem Abschnitt werden wir den Workflow zum Erstellen von Grafiken betrachten, die das Bild verschiedener Konsolen nachahmen. Es gibt weniger Einschränkungen als bei einem 8-Bit-Projekt und mehr Freiheit beim Arbeiten mit Farben, aber Genesis hat dennoch Grenzen. Wir glauben, dass es auch nützlich sein wird, zu erklären, wie die Konsolenhardware funktioniert, damit Sie diese Einschränkungen in Ihrem eigenen Retro-Projekt anwenden können.
Paletten und Unterpaletten
Der Übergang von 8-Bit- zu 16-Bit-Konsolen aufgrund der Komplexität der Geräte bot Entwicklern mehr Möglichkeiten. Die Grundsätze für die Erstellung hochwertiger NES-Grafiken gelten jedoch weiterhin. Alle Grafiken werden weiterhin in Kacheln mit einer Größe von beispielsweise 8 × 8 gespeichert und daraus zu großen Bildern zusammengefasst - Sprites und Hintergrundelementen. Künstler sind immer noch auf Unterpaletten mit einer gemeinsamen transparenten Farbe beschränkt, aber 16 Bit bieten mehr Flexibilität beim Arbeiten mit Paletten. Sie werden höchstwahrscheinlich erfreut sein, dass die 16-Bit-Konsolen keine genau definierte Farbpalette hatten, dh die Anzahl der verfügbaren Farben hat sich im Vergleich zu NES stark erweitert.
Darüber hinaus bietet Genesis Unterpaletten mit 15 Farben sowie der Gesamtfarbe für die Transparenz von Sprites und Ebenen. Einer der Nachteile beim Erstellen von Grafiken für Genesis ist jedoch die Arbeit mit Unterpaletten. Unterpaletten können Sprites oder Hintergrundkacheln frei zugewiesen werden. Mit Genesis können Sie jedoch nicht mehr als vier Unterpaletten gleichzeitig verwenden. Daher müssen Künstler darüber nachdenken, welche Farben in der Unterpalette verwendet werden sollen, damit ihre Anzahl für Sprites und Hintergründe maximal ist. Die Genesis-Unterpalette enthält normalerweise Farben, die sowohl für den Hintergrund als auch für Sprites verwendet werden.
Die Szene aus dem Spiel für Genesis ist oben und die verwendeten Unterpaletten unten dargestellt.Um Grafiken für jede 16-Bit-Plattform zu erstellen, müssen Sie mit einer indizierten Palette arbeiten. Dazu können Sie den Gimp-Editor verwenden, eine kostenlose Alternative zu Photoshop, mit der Sie indizierte Paletten bearbeiten können.
Um eine indizierte Palette in Gimp zu erstellen, gehen Sie zu
Bild> Modus> Indiziert ...
Das Fenster Indizierte Farbkonvertierung wird geöffnet.
Stellen Sie für Maximale Anzahl von Farben den Wert auf
15 ein . Sie können automatische Dithering-Muster verwenden, diese sehen jedoch normalerweise besser aus, wenn Sie sie manuell erstellen.
Bildfarben werden jetzt indiziert. Diese Informationen werden automatisch mit dem Bild gespeichert, damit der Farbindex verwendet werden kann. Wenn Sie die Reihenfolge der Farben im Index ändern müssen, klicken Sie einfach mit der rechten
Maustaste auf die Farbkarte und wählen Sie
Farbkarte neu anordnen ...Es öffnet sich ein Fenster, in dem Sie Farben ziehen und ablegen und ihre Reihenfolge ändern können.
Ein beliebter Trick zum Erhöhen der Farbtiefe besteht darin, die Palette in einer bestimmten Scanlinie zu steuern, ähnlich wie das Parallaxen-Scrollen auf NES implementiert ist. Die Genesis-Konsole kann die Auswahl der Grafik-Unterpalette in der angegebenen Scanzeile ändern. Dieser Trick wird oft verwendet, um die Illusion zu erzeugen, dass sich ein Teil des Levels unter Wasser befindet. Unterwasserfarben werden einer separaten Unterpalette hinzugefügt, und diese Unterpalette wird geladen, wenn die angegebene Scanlinie auf dem Bildschirm gerendert wird.
Aufbewahrung in Kacheln und Laden in diese Konsole
Im Allgemeinen haben 16-Bit-Konsolen Grafikkacheln anders geladen als 8-Bit-Konsolen. 8-Bit-Konsolen luden Sprite- und Hintergrundkacheln mit großen Datenmengen, um Rechenleistung zu sparen, während die Ressourcen von 16-Bit-Konsolen für mehr Flexibilität sorgten. Sie konnten separate Kacheln im laufenden Betrieb laden und ersetzen, wodurch es möglich war, nur die benötigten Grafiken zu laden. Daher können Sie auf einem einzelnen Bildschirm oder einer einzelnen Ebene eine größere Auswahl an Grafiken verwenden.
Ein weiterer einzigartiger Aspekt von Genesis / Mega Drive ist, dass die Grafik- und Palettendaten nicht die einzigen Daten sind, die während des Spiels in die VRAM-Konsole geladen werden. Dies machte es schwierig, ein Grafikdesign für die Konsole zu erstellen, da die Anzahl der Grafikkacheln, die zu einem bestimmten Zeitpunkt in den Speicher geladen werden konnten, davon abhing, was sonst noch im Spiel geschah. Im Allgemeinen hatten die meisten Spiele genug Platz, um etwa 1000 Kacheln zu laden, und mit dynamischen Elementen konnten Kacheln immer frei heruntergeladen und in den Speicher geladen werden.
In der oben gezeigten Szene in den Speicher geladene Kacheln. Ein großer leerer Raum in der Mitte und Artefakte darunter ist der Platz, der Feinden und anderen Elementen des Spiels im Speicher zugewiesen wird.Trotz der Tatsache, dass in VRAM eine größere Vielfalt von Kacheln gleichzeitig geladen werden konnte, war dieser zusätzliche Platz meistens für Sprites reserviert. Dies lieferte eine komplexere Animation und ermöglichte es, mehr Sprites gleichzeitig auf dem Bildschirm anzuzeigen. Das heißt, die grundlegende Designphilosophie mit sich wiederholenden Kachelsegmenten wurde in 16-Bit-Grafiken immer noch aktiv verwendet, wodurch der Hintergrund nicht viel verfügbaren Platz beanspruchte. Die Berechtigungen von NES, Genesis und SNES sind nahezu gleich, sodass 16 × 16 Segmente normalerweise der Ausgangspunkt für diese Arten von Designs waren.
Hier verwendete der Künstler ein 32 × 32-Blockmuster, um den Hauptteil des Bodens zu erstellen, der der Hintergrund ist.Arbeiten Sie mit Hintergrundebenen
Mit Genesis / Mega Drive können Sie zwei Hintergrundebenen gleichzeitig auf dem Bildschirm anzeigen. Dies bedeutet, dass Überlagerungselemente für die Erstellung von Designhintergründen bequemer sind. Trotzdem gibt es nur zwei Ebenen. Um der Szene mehr Tiefe zu verleihen, könnten der Künstler und der Entwickler Tricks mit Scanlinien anwenden. Glücklicherweise konnten Designer, da all dies auf die zweite Ebene übertragen werden konnte, Vordergrundobjekte vor den Hintergrund stellen, ohne die Illusionen zu zerstören.
Dank der zweiten Ebene mussten Entwickler außerdem keine Tricks mit Sprite-Prioritäten mehr anwenden. Anstatt die Prioritäten von Sprites im laufenden Betrieb ständig zu ändern, war es jetzt möglich, eine zweite Ebene des vor dem Player angezeigten Hintergrunds festzulegen. Für eine komplexere Überlagerung kann es jedoch immer noch erforderlich sein, die Sprite-Prioritäten schnell zu bearbeiten. Die zweite Hintergrundebene hat auch einen Bereich, der für die Schnittstelle verwendet werden kann. Dieser Bereich ist verriegelt und wird niemals gescrollt.
Aufgrund der Ansicht von oben nach unten für den Baum mussten spezielle Kacheln erstellt werden, um die Reihenfolge der Sprite-Ebenen zu ändern.Sprite-Einschränkungen
Beim Umschalten auf 16 Bit erhöht sich die Freiheit beim Arbeiten mit Sprites erheblich. Mit Genesis / Mega Drive können Sie bis zu 80 Sprites und bis zu 20 Sprites auf einer horizontalen Linie gleichzeitig auf dem Bildschirm anzeigen. Alle nachfolgenden Sprites werden nicht gerendert. Außerdem werden Sprites nicht mehr als separate 8 × 8-Kacheln betrachtet. Genesis ist in der Lage, einzelne Sprites zu generieren, die aus mehreren Kacheln bestehen. Sie können von einer Kachel bis zu 4x4 Kacheln reichen. Größere Bilder müssen aus mehreren Sprites bestehen.
Die Grafiken des Endgegners verwenden eine große Anzahl animierter Hintergrundelemente, Ebenen und viele Sprites. All dies wäre auf einer 8-Bit-Plattform unmöglich.Dithering-Muster und Kontrast
Eines der charakteristischen Merkmale der Grafik der 16-Bit-Ära ist die Verwendung von Dithering. In jenen Tagen wurden Spiele auf CRT-Fernsehern gespielt, bei denen Bildschirmpixel normalerweise miteinander verschmolzen. Künstler nutzten diese Funktion, indem sie Dithering-Muster in ihre Grafiken einfügten: Wenn ein Pixel in einem sich wiederholenden Muster mit einem anderen verschmolz, entstand die Illusion von mehr Farben, als die Konsole zuließ. Um die Ästhetik des Originals zu vermitteln, wird Dithering trotz besserer Darstellungen in der Pixelkunst immer noch aktiv eingesetzt.
Dithering wurde häufig auf 16-Bit-Konsolen verwendet. Auf einem CRT-Bildschirm wurde das Pixelmuster gemischt, wodurch neue Farben oder Transparenzeffekte erzeugt wurden, wo dies nicht möglich war.Im Vergleich zu SNES zeigt Genesis / Mega Drive Farben mit höherem Kontrast an. Dies muss auch bei der Auswahl von Unterpaletten berücksichtigt werden. Wenn Sie ein Spiel mit gedämpften und stumpfen Farben erstellen, können sich die Paletten beim Rendern auf der Originalhardware unterscheiden. Im Allgemeinen sollten Grafiken in einer kontrastreichen Farbpalette erstellt werden, damit das Endergebnis der ursprünglichen Vision des Künstlers entspricht.
Erstellen Sie authentische Grafiken im SNES-Stil
Super-NES-Spiele funktionierten immer noch mit 8 × 8-Pixel-Gittern / Kacheln. Daher ist es äußerst nützlich, sich wiederholende Kacheln zu verwenden. Im Allgemeinen sollten ihre Größen ein Vielfaches von acht sein.
Farbpalette
Der erste grundlegende Unterschied zwischen Genesis / Mega Drive und SNES betrifft die Farbpalette. Wie bei Mega Drive verfügt auch bei der SNES-Konsole keine Farbpalette in der Hardware, sodass Sie Ihre eigenen Farben auswählen können.
Die Komplexität von SNES besteht darin, dass Farben mit einer Tiefe von 5 Bit pro Pixel (Bit pro Pixel, BPP) verwendet wurden, die heutzutage selten zu sehen sind. Sie können sie mit Gimp implementieren und das Bild dann einfach in 32 RGB-Schattierungen posterisieren, was Farben mit 5 BPP entspricht. Dadurch werden die Farben des Bildes auf der Konsole genau angezeigt.
Diese Option in Gimp befindet sich im Menüpunkt
Farben> Posterisieren ... Ein Popup-Fenster wird angezeigt, in dem Sie die Posterize-Ebenen auf 32 einstellen können, um Farben zu erstellen, die mit 5 BPP kompatibel sind.
Bildschirmauflösung
Ein weiterer wesentlicher Unterschied zwischen den beiden Systemen betrifft die Bildschirmauflösung. Da SNES ein Nachkomme von NES war, hatten beide Konsolen ähnliche Bildschirmauflösungen. Die interne Auflösung von SNES beträgt 256 × 224. Sie können Bilder in sicheren Bereichen der meisten CRT-Fernseher rendern, ohne einen Teil des Bildes zu beschneiden. Diese Auflösung ändert sich nie, daher entspricht sie der Größe des Bildes, und der Künstler sollte sie verwenden.
Dieses Bild belegt die in den meisten Bildschirmmodi verwendete Vollbild-SNES-Auflösung.Konsolenbildschirmmodi
In diesem Abschnitt werden wir kurz auf die verschiedenen Bildschirmmodi eingehen.
Der größte Unterschied zwischen den Konsolen besteht darin, dass SNES Hintergrundgrafiken in sieben verschiedenen Bildschirmmodi rendern kann. In einigen Bildschirmmodi kann SNES gleichzeitig 256 Farben aus einer Unterpalette auf dem Bildschirm rendern. Hier sind die beliebtesten Bildschirmmodi:
- Modus 1: Einer der häufigsten Bildschirmmodi für SNES. Dies ist der durchschnittlichste Modus, der die Funktionen der Konsole demonstriert. In Modus 1 können Sie mit drei Hintergrundebenen arbeiten, von denen zwei über eigene 16-Farben-Unterpaletten verfügen. Die letzte Ebene verfügt über eine 4-Farben-Unterpalette.
- Modus 3: Dieser Modus wird häufig für große Standbilder wie Begrüßungsbildschirme oder Szenen verwendet. Es hat zwei Hintergrundebenen. Die erste verwendet eine vollständige 256-Farben-Unterpalette, die zweite eine 16-Farben-Unterpalette.
- Modus 7: Dies ist eine der Hauptfunktionen von SNES. Dieser Modus wurde in den meisten Werbematerialien der Konsole angezeigt. Dank Mode 7 konnten Heimkonsolen erstmals Bildtransformationen in Echtzeit durchführen: Skalieren, Drehen, Dehnen und Kippen in der Hintergrundebene. Es wurde verwendet, um Pseudo-3D-Effekte zu erstellen, die in vielen Rennspielen und Flugsimulatoren für SNES zu sehen sind.
Um sicherzustellen, dass diese Funktionen funktionieren, wird die einzige Hintergrundebene in Modus 7 ganz anders verarbeitet als in anderen Bildschirmmodi. Erstens gibt es nur eine 256-Farben-Farbebene, dh alle Sprites müssen Farben aus einer Unterpalette dieser Hintergrundebene haben. Zweitens betrug die Hintergrundebene im Modus 7 anstelle der üblichen SNES-Bildschirmgröße 1024 × 1024 Pixel. Es skaliert und passt sich an, wie es der Designer benötigt.
Dieses Büro verwendet Modus 1 mit einer Unterpalette (die anderen beiden werden für die Benutzeroberfläche verwendet). Der Bildschirm "Danke fürs Spielen" verwendet Modus 3, mit dem der Künstler eine 256-Farben-Palette anwenden kann.
Sprite-Größen
Im Vergleich zur Komplexität der Hintergrundbildschirmmodi sind die Regeln für das Arbeiten mit Sprites relativ einfach. SNES hat mehrere verschiedene Sprite-Modi, fast wie Mega Drive, aber mit einer strengen Einschränkung: Die Konsole kann nur zwei verschiedene Sprite-Modi im Spiel verwenden
Sprites können Größen von 8 × 8, 16 × 16, 32 × 32 oder 64 × 64 haben. Aber das ist noch nicht alles - Designer mussten Kombinationen aus einer vorgefertigten Liste von Sprite-Größen auswählen. Die folgenden Kombinationen können in SNES-Spielen verwendet werden:
- 8 × 8, 16 × 16
- 8 × 8, 32 × 32
- 8 × 8, 64 × 64
- 16 × 16, 32 × 32
- 16 × 16, 64 × 64
- 32 × 32, 64 × 64
Diese Größen werden "ein für allemal" ausgewählt und alle Sprites im Spiel müssen mit ihnen übereinstimmen. SNES kann 32 Sprites auf einer horizontalen Scanlinie und nicht mehr als 128 Sprites gleichzeitig auf dem Bildschirm rendern. Alle anderen werden nicht gerendert.
Fork Parkers Crunch-Out verwendet eine Kombination aus 32 × 32 und 16 × 16 für alle Sprites im Spiel.Sprites können mit acht 16-Farben-Unterpaletten arbeiten. Wie bei allen Retro-Konsolen ist die erste Farbe einer Unterpalette die Gesamtfarbe, die für die Transparenz verwendet wird. Eine große Anzahl von Unterpaletten im Vergleich zu anderen Konsolen gibt uns mehr Freiheit bei der Auswahl der Farben für Sprites. Sie müssen sich nur daran erinnern, dass es eine strenge Grenze von 256 Farben gibt.
Verwenden von 2D Pixel Perfect zum Erstellen von Retro-Spielen
Im
vorherigen Retro-Tutorial haben wir die 2D Pixel Perfect-Optionen behandelt und 8-Bit-Grafiken neu erstellt.
Ab Unity 2019.2 ist das 2D Pixel Perfect-Paket Teil des 2D Renderer, der wiederum Teil des Lightweight Render Pipeline (LWRP) -Pakets ist. Wenn Sie kein LWRP verwenden, kann 2D Pixel Perfect auch als separates Paket verwendet werden. In diesem Tutorial zeigen wir, wie Sie ein Projekt in LWRP einrichten.
Vorbereiten eines neuen Projekts in Unity 2019.2 und LWRP
- Starten Sie den Unity Hub, klicken Sie auf Neu, wählen Sie 2D aus und geben Sie den Namen Ihres Projekts an.
- Um ein 2D Pixel Perfect-Paket zu importieren, klicken Sie in der Symbolleiste auf das Menü Fenster und wählen Sie Paketmanager. Wählen Sie im angezeigten Fenster das Lightweight RP- Paket aus und stellen Sie sicher, dass die Version 6.9.0 oder höher ist.
- Anschließend müssen Sie den 2D-Renderer im Editor konfigurieren und ein neues Pipeline-Asset erstellen. Klicken Sie im Projektfenster mit der rechten Maustaste auf das Fenster Assets und wählen Sie Erstellen> Rendern> Lightweight Render Pipeline> Pipeline Asset .
- Erstellen Sie im Fenster "Assets" des Projektfensters einen neuen 2D-Renderer, indem Sie mit der rechten Maustaste klicken und " Erstellen"> "Rendern"> "Leichte Render-Pipeline"> "2D-Renderer" wählen.
- Wählen Sie das erstellte Pipeline-Asset aus. Wählen Sie Allgemein und wechseln Sie dann den Renderertyp von Forward Renderer zu Custom .
- Weisen Sie den generierten 2D-Renderer als Wert des Datenfelds zu.
- Ändern Sie in den Grafikoptionen die Einstellungen für die Skript-Render-Pipeline, um das neue Pipeline-Asset zu verwenden, das Sie erstellt haben.
Damit ist die Einrichtung von 2D Renderer sowie 2D Pixel Perfect Camera abgeschlossen.
In Unity 2019.2 können zweidimensionale Sprites Sprite-Lit-Material enthalten, mit dem sie auf 2D-Lichtverhältnisse reagieren können. Wenn Ihr Projekt keine 2D-Beleuchtung hat, verwenden Sie Material, für das keine 2D-Beleuchtung erforderlich ist, damit die Sprites sichtbar sind, dh "Sprites-Standard".
Pixel Perfekte Tinktur für 16-Bit-Grafikstile
Sie müssen die Komponente Pixel Perfect Camera zur Hauptkamera hinzufügen. Wir empfehlen, dass Sie das Kontrollkästchen Im Bearbeitungsmodus ausführen aktivieren.
Die
Sega Genesis- Konsole hatte eine Auflösung von 320 × 224 Pixel (oder ein Raster von 40 × 28 Kacheln mit einer Größe von 8 × 8 Pixel). Dies gilt für die NTSC-Version.
Die
Super NES- Konsole hatte auch in der NTSC-Version eine Auflösung von 256 × 224 (30 × 28 Kacheln mit einer Größe von 8 × 8 Pixel).
Um beide Grafikstile zu erstellen, empfehlen wir die Verwendung einer Höhenauflösung von 224 Pixel und 8 PPU.
Mit dem Hilfesprite (oben zeigt ein 320 × 224-Vollbild von Sonic the Hedgehog für Sega Genesis) können Sie verstehen, wie ein Sprite mit 8 Pixeln pro Einheit (Pixel pro Einheit, PPU) mit derselben Auflösung und PPU im Szenenfenster platziert wird.
Wenn Sie sich daran erinnern möchten, was die einzelnen Optionen in der 2D Pixel Perfect Camera-Komponente bewirken, lesen Sie das
vorherige Tutorial zum Retro-Spiel .
Weiterentwicklung
Ich hoffe, Ihnen hat diese Reihe von Beiträgen zum Erstellen von 8- und 16-Bit-Retro-Spielen mit 2D Pixel Perfect in der neuesten Version von Unity gefallen.
Wir haben 2D Pixel Perfect noch nicht fertiggestellt, da dieses Paket in Unity 2019.3 für die Produktion bereit sein wird und außerdem mehr Kompatibilität mit Cinemachine 2D bietet.
Halten Sie uns mit 2D Pixel Perfect über Ihre Projekte auf dem Laufenden und vergessen Sie nicht, das
2D-Forum zu besuchen
, um mit Unity-Benutzern und Entwicklern von 2D-Funktionen zu sprechen.