Skocz do zawartości

Budowa systemu audio w grze


odex

Rekomendowane odpowiedzi

Witam ponownie,

na wstępie zaznaczę, że szukałem podobnego tematu wcześniej na forum ale nie znalazłem nic co by zaspokoiło moją ciekawość :)

 

Sprawa jest dosyć prosta, prosiłbym was, zdecydowanie bardziej doświadczonych koderów, o parę słów porad jak zbudować prostu ale funkcjonalny system audio w swojej grze. Właśnie robię swoje pierwszą produkcję, robię to głównie dla rozruszania głowy, czytam też dużo dokumentacji jednak nie chcę się tutaj porywać z motyką i potem przebudowywać wszystko od podstaw po 5 razy. Najpierw może napiszę jak ja to widzę: po pierwsze chciałbym mieć osobne ustawienia głośności dla muzyki i efektów dźwiękowych. Od jakiejś tam wersji wiem, że GMS nie odróżnia obu i traktuje jako tą samą kategorię. Domyślam się, że musiałbym używać w takim razie funkcji audio_sound_gain dla każdego dźwięku i dwie osobne zmienne dla muzyki i efektów. Dodatkowo jeśli chciałbym zmieniać głośność podczas pauzy (zrobionej na zasadzie instance_deactivate_all), to czy musiałbym mieć dodatkowy obiekt monitorujący w stepie głośność muzyki?

Dodatkowo czy funkcja audio_master_gain jest mi do czegokolwiek przydatna jak chcę mieć osobne dźwięki dla muzyki i efektów? I czy przy każdej zmianie muzyki mogę użyć po prostu audio_stop_all, czy lepiej wyciszać konkretny track sprawdzając który aktualnie gra?

 

To tak parę podstawowych spraw z mojej strony. Jak mówię - jestem ciekaw jak inni budują system audio w swoich grach i jak ktoś może rzucić jakąś poradę czy też dwie to będę bardzo wdzięczny :)

 

Odnośnik do komentarza
Udostępnij na innych stronach

audio_master_gain jest do ustawienia głośności dla wszystkich dźwięków. Co do osobnej głośności dla muzyki i efektów to jeśli nie chcesz przy każdym audio_play_sound zmieniać głośność, to myślę że przydatne bedą listy:

Pisane z pamięci

GML
muzyka = ds_list_create();

efekty = ds_list_create();

 

volume = 0.5;

 

ds_list_add(muzyka,snd_music1);

ds_list_add(muzyka,snd_music2);

ds_list_add(muzyka,snd_music3);

ds_list_add(muzyka,snd_music50);

 

ds_list_add(efekty,snd_effect1);

ds_list_add(efekty,snd_effect2);

ds_list_add(efekty,snd_effect3);

ds_list_add(efekty,snd_effect50);

 

for(i = 0; i < ds_list_size(muzyka); i++){

audio_sound_gain(muzyka,volume,audio_sound_length(muzyka));

}

for(i = 0; i < ds_list_size(efekty); i++){

audio_sound_gain(efekty,volume,audio_sound_length(efekty));

}

 

i wtedy powinieneś odtwarzać dźwięk:

audio_play_sound(muzyka[0], np 0, true albo false);

 

albo

 

audio_play_sound(muzyka[ds_list_find_index(muzyka,snd_music1)], np 0, true albo false);

 

Jak pomogłem to nie ma za co :D

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...