Dodajemy nowy dźwięk

NAZWA: Dodajemy nowy dźwięk
TWÓRCA: @AziatkaVictor

Od twórcy: „To jest mały przewodnik po wprowadzaniu nowych dźwięków do Stalkera. Jest kilka podstawowych pojęć, o których po prostu musisz wiedzieć - bez nich nic nie będzie działać”.

PRACA W EDYTORZE AUDIO:

Spoiler

Pierwsze, co trzeba wiedzieć, to jaki dokładnie dźwięk jest nam potrzebny. Prościej mówiąc, należy określić, w jaki sposób dźwięk będzie odtwarzany. Jest to ważne na początku pracy. To typ dźwięku.

Są dwa możliwe warianty, od których będzie zależeć efekt:

  • Mono. Taki typ jest potrzebny w celu odtwarzania dźwięków przedmiotami, bronią, itd. To wszystko z powodu tego, że dźwięk jest odtwarzany w jednym z uszu z określoną głośnością. Pozwala to stworzyć efekt 3D. Natomiast dla stereo to nie pasuje, ponieważ w stereo dźwięk jest odtwarzany różnie w każdym z uszu, a tutaj jest całkiem inna zasada działania.
  • Stereo. Ten typ jest wykorzystywany w celu odtwarzania dźwięków u “GG w głowie”, tzn. dźwięk będzie odtwarzany z jednakową głośnością w trybie stereo. Jest to wykorzystywane dla dźwięków GG, lektora SMS i ambientów.
    • UWAGA: Nie róbcie Stereo dla dźwięków, które będą odtwarzane z przedmiotów w przestrzeni 3D. Jeśli dźwięk jest w Stereo, to jest tak, jakbyście go nie ustawiali - będzie on odtwarzany w głowie, a wy będzie mówić, że jest nie w porządku.

Wszystko jest proste. Wybieramy typ dźwięku, dla naszych potrzeb i eksportujemy wybrany dźwięk w formacie *.wav.
UWAGA: Częstotliwość dźwięku powinna być 44100 Hz.

PRACA W SDK:

Spoiler

Aby SDK zobaczył nasz dźwięk, trzeba go dodać do folderu “rawdata/sounds”. Później uruchamiamy SDK i otwieramy zakładkę “Sounds/Sound Editor”. To panel, który pomoże nam w ustawieniu dźwięku.

Poszczególne parametry oraz to, za co odpowiadają:

  • Quality - szerokość pasma częstotliwości, otaczająca centralną częstotliwość (dla bardziej płynnego zanikania dźwięku lub jego stabilności)
  • MinDis - odległość, od której głośność dźwięku będzie się obniżać (im niższa do MaxDist, tym płynniejsze przejście, ale Quality trzeba zwiększyć)
  • MaxDist - maksymalna odległość, z której dźwięk będzie słyszeć GG
  • MaxAIDist - maksymalna odległość, z której dźwięk będzie słyszeć NPC
  • BaseVolume - głośność
  • GameType - element wpływający na reakcję NPC.

Parametry zostały wzięte z Wiki

Dla dźwięku, który będzie odtwarzany w głowie GG, większości parametrów nie trzeba ustawiać. Można od razu z edytora audio eksportować do formatun *.ogg. A dla dźwięku mono, ustawiamy potrzebne parametry, naciskamy “ОК” i nasze dźwięki pojawiają się w folderze “gamedata/sounds” w formacie *.ogg. Czeka nas później praca z konfigami.

PRACA Z KONFIGAMI:

Spoiler

Aby gra widziała nasz dźwięk i nie było wylotu do pulpitu podczas próby odtworzenia, trzeba go dopisać w konfigu “script_sound_lokacja”. Jeśli utworzysz ten plik specjalnie dla swojej lokacji, to trzeba dołączyć go do głównego konfigu “script_sound”, pisząc w nim:

#include "script_sound_lokacja.ltx"

Również dołączamy listę:

[list]: list_music_and_stories, list_script_sound_zaton, list_script_sound_jupiter, list_script_sound_pripyat, list_script_sound_underpass, list_script_sound_lokacja

Następnie dopisujemy dźwięk w konfigu. Trzeba go dopisać do listy i stworzyć jego sekcję. Np. chcemy dodać muzykę dla radia. Dopisujemy w konfigu to:

[list_script_sound_lokacja]
nasz_dźwięk

[nasz_dźwięk]
type = 3d
npc_prefix = false
path = music\nasz_dźwięk
shuffle = loop
idle = 0,0,100

Parametry z sekcji:

  • Type
    • Actor - określa dźwięk odtwarzany od strony aktora. To dźwięki z PDA, wszelkiego rodzaju wiadomości SMS-owe, rozmowy pilotów - wszystko, czego potrzebujesz, aby grać bez utraty głośności od usunięcia źródła. Za inicjalizację i odtworzenie dźwięku odpowiada skryptowa klasa actor_sound.
    • 3D - określa dźwięk odtwarzany przez obiekty. Skryptowa klasa object_sound odpowiada za inicjalizację i odtwarzanie dźwięku.
    • NPC - określa dźwięk odtwarzany przez NPC. Skryptowa klasa npc_sound odpowiada za inicjalizację i odtwarzanie dźwięku.
  • Path - ścieżka do dźwięku w folderze “sounds”
  • npc_prefix - jeśli “true” i “type = aktor” lub “false” i “type = npc”, to do wartości ścieżki do dźwięku zostanie dodane “characters_voice” na początku. Jeśli true i type = npc, to zostanie dodane coś w rodzaju “character_voice\human_01\bandit”, to znaczy zawartość npc:sound_prefix(). Wartość domyślna to false.
  • Shuffle -wartością domyślną jest rnd.
    • rnd - wybiera losowy plik z tablicy dźwięków
    • seq - odtwarza w kolejności do końca stołu,
    • loop - tak samo jak seq, przeskakuje po końcu tablicy tylko do pierwszego dźwięku w tablicy dźwięków. Wartość domyślna to 3,5,100.
  • idle - trzy liczby oddzielone przecinkami. Parametry odtwarzania dźwięku
    • Pierwsza wartość - minimalny odstęp między dźwiękami.
    • Druga wartość - maksymalny interwał (w sekundach).
    • Trzecia wartość - prawdopodobieństwo, z jakim dźwięk zostanie odtworzony, gdy nadejdzie jego czas.

Parametry z Wiki

“I to wszystko. Następnie wykorzystujemy dźwięk do własnych celów, odtwarzamy go za pomocą logiki lub skryptów lub umieszczamy w SDK.”

ŹRÓDŁO:

https://ap-pro.ru/forums/topic/245-добавляем-новый-звук/

@Wojownik Jestem w trakcie tłumaczenia moda Чужой среди чужих Epizod 2.
Problemem nie jest samo tłumaczenie ale to, że autor wprowadził takie rozwiązanie
w którym dialogi są tylko czytane. Nie ma do nich zapisów w plikach tekstowych.
I w większości sytuacji pomaga operowanie na plikach:
gamedata\configs\misc\closecaption.ltx
Przykładowy wpis:

["characters_voice-scenario-escape-tot_sidor"] = {-4, 4000, "ui_inGame2_Hero", "stalker", "Bumer"},
gamedata\configs\text\pol\st_closecaption.xml
<string id="characters_voice-scenario-escape-tot_sidor">
<text>
Ten sam Sidorowicz, o którym mi mówili? Interesujące...
</text>
</string>

To rozwiązanie działa w przypadku wiadomości przychodzących - wychodzących, dialogów, komentarzy ale nie zawsze.
Wyświetlenie napisów w takim rozwiązaniu związane jest z rozpoczęciem odtwarzania pliku audio tot_sidor.ogm
Są jednak takie miejsca gdzie dźwięk (zanim pojawi się np. dialog) jest odtwarzany 7 sek.
Tu taki przykładowy problematyczny plik eto_kto_tam.ogg:

Spoiler

Tekst musiałby być wyświetlany przez 24 sek.
Żeby to dobrze wyszło trzeba podzielić plik na cztery części.

Spoiler




I pytanie jak zmusić moda, żeby odtwarzał 3 nowe pliki i wyświetlał do tego tekst ?
eto_kto_tam_1.ogg
eto_kto_tam_2.ogg
eto_kto_tam_3.ogg
Wpis w gamedata\configs\misc\closecaption.ltx

["characters_voice-scenario-escape-eto_kto_tam_1"]    = {-4, 11000, "ui_inGame2_Hero", "stalker", "Bumer"}, 
["characters_voice-scenario-escape-eto_kto_tam_2"]    = {-4, 3000, "ui_inGame2_Hero", "stalker", "Bumer"},  
["characters_voice-scenario-escape-eto_kto_tam_3"]    = {-4, 2000, "ui_inGame2_Hero", "stalker", "Bumer"},

Wpis w gamedata\configs\text\pol\st_closecaption.xml

<string id="characters_voice-scenario-escape-eto_kto_tam_1>
        <text>
        Text Text Text Text Text Text Text Text Text
        </text>
    </string> 

<string id="characters_voice-scenario-escape-eto_kto_tam_2>
        <text>
        Text Text Text Text Text Text Text Text Text
        </text>
    </string> 
<string id="characters_voice-scenario-escape-eto_kto_tam_3>
        <text>
        Text Text Text Text Text Text Text Text Text
        </text>
 </string>

W pliku script_sound_escape.ltx
dodałem nazwy plików
eto_kto_tam_1.ogg
eto_kto_tam_1.ogg
eto_kto_tam_1.ogg
i skopiowałem wpis

[eto_kto_tam]
type = actor
npc_prefix = false
path = characters_voice\scenario\escape\eto_kto_tam
shuffle = seq
idle = 0,0,100

x3 ze zmienianym [eto_kto_tam] na [eto_kto_tam_1] potem z dwójką i trójką
i zmienianymi ścieżkami
path = characters_voice\scenario\escape\eto_kto_tam
na
path = characters_voice\scenario\escape\eto_kto_tam_1 potem z dwójką i trójką

Wszystkie wpisy powodują to, że pierwszy plik jest poprawnie odtwarzany (tu nie powinno być napisów).
Potem jest cisza brak napisów ale po odpowiednim czasie potrzebnym na odtworzenie _1 _2 _3,
mod działa i akcja toczy się normalnie dalej.
Używanie do rozwiązania problemu pliku game_tutorials.xml nie wchodzi w grę.

Nie wiem czy dobrze powiązałem problem z tematem wątku?
A piszę ogólnie bo może ktoś jeszcze coś od siebie doda.
W załączniku dwa pliki na których pracuję.

closecaption.ltx (279 Bytes)

st_closecaption.xml (4.62 KB)

3 polubienia