xq's Digitalwerkstatt

Liste nützlicher Libraries

SDL2

Allen Libraries voran steht bei mir SDL2. Für quasi jedes Projekt, welches Grafik- oder Spielebezug hat, wird mit SDL2 umgesetzt.

Die Lib bietet guten Crossplattform-Support und hat mittlerweile auch eine anständige Render-API für 2D. Input wird ebenfalls ausreichend gut abgedeckt, Sound nur mäßig.

Es gibt zu SDL noch eine ganze Menge an Erweiterungs-Libraries, praktisch sind hier auf jeden Fall SDL_image und SDL_mixer.

stb

nothings single-file header library ist eine Ansammlung von C-Bibliotheken, welche als reine Header-Implementierung ausgeliefert werden.

Es kommt auch hier gleich eine ganze Sammlung an praktischen Funktionen mit, für mich persönlich ist stb_image mittlerweile der primary Bild-Lader geworden. Einfach, bequem einzubinden und funktioniert.

dear imgui

dear imgui ist ein relativ mächtiges UI-Toolkit, welches man mit wenig Aufwand in quasi jegliches Polygon-rendernde Projekt einfügen kann. Es enthält eine große Sammlung an Widgets und Features, ist aber Meiner Meinung nach nicht für große Projekte bzw. GUI-lastige Projekte geeignet.

Für Debug-UI in Spielen jedoch eine ziemlich mächtige Lösung.

nativefiledialog

NFD ist eine sehr kleine, aber praktische Library. Sie stellt eine Crossplattform-Lösung bereit, einen Dateidialog zu öffnen.

Nicht viel, spart einem aber in den meisten Fällen viel Aufwand.

nlohmann/json

Ein JSON-Parser für modernes C++. Verhält sich in vielen Fällen wie erwartet und ist der C++-Standard-Library sehr ähnlich. Mittlerweile meine Standard-Library, um mit JSON zu arbeiten.

gl3w

Ein OpenGL-Loader, welcher aus der Definition des Core Profiles die Funktionsdefinitionen sowie Lade-Funktionen erzeugt. Wartungsarm, immer aktuell durch Generator-Script und bequem zu verwenden. Ist wie SDL in quasi jedem Spieleprojekt von mir zu finden.

Lua

Eine einfache Scriptsprache, welche dazu noch komplett in C geschrieben ist und eine gute API für die Einbettung in andere Projekte bietet. Wenn man verstanden hat, welche Konzepte die API verfolgt, ist es kein Problem, quasi jegliches Programmierkonstrukt in Lua einzubauen.

Die Scriptsprache ist zudem auch als Standalone-Variante verfügbar und wird von mir häufig für Scripte verwendet.

rpatk

Eine Parser-Library, welche Grammatiken in BNF parsen kann. Bequem zu verwenden, ziemlich mächtig, aber wegen der GPL nicht mehr in meinen Projekten zu finden.

Wer aber schnell mal einen Parser zusammenhacken will/muss, ist mit Rpa/Tk gut bedient.

libimagequant

Eine kleine Library, welche RGBA-Bilder quantisiert und palettisiert. RGBA32 rein, 8-Bit-Bild raus.

Open Dynamics Engine

Eine mittlerweile etwas betagte Physik-Engine, welche aber durch Simulationspräzision besticht. Kann auch für Simulation mechanischer Systeme verwendet werden.

Für mich persönlich ist der größte Vorteil von ODE, dass die Engine eine strikte Trennung von Kollision und Dynamik hat. Das erlaubt es, die Kollision auch für eigene Sachen mitnutzen zu können, ohne irgendwelche Rigid Bodies spawnen zu müssen.