[Release] m3diaLib - Eine C++-Bibliothek für einfachere 3DS-Homebrew-Entwicklung

  • Innerhalb des letzten Jahres habe ich an einer Bibliothek für einfache 3DS-Homebrewentwicklung gearbeitet. Sie ist komplett in C++11 geschrieben und unterstützt Audio, Grafik und mehr. Beachtet, dass die Bibliothek immernoch in der Beta ist. Bitte meldet daher alle Bugs, die ihr findet, auf GitHub.


    Nützliche Links:

    Features

    Die m3diaLib (ausgesprochen "media-lib") ist in mehrere große Module aufgeteilt, die dann wiederrum in kleinere Teile aufgeteilt werden können:


    Core

    Das Core-Modul beinhaltet jede Funktionalität, die direkt mit dem System interagiert.

    Die Haupt-Funktionalität des Core-Moduls beinhaltet:

    • Eine Klasse zum steuern eurer Homebrew-App
    • Einfache Interaktion mit der Konsole
    • Starten von System-Applets
    • Zeitmessung
    • Unterstützung für das RomFS
    • Multithreading

    Input

    Das Input-Modul verarbeitet jede User-Eingabe.

    Die Haupt-Funktionalität des Input-Moduls beinhaltet:

    • Verarbeiten von Button-Input
    • Verarbeiten von Touch-Input

    Audio

    Das Audio-Modul erlaubt es, Musik und Sound-Effekte abzuspielen.

    Die Haupt-Funktionalität des Audio-Moduls beinhaltet:

    • Audio-Dateien direkt vom Dateisystem streamen
    • Unterstützung für .wav und .mp3 (mehr sind geplant!)
    • Zwei verschiedene Klassen, Music und Sound, welche jeweils für ihre entsprechenden Einsatzgebiete optimiert sind

    Graphics

    Das Graphics-Modul erlaubt es simple Formen oder hochauflösende Texturen zu rendern.

    Die Haupt-Funktionalität des Graphics-Moduls beinhaltet:

    • Unterstützung für beide Bildschirme
    • Unterstützung für stereoskopisches 3D
    • Einfaches Interface für schnelles Rendern auf beiden Bildschirmen
    • Unterstützung für Sprite-Transformationen
    • Vor-programmierte Formen sowie eine Shape-Klasse zum einfachen Implementieren von eigenen Formen
    • Einfaches Farbsystem
    • Kollisionserkennung

    Utils

    Das Utils-Modul beinhaltet verschiedene nützliche Funktionalitäten. Zur Zeit beinhaltet es:

    • Einfache verschlüsselung


    Alle Features sind hier gut dokumentiert. Beispiele können hier gefunden werden.


    Anwendung

    Das Grundgerüst einer Homebrew-App mit der m3diaLib sieht so aus:



    Geplante Features

    Audio:

    • Mikrofon-Unterstützung
    • Mehr Dateiformate

    Core:

    • unterstützung für jede OS- und System-Funktionalität

    Graphics:

    • Animation
    • RenderTargets
    • Mehr Dateiformate für Texturen
    • 3D Unterstützung

    Networking:

    Dieses Modul ist zur Zeit noch nicht verfügbar. Die geplanten Features sind:

    • Ein simpler HTTP und WebSocket Client und Server
    • Socket Unterstützung
    • Eine 3DS-Download-Spiel Alternative (mehr dazu zu einem späteren Zeitpunkt)

    Utils:

    • ZIP komprimierung und dekomprimierung
    • JSON und XML Parsing
    • Secure-Random-Numbers

    ...und was mir sonst noch einfällt


    Installation

    Um die Bibliothek zu installieren, ladet den letzten release-Build herunter und führt den Befehl make install aus.


    Um den Quellcode selbst zu builden, ladet den letzten Release herunter und führt die folgenden Befehle aus:

    Code
    1. make
    2. make install

    Dependencies

    Um eine m3diaLib-App zu kompilieren, müssen die folgenden Dependencies installiert sein (installiert sie mit dem devkitPro-Pacman)

    • libctru
    • citro3d
    • citro2d
    • 3ds-tinyxml2
    • 3ds-zlib
    • 3ds-mpg123
    • 3ds-libpng
    • 3ds-freetype
    • tex3ds (wenn ihr Spritesheets verwenden wollt)

    Credits