Valami mozgolódás támadt a Discord csatornán. KazMan és Filippp elhatározták, hogy musicdisket készítenek, és szükségük volt egy kóderre. Gondoltam itt az alkalom, hogy tovább erősítsük a csoporton belüli projekteket, ahol eddig főleg magányos projektek voltak. Azért nem lovalom bele magam nagyon, mert könnyen lehet, hogy a nagy kezdeti fellángolás kipukkad és merő érdektelenségbe fullad a projekt.
Tervezés
A musicdisknek Windowson kell futnia. A zenék trackek lesznek, ezért a lejátszásukhoz libopenmpt-t fogok használni. A megjelenítésért és az ablakok kezeléséért SDL2 fog felelni. (Hátha lesz egy Linux port később...) Animációkat, 3D-t nem terveztek, de persze ez még változhat. A beszélgetésekből úgy tűnik nekem, még nincs kiforrott koncepció. Megpróbálom minél modulárisabbra csinálni, hogy a kód fordítása nélkül lehessen módosítani.
Inspirációként átnéztem néhány musicdisket az utóbbi időből, de nem tetszenek az ott látott megoldások. Amiket láttam, abba Lua-ban készítik el a keretrendszert, shell szkriptból futtatják. Igaz, az eredmény cross-platform, de hanyag érzetet kelt.
Azt sem akarom, hogy szana-szét legyenek a fájlok, ahogy a Marine Melodies-ben. Egy zip-be kellene összecsomagolni mindent. (Amit átnevezek majd pak-ra megtévesztésként.) Így is lesz egy rakás DLL, ami ott virít az exe mellett. Az SDL-nek így is kell a vorbis, zlib, mpg123, meg még ki tudja micsoda.
Grafika
Ez a másik ok, amiért konfigurációs fájlok kellenek, ugyanis még nincs egyetlen grafikai elem sem. Van a Discordon egy ember, aki állítólag a grafikáért felel, de még egyszer sem válaszolt egyetlen kérdésre sem. Fontot viszont már kaptam, szöveget már tudok elhelyezni.
Zene
Mikor elkezdtem írni a posztot, még csak egy zene volt, de mire a végére értem, már négy. Nagyon termelékenyek ezek a zenészek.
Implementáció
Az első lépés, hogy a szükséges függőségeket felrakjuk. Ez már elég fájdalommentes a vcpkg-nek hála, tehát ezt kell először telepíteni. Utána már az IDE is felismeri az include alapján, milyen csomagot kell letölteni, és még a projektet is konfigurálja. Azért -disableMetrics opciót érdemes használni, mert nem akarom, hogy a felhasználói élményemet javítsák, jó az úgy, ahogy van.
A csomagkezelő a libopenmpt-t is tartalmazza, tehát azzal sem kell külön szenvedni. A libopenmpt egy hardverfüggetlen implementáció, ami azt jelenti, hogy a modulokat nem játsza le, csak dekódolja egy 48KHz-es PCM adatcsomagba, amivel utána az ember azt csinál, amit akar.
Összeraktam egy kezdetleges formát, hogy ismerkedjem az API-val. Gond nélkül lefordul, hiba nélkül lefut, de nem hallani semmit. Én már annak is örülök, hogy nem fagy le és nem rántja magával az egész operációs rendszert. Nem hallatszik a zene? Részletkérdés :-)
