Sprite (Computergrafik)

Sprite (Computergrafik)
Einfacher Sprite

Ein Sprite (engl. unter anderem für ein Geistwesen, Kobold) ist ein Grafikobjekt, das von der Grafikhardware über das Hintergrundbild bzw. den restlichen Inhalt der Bildschirmanzeige eingeblendet wird. Die Positionierung wird dabei komplett von der Grafikhardware erledigt. Beispiel: Die meisten Grafikkarten stellen ein Hardware-Sprite für den Mauszeiger zur Verfügung.

Der Name rührt daher, dass ein Sprite auf dem Bildschirm „umherspukt“ und im Grafikspeicher nicht zu finden ist. Mit der Zeit hat sich der Begriff aber auch auf alle Objekte ausgedehnt, die so aussehen, auch wenn sie softwaremäßig erzeugt werden und im Grafikspeicher vorliegen.

Heute ist die echte Sprite-Technik überholt, vor allem, da Computer inzwischen schnell genug sind, ohne Probleme tausende spriteartige Objekte auf dem Bildschirm darzustellen und zugleich den Hintergrund in ursprünglicher Form wiederherzustellen. Auch der dafür nötige Speicherplatz ist weniger wichtig geworden.

Inhaltsverzeichnis

Verwandte Begriffe

Mehrere Shapes in einem Block

Oft wird der Begriff Sprite auch verallgemeinernd für Objekte benutzt, die per Software (statt Grafikhardware) über den Hintergrund eingeblendet werden. Dies ist jedoch streng genommen ein Shape, der meistens auch als „Software-Sprite“ bezeichnet wird. Gleiches gilt für ein Objekt, das mit Hilfe von Hardware-Routinen in den Grafikspeicher einkopiert wird, ohne jedoch komplett autonom von der Hardware verwaltet zu werden; hier handelt es sich um ein BOB (Blitter Object) bzw. MOB (Movable Object Block).

In 3D-Spielen wird der Begriff Sprite manchmal für flache Objekte mit einer animierten Textur verwendet. Dabei handelt es sich fast um ein Software-Sprite im klassischen Sinne, allerdings wird dieser mittels 3D-Grafikroutinen als flaches 3D-Objekt in die 3D-Szenerie eingefügt.

Funktionsweise

Das Sprite wird von der Grafikhardware (Grafikprozessor) zum Anzeigezeitpunkt an der gewünschten Position im Bild eingefügt. Dabei wird der Inhalt des Grafikspeichers nicht verändert – im Gegensatz zum MOB bzw. BOB müssen in diesem nicht immer wieder neu Grafikdaten umkopiert werden. Durch diese Entlastung des Hauptprozessors beanspruchen Sprites kaum Systemressourcen und sind gleichzeitig einfach zu programmieren.

Die Grafikdaten für die Sprites werden nach den gleichen Verfahren wie die Grafikdaten für den normalen Bildaufbau zur Verfügung gestellt – als Beispiele seien der C64 sowie der Amiga genannt, wo dies durch DMA-Speicherzugriffe des Grafikprozessors auf spezielle Bereiche des Hauptspeichers geschieht.

Die Steuerdaten für die Sprite-Darstellung (vor allem die Bildschirmposition) werden entweder direkt in Registern der Grafikhardware vorgehalten (Beispiel: C64, Breite und Höhe der Sprites sind fest vorgegeben) oder in speziellen RAM-Bereichen, auf die diese Hardware genügend schnellen Zugriff hat. Ein Beispiel für die letztere Variante ist der Amiga, bei dem die Steuerdaten zusammen mit den Grafikdaten per DMA-Verfahren aus dem Speicher übermittelt werden. Im Gegensatz zum C64 ist die Höhe der Amiga-Sprites nicht begrenzt.

Zur Bewegung eines Sprites reicht es aus, lediglich dessen x- und y-Koordinaten in den Steuerregistern zu ändern; die komplizierte Berechnung der Adresse im Grafikspeicher entfällt, was ebenfalls den Hauptprozessor entlastet. Der Grafikprozessor fügt selbständig an den vorgegebenen Koordinaten das Sprite beim Aufbau des nächsten Bildes ein. Auch animierte Sprites sind möglich; dazu müssen nur die Daten der Sprite-Grafik im Speicher durch die des nächsten Einzelbildes ersetzt werden. Ggf. kann auch einfach ein anderer Speicherbereich für das nächste Einzelbild angegeben werden.

Ein Sprite ist prinzipiell rechteckig. Aber auch unregelmäßig geformte Sprites sind möglich, indem der Rand transparent dargestellt wird – entweder durch eine bestimmte Farbe, welche vom Grafikprozessor transparent dargestellt wird, oder durch eine Maske, die definiert, an welchen Stellen das Sprite deckend und an welchen es transparent dargestellt werden soll.

Bedeutung für Computerspiele

Das Aufkommen von Sprites in den 80er Jahren revolutionierte die Möglichkeiten von Computerspielen, da damals die Prozessorleistung nicht ausreichte, um komplexe Grafikdaten auf dem Bildschirm zu verschieben (siehe auch Heimcomputer, z. B. C64, Amiga). Die Sprites wurden durch Shapes (C16) abgelöst oder ergänzt (C128) bzw. um BOBs (Amiga) ergänzt.

Eine weitere Verbesserung für Computerspiele war die Sprite-Sprite-Kollisionserkennung. Sobald der Grafikprozessor beim Erstellen des Bildes erkennt, dass sich zwei Sprites überlappen, wird dies der Software per Interrupt, Flag oder Event mitgeteilt. Damit sind die meisten Computerspiele vergleichsweise einfach zu programmieren, weil sich das Programm nicht um die Kollisionserkennung kümmern muss und für diese keine Rechenleistung verbraucht. Eine vernünftige Kollisionserkennung ist in beinahe allen Grafikprozessoren vorhanden, welche auch BOBs oder Sprites beherrschen.

Sprites sind mit Tiles, welche auch Kachelgrafik genannt werden, verwandt. In sehr vielen 2D-Spielen wie Jump' n' Runs werden beide Techniken parallel eingesetzt. Tiles sind ebenfalls kleine Grafikelemente. Aus ihnen wird die Spielewelt zusammengesetzt und sie bilden Wände und Plattformen, verharren also immer auf dem gleichen Platz. Auf diese Weise wird Arbeitsspeicher gespart, da sich wiederholende Muster nur einmal in kleinen Tilegrafiken gespeichert werden müssen, welche entsprechend einer Tilemap angeordnet werden.

Software-Sprites

Die „Software-Sprites“ oder „Shapes“, die keine echten Sprites sind, haben in der Regel nur zwei Dinge mit echten Sprites gemeinsam: Erstens sind es Rastergrafiken, die über den Bildschirm bewegt werden, zweitens besitzen sie nicht-rechteckige Umrisse, also eine Maske bzw. transparente Bereiche.

Die Vorteile echter Sprites, wie etwa die geringe Prozessorbelastung oder die automatische Kollisionserkennung, fallen weg. Dafür erhält man als Vorteil, dass die hardwaremäßigen Einschränkungen für die Zahl und die Größe der Sprites wegfallen, wobei diese Grenzen durch die verfügbare Rechenzeit für die Umsetzung in Software neu gesetzt werden.

Im Gegensatz zu echten Sprites muss der Hintergrund, auf dem die Shapes gezeichnet werden, immer wieder nachgezeichnet werden. Am schnellsten geht das, indem man den kompletten Hintergrund der Szene im Speicher zwischenspeichert und immer wieder über das letzte Bild kopiert, allerdings braucht das zusätzlichen Speicherplatz. Speicherplatzschonend wäre, wenn man den Hintergrund immer wieder für jedes Bild neu erstellt, dazu waren frühere Computer aber zu langsam. In Fällen, bei denen sich auch der Hintergrund für jedes Bild ändern kann, fallen diese Betrachtungen natürlich weg. Allenfalls gewisse Optimierungen bei rollenden Szenerien sind denkbar.

Es gibt drei Verfahren für Softwaresprites:

  • Beim ersten Verfahren wird neben dem Bild eine binäre Maske definiert. Mit dieser Maske verknüpft wird praktisch wie bei echten Sprites nur dann ein Pixel des Shapes gezeichnet, wenn an der entsprechenden Stelle in der Maske ein Bit gesetzt ist.
  • Man kann aber auch mittels der Maske ein „Loch“ in dem Bild, das im Grafikspeicher liegt, erzeugen und kopiert dann transparent das Bild des Sprites hinein. „Transparent“ bedeutet hier, dass im Bildspeicher nur gelöschte Bits (0) durch gesetzte Bits (1) des Shapes ersetzt werden, bereits gesetzte Bits werden nicht gelöscht. Deshalb muss man ein „Loch“ erzeugen, in dem alle Bits im Grafikspeicher gelöscht (0) sind, wo später das Bild des Shapes hin soll. Andernfalls würden sich die gesetzten Bits von Hintergrund und Shape vermischen.
  • Die „moderne“ Variante ist das Definieren einer transparenten Farbe (was allerdings spätestens bei den Hardware-Sprites des C64 verfügbar war). Beim Zeichnen ersetzt jedes Pixel des Shapes den Untergrund; nur wo in dem Shape die transparente Farbe benutzt wird, wird nichts gemacht, der Hintergrund bleibt also unverändert. Dieses Verfahren hat vor allem den Nachteil, dass man eine Farbe bei einem Shape nicht nutzen kann, was zu den Zeiten, wo man nur 16 Farben oder weniger gleichzeitig zur Verfügung hatte, eine gewisse Einschränkung darstellte. Außerdem war der dafür nötige Code aus Performance-Gründen am besten in Assembler zu programmieren. Bei den frühen PCs war entsprechende Hardware-Unterstützung für solche fortgeschrittenen Bit-Blit-Operationen (siehe Blitter) eher selten vorhanden.

Alle Verfahren für Softwaresprites haben gemein, dass der Untergrund wiederhergestellt werden muss, da er durch die Softwaresprites zerstört wird.

Die einfachste Methode zur Lösung des Problems ist das Zwischenspeichern des kompletten Hintergrundes oder nur der Stelle, an die das Shape soll, sowie das nachfolgende Zurückkopieren, wenn eine neue Szene gezeichnet werden soll. Der Hintergrund darf sich während dieser Zeit nicht ändern. Für das Sichern und Wiederherstellen von mehreren Shapes über Ausschnitte muss beim Wiederherstellen die umgekehrte Reihenfolge des Sicherns benutzt werden. Würde man dies nicht tun, könnte es zu Artefakten kommen, wenn sich einzelne Shapes überschneiden. Derartige Artefakte sind unter anderem von Mauszeigern auf Fenster-basierten Plattformen bekannt, wenn diese nicht als echte Sprites realisiert wurden und eines der auf dem System laufenden Programme ein Problem hat.

Spriteanimation

Seit Beginn der Benutzung von Sprites wurde aus Realismusgründen angestrebt, zumindest menschliche Spielfiguren und weitere Lebewesen wie Gegner, Monster und so weiter zu animieren. Gerade bei der Darstellung eines menschlichen Heldens ist es wichtig, dass sich bei der Fortbewegung nach rechts oder links auf einem zweidimensionalen Bildschirm die Beine bewegen. Deshalb besteht eine solche Figur in moderneren Spielen aus mehreren Sprites, die wie bei einem Zeichentrickfilm schnell hintereinander dargestellt werden, um einen fließenden Bewegungseindruck zu erzeugen. Zur Erzeugung dieser Animationssprites wurde in früheren Jahren gerne die Software Deluxe Paint (Amiga) verwendet. Heute gibt es für diesen Zweck Nachfolgeprogramme, wie z.B. Cosmigo Pro Motion. Zu Beginn der Computerspielezeit gab es daneben auch andere Techniken. So verwendete Atari Basketball Ende der 1970er Jahre den sehr grob dargestellten seitlichen Umriss einer gerade stehenden Person als Spielfigur. Beim "Laufen" blinkte in regelmäßigen Abständen ein abgestrecktes Bein (Linie) auf, welches an den Figursprite kopiert wurde.

CSS-Sprites

Hauptartikel: CSS-Sprites

Im Webdesign wird der Begriff Sprites als Bezeichnung für Grafikdateien verwendet, welche aus mehreren kleinen Einzelgrafiken bestehen. Diese Sprites werden per CSS derart in Webseiten eingebunden, dass vom Webbrowser jeweils die benötigten entsprechend zugeschnittenen Teilgrafiken angezeigt werden. Zweck dieser Technik ist einerseits die Verringerung der Gesamtladezeit einer Webseite durch Reduzierung der Serveranfragen und andererseits das Verhindern von Verzögerungen, die durch Nachladen – beispielsweise bei Hovereffekten – entstehen würden[1][2].

Einzelnachweise

  1. CSS Sprites - Einsparung an HTTP-Requests durch Kombination von Hintergrund-Bildern
  2. Verschiedene Verweistypen mit CSS-Sprites kennzeichnen

Weblinks

 Commons: Sprites – Sammlung von Bildern, Videos und Audiodateien

Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Sprite — ist ein englischer Ausdruck für Gespenst, Elfe oder Kobold eine Limonade mit Zitronengeschmack der Coca Cola Company, siehe Getränkemarken der Coca Cola Company Sprite (Computergrafik), ein vom Hintergrund unabhängiges Grafikobjekt Kobold… …   Deutsch Wikipedia

  • Sprite comic — Beispielhaftes Bild eines Webcomics (Ctrl+Alt+Del) Webcomics sind Comics, die vorrangig oder ausschließlich über das Internet publiziert werden. Davon zu unterscheiden sind Comics, die für den Druck produziert und nebenbei im Internet… …   Deutsch Wikipedia

  • BOB (Computergrafik) — Ein Bob ist ein grafisches Objekt, welches auf dem Bildschirm ähnlich einem Sprite bewegt werden kann. Der Name Bob leitet sich aus blitter object ab. Bobs unterscheiden sich von Sprites dadurch, dass Bobs tatsächlich in den Bildspeicher kopiert… …   Deutsch Wikipedia

  • Shape (Computergrafik) — Ein Shape ist ein grafisches Objekt, welches auf dem Computerbildschirm dargestellt werden kann. Von der Funktion her ähnelt es zwar einem Sprite, wird jedoch nicht autonom von der Grafikhardware dargestellt. Vielmehr ist für die Darstellung von… …   Deutsch Wikipedia

  • Sprites — Sprite ist ein englischer Ausdruck für Gespenst, Elfe oder Kobold eine Zitronen Limonade der Coca Cola Company, siehe Getränkemarken der Coca Cola GmbH Sprite (Computergrafik), ein vom Hintergrund unabhängiges Grafikobjekt Kobold (Wetterphänomen) …   Deutsch Wikipedia

  • MOS Technologies VIC II — MOS 6569R3 auf einem C64 Mainboard Der VIC II 8565R2 für den C64 II Der VIC (Video Interface Controller) II von MOS Technologies, Nachfolger des …   Deutsch Wikipedia

  • VIC II — MOS 6569R3 auf einem C64 Mainboard Der VIC II 8565R2 für den C64 II Der VIC (Video Interface Controller) II von MOS Technologies, Nachfolger des …   Deutsch Wikipedia

  • DOOM — Doom, gespielt auf einem OLPC One Laptop Per Child. Screenshot von FreeDoom, einer freien Variante. Doom (eng …   Deutsch Wikipedia

  • DOOM II — Doom, gespielt auf einem OLPC One Laptop Per Child. Screenshot von FreeDoom, einer freien Variante. Doom (eng …   Deutsch Wikipedia

  • DooM — Doom, gespielt auf einem OLPC One Laptop Per Child. Screenshot von FreeDoom, einer freien Variante. Doom (eng …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”