# Allegro (Programmbibliothek)

Allegro ist eine in C geschriebene, freie Bibliothek für die Programmierung von Computerspielen in C, C++ und anderen Sprachen. Allegros Lizenz (zlib-Lizenz) schränkt Verwendung, Veränderung und Vertrieb der Bibliothek in keiner Weise ein.
Ein großer Vorteil ist die Portabilität von Allegro. Programme lassen sich meist ohne Änderungen unter einer Vielzahl von Betriebssystemen kompilieren und ausführen. In der aktuellen stabilen Version 5.0 werden Windows, Unix (Linux, FreeBSD, Irix, Solaris, Darwin) sowie macOS und iOS unterstützt.
Zu den grundlegenden Leistungen Allegros zählen Funktionen und Datenstrukturen für zweidimensionale Grafik, Tonausgabe, Benutzereingaben und die zeitliche Steuerung von Programmen. Darüber hinaus liefert die Bibliothek Unterstützung für mathematische Berechnungen, einfache 3D-Computergrafik, komprimierte Daten, Dateisysteme und eine einfache grafische Benutzeroberfläche.

## Einsteigerfreundlichkeit

Allegro erfüllt ähnliche Aufgaben wie die Simple DirectMedia Layer, abstrahiert jedoch etwas weiter von den Hardware-Grundlagen und bietet mehr Funktionalität "out of the box", weswegen weniger Zusatzbibliotheken benötigt werden. Allegro wird außerdem mit einer umfangreichen und verständlichen Dokumentation und vielen Beispielprogrammen ausgeliefert. Einsteigern ist Allegro aus diesen Gründen relativ leicht zugänglich.

## Geschichte und Hinterlassenschaften

Allegros Wurzeln liegen in den frühen 1990er Jahren auf dem Atari ST. Die größte Bekanntheit erreichte es als Bibliothek für DJGPP, die DOS-Version der GNU Compiler Collection. Demzufolge besitzt es noch viele Routinen für die Unterstützung von DOS. Die Unterstützung für leistungsfähige Hardware, um beispielsweise Farben schnell zu mischen, und insbesondere die Anbindung an OpenGL sind im reinen Allegro noch nicht so ausgereift wie in SDL. Die Erweiterungen FBlend und AllegroGL gleichen diesen Nachteil jedoch aus.
Historisch gewachsen sind einige weitere Probleme der derzeitigen API: Teilweise sind verwendete Begriffe ungebräuchlich oder veraltet. Viele gleichwertige oder ähnliche Funktionen ließen sich zusammenfassen. Bei einigen angebotenen Routinen stellt sich die Frage, ob diese für moderne Systeme überhaupt noch zeitgemäß sind, oder ob nicht externe Angebote diese Aufgaben besser lösen könnten. Das gilt z. B. für die Festkommaarithmetik und die Software-3D-Routinen. Allegros Benutzeroberfläche wurde hauptsächlich für die vielen beiliegenden Tools eingeführt. Es stehen mehrere leistungsstarke Erweiterungen bereit, um eigene Programme ansprechender zu gestalten.
Viele der angesprochenen Nachteile sollten in einer neuen Version 5 behoben werden. Aus Zeitmangel ist die Entwicklung nach einer kurzen aktiven Phase im Jahr 2001 aber relativ langsam vorangeschritten.
Allegro 5 erhält eine komplett überarbeitete API sowie auf aktuellere Hardware zugeschnittenen Grafik-Code und ein ereignisbasiertes Eingabe- und Timer-System. Gleichzeitig zur Entwicklung der Version 5 im aktuellen Entwicklungszweig 4.9 gibt es auch Pläne, nach Erscheinen der stabilen Version 4.2.2 an einer Version 4.4 zu arbeiten, die auf dem alten Code basiert, aber einige Add-ons wie AllegroGL integrieren soll.
Während die Software bisher als „Giftware“ veröffentlicht wurde, wird sie ab Version 5 unter der zlib-Lizenz veröffentlicht.