Wikipedia · einfach zusammengefasst · Stand
Sprite (Computergrafik)
Sprite ist ein Begriff der Computergrafik und bezeichnet eine zweidimensionale Bitmap, die in eine größere Szene integriert ist – meist in einem …
Inhalt6 Abschnitte
Begriff und Bedeutung
Ein Sprite ist in der Computergrafik eine zweidimensionale Bitmap, die in eine größere Szene integriert wird, meist in einem 2D-Computerspiel. Im ursprünglichen, engeren Sinn ist es ein Grafikobjekt, das die Grafikhardware über das Hintergrundbild oder den übrigen Bildschirminhalt legt und selbstständig positioniert. Viele Grafikkarten stellen beispielsweise ein Hardware-Sprite für den Mauszeiger bereit.
Heute wird der Begriff weiter gefasst: Auch softwaremäßig erzeugte 2D-Objekte und teilweise transparente, flache Animationen in 3D-Szenen werden häufig Sprites genannt. Die ursprüngliche Hardwaretechnik hat an Bedeutung verloren, weil moderne Computer tausende spriteartige Objekte per Software darstellen und den Hintergrund schnell wiederherstellen können. Auch der dafür benötigte Speicherplatz spielt eine geringere Rolle.
Darstellung durch die Grafikhardware
Ein echtes Hardware-Sprite wird vom Grafikprozessor erst beim Aufbau des angezeigten Bildes an den festgelegten Koordinaten eingefügt. Der Inhalt des Grafikspeichers bleibt dabei unverändert. Anders als bei einem BOB oder MOB müssen die Grafikdaten also nicht bei jeder Bewegung neu in den Grafikspeicher kopiert werden. Das entlastet den Hauptprozessor, benötigt kaum Systemressourcen und vereinfacht die Programmierung.
Die Grafikdaten können über DMA-Speicherzugriffe bereitgestellt werden. DMA bedeutet, dass der Grafikprozessor direkt auf bestimmte Speicherbereiche zugreift. Beim C64 stehen die Steuerdaten, besonders die Bildschirmposition, unmittelbar in Registern der Grafikhardware; Breite und Höhe der Sprites sind festgelegt. Beim Amiga werden Steuer- und Grafikdaten per DMA aus dem Speicher übertragen, wobei die Sprite-Höhe im Gegensatz zum C64 nicht begrenzt ist.
Für eine Bewegung müssen nur die x- und y-Koordinaten geändert werden. Der Grafikprozessor setzt das Sprite beim nächsten Bildaufbau selbst an die neue Stelle. Eine Animation entsteht, indem die gespeicherten Grafikdaten durch das nächste Einzelbild ersetzt werden oder indem auf einen anderen Speicherbereich verwiesen wird.
Sprites sind grundsätzlich rechteckig. Unregelmäßige Umrisse entstehen durch transparente Randbereiche. Transparenz kann entweder durch eine festgelegte Farbe oder durch eine Maske erzeugt werden. Eine Maske gibt für jeden Bildpunkt an, ob er deckend oder transparent dargestellt wird.
Sprites in 2D- und 3D-Spielen
In den 1980er Jahren erweiterten Hardware-Sprites die Möglichkeiten von Computerspielen erheblich. Die damaligen Prozessoren waren zu langsam, um komplexe Spielgrafiken ständig auf dem Bildschirm zu verschieben. Heimcomputer wie der C64 und der Amiga nutzten deshalb besondere Grafikhardware. Sprites wurden teilweise durch Shapes ersetzt, etwa beim C16, oder durch Shapes beziehungsweise BOBs ergänzt, etwa beim C128 und Amiga.
Eine wichtige Funktion ist die Sprite-Sprite-Kollisionserkennung. Erkennt der Grafikprozessor beim Bildaufbau, dass sich zwei Sprites überlappen, meldet er dies der Software durch einen Interrupt, ein Flag oder ein Event. Das Spielprogramm muss die Überschneidung dann nicht selbst berechnen. Eine solche Kollisionserkennung ist in beinahe allen Grafikprozessoren vorhanden, die BOBs oder Sprites beherrschen.
Sprites werden oft zusammen mit Tiles eingesetzt. Tiles, auch Kachelgrafiken genannt, sind kleine, meist unbewegliche Grafikelemente, aus denen beispielsweise Wände und Plattformen einer Spielwelt zusammengesetzt werden. Wiederkehrende Muster müssen dadurch nur einmal gespeichert und anschließend nach einer Tilemap angeordnet werden. Sprites stellen dagegen typischerweise bewegliche Spielfiguren, Gegner oder Gegenstände dar.
In 3D-Spielen kann ein Sprite als flaches Bild auf einer besonderen Ebene in die Szene eingefügt werden. Diese Ebene bleibt immer senkrecht zur von der Kamera ausgehenden Achse, sodass das Bild dem Betrachter stets zugewandt ist. Es kann zur Simulation der Perspektive skaliert, zweidimensional gedreht, von anderen Objekten verdeckt oder vor ihnen angezeigt werden, ist aber nur aus demselben Winkel sichtbar. Dieses Verfahren heißt Billboarding.
Die Illusion wirkt besonders überzeugend, wenn das Bild bereits ein dreidimensionales Objekt zeigt, sich seine Animation ständig verändert, das Sprite nur kurz existiert oder das dargestellte Objekt aus vielen Blickwinkeln ähnlich aussieht. Typische Anwendungen sind Feuer, Rauch, kleine Gegenstände, Pflanzen, Blätter und besondere Symbole. Eine schnelle Änderung der Kameraposition kann sichtbar machen, dass das Objekt flach ist und sich weiterhin zur Kamera ausrichtet.
Software-Sprites und verwandte Objekte
Ein per Software über den Hintergrund gezeichnetes Objekt heißt streng genommen Shape, wird aber häufig als Software-Sprite bezeichnet. Ein BOB (Blitter Object) beziehungsweise MOB (Movable Object Block) wird mithilfe von Hardware-Routinen in den Grafikspeicher kopiert, jedoch nicht vollständig selbstständig von der Hardware verwaltet.
Software-Sprites haben mit echten Sprites vor allem zwei Eigenschaften gemeinsam: Sie sind bewegte Rastergrafiken und besitzen durch Masken oder transparente Bereiche meist nicht rechteckige Umrisse. Die geringe Prozessorbelastung und die automatische Kollisionserkennung echter Hardware-Sprites entfallen. Dafür bestehen keine festen Hardwaregrenzen für Anzahl und Größe; neue Grenzen ergeben sich allerdings aus der verfügbaren Rechenzeit.
Es gibt mehrere Darstellungsverfahren:
• Neben dem Bild kann eine binäre Maske gespeichert werden. Ein Pixel wird nur gezeichnet, wenn an der entsprechenden Stelle der Maske ein Bit gesetzt ist.
• Eine Maske kann zunächst ein „Loch“ aus gelöschten Bits im Hintergrund erzeugen. Anschließend werden die gesetzten Bits des Shapes hineinkopiert. Ohne das Loch würden sich gesetzte Bits von Hintergrund und Shape vermischen.
• Eine bestimmte Farbe kann als transparent festgelegt werden. Alle anderen Pixel ersetzen den Untergrund. Dadurch steht diese Farbe im Shape selbst nicht zur Verfügung, was bei Systemen mit höchstens 16 gleichzeitig verfügbaren Farben eine deutliche Einschränkung war. Der notwendige Code wurde aus Leistungsgründen am besten in Assembler programmiert; entsprechende Hardwareunterstützung für fortgeschrittene Bit-Blit-Operationen war bei frühen PCs selten.
• Im bei PCs der 1990er Jahre üblichen 256-Farben-Modus wurden Sprites oft komprimiert gespeichert. Dabei wechseln sich ein Zähler für transparente Punkte und die sichtbaren Bilddaten ab. Transparente Pixel können übersprungen werden, eine zusätzliche Maske ist unnötig, der Speicherbedarf sinkt und keine Farbe geht für Transparenz verloren.
Da ein Software-Sprite den Untergrund überschreibt, muss dieser wiederhergestellt werden. Dazu kann der vollständige Hintergrund oder nur der betroffene Ausschnitt gespeichert und später zurückkopiert werden. Der Hintergrund darf sich in dieser Zeit nicht verändern. Bei mehreren überlappenden Shapes müssen die Ausschnitte in umgekehrter Reihenfolge des Sicherns wiederhergestellt werden, sonst können sichtbare Artefakte entstehen.
Animation
Eine Spriteanimation besteht aus mehreren Einzelbildern, die wie bei einem Zeichentrickfilm schnell nacheinander angezeigt werden. So entsteht der Eindruck einer fließenden Bewegung. Bei menschlichen Spielfiguren ist dies beispielsweise nötig, damit sich beim Laufen nach links oder rechts die Beine sichtbar bewegen. Auch Gegner, Monster und andere Lebewesen werden auf diese Weise animiert.
Früher wurde für die Herstellung solcher Animationsbilder häufig Deluxe Paint auf dem Amiga verwendet; spätere Programme sind beispielsweise Cosmigo Pro Motion und Aseprite. Eine einfachere frühe Technik zeigt Atari Basketball aus den späten 1970er Jahren: Die Spielfigur bestand aus dem groben seitlichen Umriss einer stehenden Person. Beim Laufen wurde in regelmäßigen Abständen eine Linie als ausgestrecktes Bein an das Figurensprite kopiert.
Sprites in Benutzeroberflächen und Webseiten
Sprites werden außerhalb von Spielen für Schaltflächen, Symbole und weitere Elemente von Benutzeroberflächen verwendet. Programme können damit Aktionen verbinden, etwa eine Animation abspielen oder nach einem Klick die aktuelle Fensteransicht ändern. Sie eignen sich besonders für eigene Grafiken, die von der Programmierschnittstelle des Betriebssystems nicht unmittelbar unterstützt werden.
Im Webdesign bezeichnet ein CSS-Sprite eine Grafikdatei, die viele kleine Einzelgrafiken enthält. Der Browser lädt diese gemeinsame Datei mit einer einzigen Serveranfrage und kann sie zwischenspeichern. CSS-Eigenschaften bestimmen anschließend, welcher passend zugeschnittene Bildausschnitt an einer bestimmten Stelle der Webseite erscheint. Das verringert die Zahl der Serveranfragen und damit die Gesamtladezeit. Außerdem verhindert es Verzögerungen durch späteres Nachladen, beispielsweise bei Hover-Effekten von Navigationsschaltflächen.