5 Stimmen

Wie funktionieren die Sprites?

Wie funktionieren die Sprites?

Ich habe Sprites von Old-School-Spielen wie Super Mario Brothers gesehen und mich gefragt, wie sie animiert werden, um ein Spiel zu machen.

Sie werden immer als eine große Bildkarte dargestellt, wie werden sie also verwendet?

Gibt es für Mario (als Beispiel) vorberechnete Bildkoordinaten, die Mario umreißen und zwischen verschiedenen Mario-Sprites ausgetauscht werden, um eine Animation zu erzeugen?

Oder werden die Sprites während der Spielinitialisierung mit Hilfe von vorberechneten Bildkoordinaten "geschnitten" und irgendwo im Speicher abgelegt?

Offensichtlich weiß ich nichts über die Entwicklung von Spielen.

4voto

JAB Punkte 19937

http://en.wikipedia.org/wiki/Sprite_(computer_graphics)

Der Artikel scheint zwar nicht auf Ihre spezielle Frage einzugehen, aber jetzt, wo ich ihn gründlich durchgelesen habe...

Wie auch immer, es kann wahrscheinlich getan werden, entweder Weg, aber wenn ich jemals hatte, um ein Sprite-Handler zu implementieren, würde ich wahrscheinlich mit der Splitting-Methode gehen (obwohl wie in einer anderen Antwort, die Koordinaten-Referenz-Methode wäre wahrscheinlich einfacher, für eine einfache Animation zu implementieren).

4voto

supercat Punkte 72939

Auf vielen älteren Videospiel- und Computersystemen waren Sprites eine Hardwarefunktion, die kleine Bilder auf einem größeren Bildschirm überlagerte. Obwohl der Atari 7800 eine Sprite-Implementierung hatte, die der im Wikipedia-Artikel beschriebenen ähnlich war, war er in dieser Hinsicht praktisch einzigartig. Die meisten Sprite-Systeme verwendeten für jedes Sprite, das sie auf einer Scan-Zeile anzeigen konnten, eine eigene Gruppe von Schaltkreisen, einschließlich eines horizontalen Positions-Triggers und eines Schieberegisters oder anderer Mittel, um Daten sequentiell zu senden. Wenn die Rasterabtastung die entsprechende Stelle in einer Zeile erreichte, begannen die Schaltkreise mit dem Schieben der Formdaten für das Sprite.

Einige Geräte (wie der Odyssey2) enthielten im Videochip Hardware, um die Formen aller Sprites auf dem Bildschirm zu speichern. Der Atari 2600 verfügte nur über 8 Bits an Formdaten für jedes Sprite und erforderte, dass der Prozessor die Daten in Echtzeit lud, wenn sie sich ändern sollten. Das häufigste Muster war jedoch, dass der Videochip die Sprite-Daten automatisch aus dem Speicher taktete. In der Regel erwartete die Hardware, dass die Daten in einem bestimmten Format oder, in einigen Fällen, in einem von zwei Formaten vorlagen.

Auf einigen Rechnern entspricht die Anzahl der Sprites, die gleichzeitig auf einem Frame ohne CPU-Eingriff angezeigt werden können, der Anzahl der Sprite-Schaltungen. Andere Maschinen haben eine geringe Anzahl von Sprite-Schaltkreisen, können aber mehr Sprites anzeigen; sobald ein Schaltkreis die Anzeige eines Sprites beendet hat, lädt er die Parameter für das nächste Sprite aus dem Speicher. Das NES entspricht diesem Muster.

2voto

David Sykes Punkte 45759

Sie können beides tun, es hängt vom Entwickler ab. Wenn sie als ein einziges großes Bild gespeichert werden, dann berechnen Sie die Koordinaten des gewünschten Bildes und übertragen es auf den Bildschirm bzw. bei doppelt gepufferten Bildschirmen auf die Rückseite.

Sie können das große Bild auch in einzelne Bilder zerlegen, was zwar etwas mehr Speicherplatz benötigt, dafür aber bei der Ausführung etwas Zeit spart

Es können mehrere Sprites in einem einzigen Bild vorhanden sein. Vielleicht in einer einzigen Reihe oder in einem Raster. Sie können sogar als Raster gezeichnet und einfach in einem einzigen Block ausgeschnitten worden sein.

2voto

Franci Penov Punkte 73239

Die Sprites in der Image Map sind normalerweise gleich groß und ihre Position entspricht der Bildnummer in der Animation. Auf diese Weise erfordert die Erstellung der Animation in der Regel nicht mehr als das Erhöhen eines Offsets und das Beschneiden der Bitmap, um das nächste Bild anzuzeigen.

2voto

Morrowless Punkte 6736

Das große Bild in der ersten Technik wird als atlas und ist in der Regel sehr viel effizienter als die Erstellung einer Entität für jeden Sprite-Frame.

Die von Franci erwähnte Offset-Technik funktioniert in den meisten Fällen gut, aber für speicherkritische Situationen ist es besser, Texturpackprogramme wie Zwoptex zu verwenden. Die meisten dieser Programme berechnen die Koordinaten automatisch für Sie. Sie analysieren die Metadatei beim Start und speichern die Koordinaten im Cache.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X