Simple DirectMedia Layer

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Simple DirectMedia Layer
Logo von SDL
Entwickler Sam Lantinga und die SDL-Gemeinde
Aktuelle Version 2.0.3
(16. März 2014)
Betriebssystem Linux, Mac OS, Windows
Programmier­sprache C
Kategorie Programmbibliothek
Lizenz LGPL (Freie Software), ab SDL 1.3 zlib-Lizenz
Deutschsprachig ja
www.libsdl.org

Der Simple DirectMedia Layer (SDL) ist eine freie Multimedia-Bibliothek für verschiedene Plattformen. Sie steht unter der GNU Lesser General Public License (LGPL) bzw. seit Version 1.3 unter der zlib-Lizenz.

Konzept[Bearbeiten]

Die Bibliothek stellt eine plattformunabhängige Schnittstelle (API) für Grafik-, Sound- und Eingabegeräte bereit, die sich hauptsächlich zur Entwicklung von Spielen und Multimediaanwendungen eignet. Durch die Unterstützung vieler verschiedener Plattformen kann für eine Applikation eine hohe Portabilität bzw. Plattformunabhängigkeit gewährleistet werden; das unterscheidet sie beispielsweise von DirectX. SDL kann mit dieser Eigenschaft auch als Middleware verstanden werden.[1]

Abstraktionsebenen mit SDL auf verschiedenen Plattformen: blau ist der plattformunabhängige Teil, braun die ausführende Hardware (Grafikkarte, Soundkarte, etc.), dazwischen verschiedene Plattformen und deren spezifischen APIs und Bibliotheken

SDL ist in C geschrieben und zeichnet sich besonders durch einen kompakten Code aus, was diese Bibliothek auch für Anfänger leicht erlernbar machen soll. Es existieren viele C-Beispielprogramme, die zeigen, wie die Bibliothek verwendet wird. Für über zwanzig Programmiersprachen existieren SDL-1.2-Anbindungen anderer Hersteller.[2] SDL-2.0-Anbindungen existieren (ohne C und C++) für mindestens drei Programmiersprachen.[3]

Verbreitung[Bearbeiten]

Bezeichnend für die Beliebtheit und Bekanntheit von SDL ist die Anzahl an Spielen und Programmen, die mit ihr geschrieben wurden, z. B. listet die Spieledatenbank MobyGames 2012 105 Spiele[1], auf der SDL-Webseite selbst sind knapp 700 Spiele gelistet.[4] Bekannte kommerzielle Beispiele sind Angry Birds[5] oder Unreal Tournament, aus dem Open Source-Bereich z.B. OpenTTD[6], The Battle for Wesnoth[7] oder Freeciv[8].

Bei cross-platform-Spieleveröffentlichungen wird häufig auf SDL als Abstraktionsbibliothek gesetzt, da sich der Aufwand gegenüber Implementierungen mit den jeweiligen nativen Plattform-APIs signifikant verringert. Ein Beispiel sind die in den Humble Indie Bundles enthaltenen meist SDL-basierenden Linux-, Mac- und Android-Versionen.

Weiter findet SDL häufig Verwendung für (spätere) Portierungen auf neue Plattformen, z.B. Homeworld für das Pandora-Handheld[9] oder Jagged Alliance 2 für Android-Smartphones[10].

Auf SDL aufsetzende Nicht-Spiele-Anwendungen sind z. B. die Emulatoren DOSBox und VisualBoyAdvance.

Es wurden auch mehrere Bücher über das Entwickeln mit den SDL-Bibliotheken veröffentlicht, auch wird SDL in Universitäten in Kursen zu Multimedia und Informatik verwendet.

Workshop zur Spielprogrammierung unter Verwendung der libSDL, Universität Cádiz (Spanien)

Entwicklungsgeschichte[Bearbeiten]

Entstehung bei Loki Software[Bearbeiten]

SDL wurde von Sam Lantinga während seiner Zeit als leitender Programmierer (1999 bis 2001) bei Loki Software entwickelt. Der Simple DirectMedia-Layer bildet (oft auch im Zusammenhang mit den OpenGL- und OpenAL-Schnittstellen) die Grundlage für einige kommerzielle Spieletitel für Linux, die von Loki portiert wurden, wie z. B. Civilization: Call to Power, Descent³ oder auch Sid Meier’s Alpha Centauri.

Schon damals wurde SDL unter die LGPL gestellt. Durch diesen Schritt wurde SDL schnell bekannt, da damit nun sowohl proprietäre als auch freie Software entwickelt werden konnten.

Weiterentwicklung durch die Community[Bearbeiten]

Obwohl Sam Lantinga im Jahr 2001 von Loki Software zu Blizzard Entertainment wechselte, verwaltet er die Entwicklung von SDL noch immer und ist nach wie vor einer der aktivsten SDL-Entwickler. Ryan C. Gordon, ein weiterer Ex-Lokimitarbeiter, arbeitet ebenfalls weiter an und mit SDL z.B. für die Linux und Mac-Versionen von Spielen im Humble Indie Bundle.[11]

Ryan „Icculus“ Gordon, bekannter Verwender und Entwickler von SDL, z.B. im Rahmen des Humble Indie Bundles.[12]

Inzwischen gibt es eine große Community und weitere freiwillige Helfer, die sich an der Weiterentwicklung beteiligen.

SDL 1.3/2.0[Bearbeiten]

Aktuell befindet sich Version 1.3 der Bibliothek in der Entwicklung und wird einige Neuerungen mit sich bringen. Zusätzliche Fähigkeiten im Vergleich zur Vorversion sind Unterstützung für den Betrieb an mehreren Monitoren, durch Hardware beschleunigte zweidimensionale Grafik sowie bessere Unterstützung von Unicode.[13] Weiterhin soll Unterstützung von Multitouch und haptischen Eingabegeräten z.B. mit Force Feedback Einzug halten.[14]

Im Gegensatz zu früheren Versionen nutzt SDL 1.3 die zlib-Lizenz.[15] Durch diese soll es möglich sein, proprietäre Produkte (Closed Source) zu entwickeln, welche die SDL dann auch statisch binden („linken“) dürfen.

Snapshots ab Februar 2012 ändern die Versionsnummer auf 2.0.

Die erste stabile Version von SDL 2.0 wurde am 13. August 2013 veröffentlicht.[16]

Die aktuelle stabile Version SDL 2.0.3 wurde am 16. März 2014 veröffentlicht.[17]

Funktionalität[Bearbeiten]

Die SDL-Bibliothek enthält vor allem für Multimedia-Anwendungen notwendige Funktionalitäten, für die eine weitverbreitete, plattformunabhängige und gleichzeitige performante API nicht existiert:

Videoausgabe
Videomodus setzen, Zugriff auf den Framebuffer, Nutzung der Hardwarebeschleunigung für Grafikoperationen, optional über EGL
Ereignis-Behandlung
Ereignisse für Tastatur, Maus, Programmende und Sichtbarkeit des Programms
Audioausgabe
In 8 und 16 bit, mono/stereo
Audio-CDs
Vollständige Audio-CD-API
Threads
Thread-API, Semaphore, Mutex-Objekte und Condition-Variablen zur Synchronisation
Zeitgeber
Periodisch, Wartezeit, abgelaufene Zeit abfragen
Konvertierung der Byte-Reihenfolge
Big Endian/Little Endian

Der Simple DirectMedia Layer stellt selbst keine Funktionen für 3D-Grafik zur Verfügung, weil mit OpenGL bereits eine weitverbreitete, plattformunabhängige 3D-API zur Verfügung steht. SDL wurde von Beginn an für das Zusammenspiel mit OpenGL entworfen und soll spezifisch die Multimediaaspekte abdecken, die außerhalb der OpenGL-Funktionalität liegen. Deshalb ergänzen sich beide Bibliotheken optimal und auch 3D-Spiele wie z. B. Tux Racer sind problemlos möglich.

Weitere Einsatzmöglichkeiten wie Internet-Socket-Abstraktion oder Schriftzugriff werden bewusst nicht offiziell in SDL aufgenommen, jedoch als Erweiterungen von anderen Anbietern auf der LibSDL-Homepage angeboten.[18]

Unterstützte Plattformen[Bearbeiten]

Beispiel für die Einbindung von SDL in eine Plattform, hier ein Linux-System. SDL bietet z.B. einem Computerspiel Zugriff auf Sound- und Eingabehardware über eigene Sound- und Input-APIs.

Offiziell unterstützte Plattformen[19]:

Unterstützung im SDL-Code enthalten, aber nicht offiziell unterstützt:

SDL läuft auf sämtlichen unixoiden Plattformen, sofern diese den POSIX-Standard unterstützen.

Auf sonstige Art unterstützte Plattformen:

Beispielhafte Galerie SDL-basierender Spiele[Bearbeiten]

Siehe auch[Bearbeiten]

Literatur[Bearbeiten]

  • Alberto García Serrano: Programación de videojuegos en SDL, Ediversitas, ISBN 8495836084, Buch über die Verwendung der SDL in der Videospiele-Entwicklung in Spanisch.
  • Ernest Pazera: Focus On SDL, Muska & Lipman/Premier-Trade, ISBN 1592000304, Weiteres Buch zur SDL, welches sich ebenfalls mit weiteren Bibliotheken für den Simple DirectMedia Layer, wie beispielsweise SDL_net, befasst.
  • Ron Penton: Data Structures for Game Programmers, Muska & Lipman/Premier-Trade, ISBN 1931841942, Geht hauptsächlich zwar auf Datenstrukturen eines Spiels ein, beinhaltet aber auch Beispiele mit der SDL.
  • John R. Hall: Programming Linux Games, No Starch, ISBN 1886411492, Erstes Buch, welches sich mit der SDL befasst. Enthält auch Informationen über die Programmierung in Linux im Allgemeinen und der Netzwerkprogrammierung, Onlineversion: PDF, LaTex-Sourcen.

Weblinks[Bearbeiten]

 Wikibooks: SDL – Lern- und Lehrmaterialien
Technische Information

Einzelnachweise[Bearbeiten]

  1. a b Middleware: SDL Group Description (englisch) MobyGames. 18. Mai 2012. Abgerufen am 18. Mai 2012: „Games that use the very portable Simple DirectMedia Layer.
  2. SDL Language Bindings. Archiviert vom Original am 16. Januar 2013, abgerufen am 12. Juli 2009 (englisch).
  3. SDL Language Bindings. Archiviert vom Original am 21. August 2013, abgerufen am 25. Oktober 2013 (englisch).
  4. Games (englisch) libsdl.org. 18. Mai 2012. Abgerufen am 18. Mai 2012.
  5. SDL Testimonials. Galaxygameworks.com. Archiviert vom Original am 16. Juli 2011. Abgerufen am 1. Februar 2012.
  6. a b OpenTTD Development. Abgerufen am 2. Oktober 2013.
  7. a b CompilingWesnoth. 27. Februar 2010. Abgerufen am 19. März 2010.
  8. SDLClient - Freeciv.org. Freeciv.wikia.com. Abgerufen am 19. März 2010.
  9. may88: Game of the Week #3 – Homeworld SDL (englisch) pandorapress.net. 23. Juni 2011. Abgerufen am 8. Mai 2012: „[...] released port of HomeworldSDL. Forum member Edglex enables your Pandora to experience the excellent work done by the guys at HomeworldSDL.
  10. JA2 Stracciatella Feedback » Jagged Alliance 2 Android Stracciatella Port RC2 Release - please test auf the Bear's Pit Forum, 3. Oktober 2011 (englisch)
  11. Ben Kuchera: The latest Humble Bundle offers amazing games, promotes multiplatform releases (englisch) In: ars technica. 14. Dezember 2011. Abgerufen am 18. Februar 2012: „Some developers are ready for it from day one, but usually a game is Windows-only and needs to get ported to Mac and Linux. Ryan Gordon and Edward Rudd have been instrumental in this, but a lot of developers will do ports internally as well.
  12. Ben Kuchera: The latest Humble Bundle offers amazing games, promotes multiplatform releases (englisch) In: ars technica. Abgerufen am 6. Mai 2012.
  13. SDL: A Quick Introduction to SDL 1.3 (englisch) The Grumpy Programmer. 29. Juni 2009. Abgerufen am 7. Februar 2010.
  14. Arnin Ronacher: A Gentle Introduction into SDL 1.3 (englisch) 6. April 2011. Abgerufen am 30. Mai 2012.
  15. SDL 1.3 licensing terms (englisch) Sam Lantinga. 7. April 2011. Abgerufen am 21. August 2011.
  16. SDL 2.0.0 RELEASED! 13. August 2013, abgerufen am 25. Oktober 2013 (englisch).
  17. Index of /release. Abgerufen am 28. März 2014 (englisch).
  18. http://www.libsdl.org/cgi/docwiki.cgi/FrontPage?action=show&redirect=StartSeite
  19. Ryan C. Gordon: README.Platforms (englisch) libsdl.org. 9. April 2012. Abgerufen am 7. Mai 2012: „This is a list of the platforms SDL supports, and who maintains them.
  20. SDL for Android in 10 drunken steps J.D. William am 27. Juli 2011 (englisch)
  21. a b SDL Release Notes. 21. Januar 2012, abgerufen am 29. Juni 2012 (englisch).
  22. libsdl.org website: about section. 8. Februar 2006, abgerufen am 29. Juni 2012.
  23. Oolite. Abgerufen am 19. März 2010.