Przejdź do głównej zawartości

System muzyki

Gothic używa Microsoft DirectMusic do swojej interaktywnej ścieżki dźwiękowej. W przeciwieństwie do prostego strumieniowania audio, DirectMusic pozwala na dynamiczne przejścia i wariacje oparte na stanie gry (np. eksploracja, walka, czy zdarzenia skryptowe).

Formaty plików

System muzyczny polega na trzech głównych typach plików, które współpracują ze sobą tworząc dynamiczną ścieżkę dźwiękową:

RozszerzenieTypOpis
.dlsDownloadable SoundsZawiera próbki instrumentów (formy falowe/wave) używane przez muzykę.
.styStyleDefiniuje strukturę muzyczną, w tym zespoły (instrumenty), motywy i wzorce (patterns).
.sgtSegmentWłaściwy utwór do odtwarzania, który układa wzorce stylu na osi czasu. TO jest plik, do którego odwołujesz się w skryptach.
ostrzeżenie

Pliki muzyczne (.dls, .sty, .sgt) nie mogą być pakowane do woluminów VDF lub MOD. Muszą być obecne jako luźne pliki w katalogu _work/Data/Music/ (i jego podkatalogach), aby mogły być załadowane przez silnik.

Narzędzia

DirectMusic Producer

Aby stworzyć natywną muzykę do Gothica, potrzebujesz DirectMusic Producer, starszego narzędzia z pakietu DirectX SDK. Pozwala ono komponować adaptacyjną muzykę, która reaguje na zdarzenia w grze.

zBassMusic (Alternatywa)

Dla nowoczesnego moddingu, możesz użyć wtyczki Union zBassMusic. Zastępuje ona silnik DirectMusic biblioteką audio BASS, pozwalając na używanie standardowych formatów audio takich jak MP3 i OGG.

Skrypty

Muzyka w Gothicu jest kontrolowana przez skrypty Daedalus. Klasa C_MUSICTHEME definiuje utwór muzyczny i jego właściwości.

Definicja klasy

class C_MUSICTHEME {
var string file; // Plik .sgt do odtworzenia
var float vol; // Głośność (0.0 do 1.0)
var int loop; // Zapętl utwór (1 = tak, 0 = nie)
var float reverbMix; // Mix efektu pogłosu (reverb)
var float reverbTime; // Czas trwania pogłosu w ms
var int transType; // Typ przejścia (np. TRANSITION_TYPE_FILL)
var int transSubType; // Podtyp przejścia (np. TRANSITION_SUB_TYPE_MEASURE)
};

Przykład instancji

Instancje muzyki są zazwyczaj definiowane w _work/Data/Scripts/System/Music/MusicInst.d.

instance SYS_Menu(C_MUSICTHEME_DEF) {
file = "Gamestart.sgt";
transType = TRANSITION_TYPE_NONE;
transSubType = TRANSITION_SUB_TYPE_MEASURE;
};

Możesz następnie odtworzyć tę instancję używając zewnętrznej funkcji Wld_PlayGlobalSong(instance) lub przypisując ją do strefy/gildii.