Formate muzicale în jocuri

Muzica a devenit incredibil de integrată în alte forme de artă și activitate umană. Astăzi, nici un singur film sau joc nu este complet fără o coloană sonoră, un program radio fără jingle și un nou single al trupei tale preferate (și cea mai puțin preferată), fără lansarea unui videoclip însoțitor. De asemenea, se întâmplă că ascultătorului îi place muzica „integrată” mai mult decât opera în care este integrată. În acest caz, apare o întrebare logică: este cu adevărat necesar să deschideți un film sau să lansați un joc care îl conține de fiecare dată pentru a auzi o melodie captivantă? Ei bine, nu, ar fi bine să scoatem acest cântec.

Extragerea sunetului dintr-un fișier video este o sarcină banală și poate fi implementată în mai multe moduri. Pentru a face acest lucru, majoritatea utilizatorilor, încercând să se mulțumească cu mijloacele la îndemână, extrag pista audio a fișierului folosind un întreg lanț de programe: VirtualDub > mp3DirectCut > Lame/Wav2Mp3. Alții, dimpotrivă, pun în scenă un profesionist Editor Adobe Audiție, folosind singura sa funcție - extragerea sunetului din video. Ei bine, și niște tăieturi din când în când. Prima metodă poate fi comparată cu turnarea apei de băut dintr-o sticlă într-un pahar folosind un filtru, distilator și pâlnie, iar a doua poate fi comparată cu ciocănirea cuielor cu un microscop. Prin urmare, tu și cu mine vom folosi cel mai convenabil și varianta corecta- Programul Easy Video To Audio Converter (vezi CG nr. 33). Instalați-l și deschideți fișierul de care aveți nevoie. Folosind bara de căutare, fereastra previzualizareși butoanele Ora de început și Ora de sfârșit, selectați fragmentul videoclipului din care doriți să extrageți sunet (de exemplu, o melodie dintr-un film). Faceți clic pe Setări și specificați directorul în care va fi salvat fișierul audio final și calitatea exportului. Puteți completa etichetele id3, deși numele compoziției (dacă există doar unul) va trebui să fie introdus mai târziu. OK, totul sa terminat acum. Faceți clic pe Conversie și așteptați rezultatul. Trebuie spus că dacă utilizați o versiune neînregistrată a programului, atunci acest rezultat este puțin probabil să vă mulțumească: programul convertește doar jumătate din segmentul pe care îl specificați.

Pentru a extrage pista audio a unui DVD, cel mai bine este să utilizați programul special conceput #1 DVD Audio Ripper (www.dvdtox.com/dvdaudioripper.htm, 29 USD, 1,96 MB), care în multe privințe seamănă cu Video To descris mai sus Audio Converter. Deci, instalați și rulați programul, introduceți discul în unitate și faceți clic pe Open Folder IFO Files Stored pentru a deschide toate informațiile audio și video conținute pe disc sau Open IFO File pentru a selecta un anumit fișier IFO (sau dacă este copia DVD-ului se află pe hard disk). Acum, folosind previzualizarea, selectăm și bifăm melodiile de care avem nevoie. Dacă un grup conține mai multe piese și aveți nevoie doar de unele dintre ele, trebuie să debifați caseta de lângă grupul în sine - altfel programul îl va prelua mai întâi în întregime, într-un singur fișier și abia apoi începe să lucreze la piesele pe care le aveți selectat. Folosind butonul Editați ora de începere și de sfârșit, puteți selecta fragmentul piesei care vă interesează. Specificați formatul de export (wav, mp3, ogg sau wma), completați etichetele dacă doriți și configurați calitatea fișierului de ieșire în fereastra Setări. Acum puteți face clic în siguranță pe Start Ripping și puteți aștepta rezultatul. Versiunea neînregistrată #1 DVD Audio Ripper are o limitare lungime maxima fragment audio salvat - nu mai mult de cinci minute.

Filme flash

Cel mai eficient instrument pentru extragerea unei melodii preferate (sau orice altă resursă) dintr-un videoclip Flash poate fi considerat programul Sothink SWF Decompiler (www.sothink.com, 80 USD, 3,2 MB). Odată instalat, pur și simplu selectați videoclipul dorit în Explorer și selectați Sothink SWF Decomplier din meniul pop-up. Același rezultat poate fi obținut prin lansarea imediată a programului și găsirea videoclipului în panoul Explorer. Panoul Resurse afișează acum toate resursele care pot fi extrase dintr-un clip. Dacă sunteți interesat doar de muzică, deschideți fila Sunet, ascultați elementele acesteia și bifați casetele de lângă cele pe care doriți să le extrageți. Dacă doriți să eliminați unele elemente din videoclip, altele decât sunete, trebuie doar să studiați conținutul celorlalte file. Când ați terminat, faceți clic pe Export, specificați calea de salvare și bucurați-vă de rezultat. O altă caracteristică utilă a SWF Decomplier este exportul unui film SWF în formatul FLA „nativ”.

Jocuri

Extragerea sunetelor, precum și a altor resurse, din jocurile pe calculator este un proces care necesită de obicei răbdare. Diverși dezvoltatori Ele rezolvă problema stocării datelor în moduri diferite și, prin urmare, nu există o modalitate universală de a lucra cu jocuri și nu poate exista: fiecare produs trebuie să-și găsească propria abordare. Care ar putea fi aceste abordări? Ei bine, de exemplu, dacă vorbim despre un joc cu adevărat popular, de exemplu, GTA: San Andreas sau NFS: Underground, atunci probabil că a fost creat pentru el un utilitar special care despachetează fișiere muzicale. Verificați site-ul fanilor jocului și probabil veți găsi tot ce aveți nevoie și puțin mai mult. De exemplu, la gta.gameguru.ru/f_gta_sa_tools.htm puteți descărca programul de despachetare GTA SA Music Extractor, care, cu o dimensiune de 50 KB, va înlocui coloana sonoră originală de opt discuri prin simpla decriptare a fișierelor audio ale jocului. Așa că ai răbdare, deschide Google - și steagul va fi în mâinile tale.

Nu ați găsit un dispozitiv de despachetare pentru jocul care vă interesează? În acest caz, programele intră în joc scop general. În primul rând, încercați să utilizați utilitarul Gap (după nume și patronimic - Game Audio Player, www.ag.ru/files/software/9, 1,09 MB, freeware) - deoarece, după cum înțelegeți deja, este special conceput pentru extragerea muzicii. Gap nu are un program de instalare (se arată descendența sa rusă), așa că trebuie doar să selectați un folder convenabil și să despachetați programul acolo. După cum puteți înțelege lansând Game Audio Player, este de fapt un music player, deși nu foarte funcțional: o încercare de a porni egalizatorul ne trimite către un viitor cronologic nedefinit, dar evident luminos, și actualul rege al tuturor formatelor muzicale. - mp3 - nu este un player acceptat. Dar sunt acceptate o mare varietate de alte formate, a căror existență majoritatea jucătorilor nici măcar nu o cunosc. Facem clic pe pictograma Playlist și vedem că, în ciuda caracterului primitiv al playerului încorporat, Gap este un program destul de flexibil.

Dacă fișierele de date experimentale ale jocului sunt într-o formă clară, dar nu pot fi citite de jucătorul dvs., încercați să le deschideți aici: Fișier > Adăugați fișiere sau Fișier > Adăugați director dacă doriți să adăugați toate fișierele înțelese de program într-un anumit folder în lista de redare. Dacă sunetele pe care le căutați sunt împachetate în unul sau mai multe arhive mari, utilizați comanda Fișier > Scanați fișiere. Dacă nu știți în ce fișier este stocată muzica, verificați întregul folder de joc folosind elementul Scan Directory. Opțiunea Recursă subdirectoare afectează dacă subfolderele vor fi scanate la scanarea directorului selectat. Cel mai probabil va trebui să-l activați. Deci, dacă aveți noroc, după ce scanarea este completă, Gap vă va oferi o listă cu obiectele găsite. Pentru a asculta un fișier, faceți dublu clic pe el. Acum selectați fișierele pe care doriți să le salvați și utilizați comanda Fișier > Salvare fișier(e). Dacă formatul audio al jocului se dovedește a fi exotic pentru jucătorul dvs., veți găsi utilă capacitatea încorporată a programului de a converti orice fișier audio în WAV: Fișier > Conversie fișier(e). Ca format WAV, puteți selecta fie PCM (pentru a-l comprima ulterior în mp3), fie codecuri care comprimați deja, cum ar fi OggVorbis și Windows Media Audio.

Ei bine, dacă Game Audio Player nu v-a ajutat, treceți la următorul punct al planului. Programul Magic Extractor (magicteam.ag.ru/files.html, 943 KB, freeware) nu are ca scop exclusiv extragerea audio, ci este destinat despachetării întregului fișier de joc. Magic Extractor acceptă destul de multe formate și în total poate fi folosit cu succes în aproape 200 de jocuri. În partea stângă a ferestrei programului, puteți seta calea către folderul cu jocul și puteți selecta fișierele care vă interesează (dacă deschideți folderul, dar nu vedeți niciun fișier de selectat, înseamnă că sunteți din nou cu ghinion, iar jocul tau nu este printre cei sustinuti). Dacă totul a mers bine, în partea dreaptă a ferestrei va apărea o listă de obiecte împachetate cu o vizualizare de categorie. Făcând clic pe fișierul dorit, apelați elementul „Extrage obiectul selectat” din meniul pop-up. Adevărat, la despachetarea unor tipuri de arhive - de exemplu, MPQ-ul Blizzard - nu veți vedea nici categoriile și nici măcar extensiile fișierelor pe care le conțin. Va trebui să scoți totul și să cauți un ac într-un car de fân. Pe de altă parte, Gap-ul descris mai sus se descurcă perfect cu același MPQ - trebuie doar să îi oferiți o listă de fișiere de arhivă, iar aceste liste pentru cele mai cunoscute jocuri care stochează date în MPQ sunt incluse în distribuție.

Nu dispera sub nicio formă dacă eșecul ți se întâmplă și aici. Puteți încerca să utilizați un „universal”, adică nu destinat unui anumit joc sau jocuri, unpacker, care este, de exemplu, FMV Extractor (site web, 537 KB, freeware). Programul acceptă 12 dintre cele mai comune formate media de jocuri - cum ar fi Bink și Smacker Video, JPEG, WAV etc. Selectați dosarul original(Selectați fișierul sursă) și începeți scanarea (Start Analysis). Examinați lista rezultată, marcați obiectele de care aveți nevoie și faceți clic pe Salvare clipuri selectate. Atenție: căutarea fișierelor mp3 în FMV Extractor este în faza de testare, în principal pentru că algoritmul actual de recunoaștere a acestora necesită, ca să spunem ușor, mult timp. Modul de căutare mp3 este activat astfel: BETA > Modul MP3. Fișierele de alte formate nu vor fi recunoscute în acest mod. Pentru a căuta resurse în jocurile vechi, poate fi util utilitarul Ripper, scris cu mult timp în urmă de un iubitor german de divertisment interactiv: website (56 KB). Programul cunoaște aproximativ 60 de formate de fișiere diferite, dintre care multe nu sunt folosite în jocurile moderne și nu sunt recunoscute de dezvoltări similare lansate ulterior. Adevărat, ca și în cazul tuturor dispozitivelor de despachetare universale, fișierele criptate devin o piatră de poticnire pentru Ripper, iar „rațele”, adică fragmentele luate din greșeală pentru fișiere, nu sunt, de asemenea, neobișnuite atunci când le folosesc. Încă două bune despachetator universal poate fi găsit aici: multiex.xentax.com și www.geocities.com/TimesSquare/8271. Utilizarea ambelor programe este destul de transparentă, așa că nu ne vom opri asupra ei.

Chiar dacă toate aceste mijloace nu v-au condus la rezultatul dorit, nu vă supărați. Vizitați site-ul www.extractor.ru, care este în întregime dedicat extragerii de date din jocuri. Există o mare varietate de utilități atât universale, cât și speciale, care cel mai probabil vă vor putea rezolva problema. Ei bine, cei cărora nu le deranjează traficul, timpul sau banii nu trebuie să încerce să elimine ei înșiși muzica din joc. OST (coloana sonoră originală) pentru multe jocuri poate fi acum comandată pe site-ul oficial al dezvoltatorilor sau în magazinele populare de muzică, descărcată prin peer-to-peer sau, de exemplu, aici: www.game-ost.ru.

Înregistrare directă

Dacă metodele descrise mai sus nu v-au ajutat să vă atingeți obiectivul sau sarcina specifica pur și simplu lăsat nesupravegheat (să zicem, doriți să înregistrați un program de radio pe internet), apoi rămâne ultima metoda, pe care îl puteți folosi. Constă în înregistrarea din mers, pe măsură ce este redată. Această metodă poate fi considerată o extremă, deoarece, în primul rând, sunetul este comprimat de două ori (dacă sursa audio este deja comprimată și îl salvați din nou în mp3 sau ogg) și, prin urmare, își pierde calitatea și, în al doilea rând, înțelegeți că dacă înregistrați un program de jumătate de oră în acest fel, veți avea nevoie de o jumătate de oră pentru a o face. Pentru înregistrarea directă, puteți utiliza FairStars Recorder (www.fairstars.com, 25 USD, 1,8 MB) sau Total Recorder (www.highcriteria.com, 18 USD, 2,3 MB). Mai întâi, pregătiți sunetul pentru înregistrare (porniți radioul; deschideți DVD-ul cu singurul program care îi poate citi coloana sonoră exotică; opriți efectele din joc, setați muzica la maximum și apăsați pe pauză). Selectați AUX al plăcii de sunet ca sursă de înregistrare și începeți înregistrarea.

Sfat
1. Cel mai simplu mod de a comprima un fișier WAV în mp3 este să descărcați (dacă nu îl aveți, verificați) codificatorul gratuit Lame de la www.free-codecs.com/Lame_Encoder_download.htm (600 KB) și să îl utilizați. Dacă sunteți mulțumit de calitatea mp3 implicită (128 Kbps 44.100 Hz), pur și simplu trageți piesa în WAV la fisier executabil lame.exe. În caz contrar, apelați codificatorul de la Linie de comanda cu parametrii necesari (lista se poate obtine astfel: lame - ajutor).
2. Dacă jocul de care sunteți interesat își stochează fișierele în formă deschisă, dar folosește un format exotic pentru asta pe care nici Winamp nu îl recunoaște, încercați să încercați un format scump program profesional Awave Studio (www.fmjsoft.com/awmain.shtml, 140 USD, 1,6 MB) este un instrument puternic care poate converti aproape toate formatele audio.

Multă baftă!

Mihail Fedotov, cunoscut și ca $ky$pe@R, [email protected], Minsk, 2006

Cultura modificării jocului datează din cele mai vechi timpuri. Cel mai vechi pe care mi-l amintesc este Wolfenstein 3D (1992). Dacă nu mă înșel, ați putea să vă desenați propriile hărți și apoi noi inamici, să înlocuiți texturi și sunete. Principalul obstacol în modding este analiza formate necunoscute date. Să lăsăm aspectele morale ale acestui fenomen pentru alte resurse și să ne concentrăm asupra dificultăților tehnice care pot apărea în această problemă dificilă.

Am acumulat destul de multe povești de acest gen, de la cele mai simple, precum analizarea unei arhive simple în care sunt stocate multe mii de fișiere de joc într-un singur fișier, până la înlocuirea modelelor 3D, cercetarea și scrierea de codecuri de sunet non-standard. Vă spun una dintre ele, de complexitate medie.

Să presupunem că aveți dorința de a înlocui anumite fraze în joc sau chiar încercați să acționați vocal complet într-o limbă pentru care dezvoltatorii nu au puterea sau resursele. S-ar părea că trebuie doar să înregistrați sunetul, să găsiți unde se află în joc și să înlocuiți fișierele necesare. Dar acest lucru nu este întotdeauna ușor, de exemplu, în ultimele jocuri din seria Batman: Arkham folosește motorul de sunet wwise, care a fost integrat în Unreal Engine de ceva timp.

Am întâlnit UE de mai multe ori, dar după cum știți, dezvoltatorii comerciali au capacitatea de a schimba complet orice parte a codului motorului, așa că aproape toate jocurile se dovedesc a fi unice în ceea ce privește structurile de date, iar acest lucru este întotdeauna interesant. a explora.

Mai întâi, să ne uităm la fișierele de sunet. Ca de obicei, acestea se află în folderul audio și sunt colectate într-un pachet mare, cu o extensie neașteptată.WAD (bună ziua DOOM). Dacă doriți, puteți chiar să extrageți toate sunetele din acesta, dar vor fi câteva mii de fișiere fără nume, iar găsirea a ceva printre ele va fi foarte problematică, cu excepția cazului în care le ascultați „manual” pe toate. Trebuie să spun că de cele mai multe ori este mai simplu. Dezvoltatorii, pentru confortul lor, lasă undeva un fișier cu o listă de fraze. Dar nu este cazul.

Este logic să presupunem că, deoarece jocul în sine găsește cumva sunetele și subtitrările necesare pentru ele, înseamnă că aceste informații sunt conținute în fișiere undeva, trebuie doar să le găsiți. Textele nu se găsesc nicăieri în folderele de localizare, ceea ce înseamnă că sunt împrăștiate pe nivelurile individuale ale jocului, așa cum se întâmplă adesea. Să luăm ca exemplu unul dintre fișierele .upk cu un nume similar nivelului și să-l despachetăm. Din fericire, există instrumente pentru aceasta, chiar și cu textele sursă.

În interior, sunt descoperite rapid fișiere de tip .RDialogueEvent, în care textele frazelor în 11 limbi sunt vizibile cu ochiul liber.

Numele fișierelor sunt similare cu numele sunetelor originale. Grozav, acum nu mai rămâne decât să găsim o potrivire între ele și fișierele de sunet. Aici încep problemele. Desigur, există identificatori în pachetul de sunet. Acesta este un hash de 30 de biți care este întotdeauna folosit în wwise pentru sunete, dar, din păcate, acestea nu pot fi găsite nicăieri printre fișierele de dialog. Peste tot există doar numere de neînțeles, nu există nimic asemănător cu un ID de sunet, ar fi imediat vizibile. Pe de altă parte, acest lucru este de înțeles, deoarece motorul nu este atât de simplu și nu puteți pur și simplu să luați și să redați un fișier de sunet în joc. Este conținut în banca audio, are multe proprietăți care impun diverse efecte etc.

Și apoi se dovedește că în fiecare folder cu dialog există un fișier.akbank - se pare că aceasta este banca audio wwise.

Are o mulțime de identificatori în interior și, după ce le-am încercat la întâmplare, constatăm că unul dintre ei (evidențiat cu verde) se află în pachetul de sunet. Dacă extragem date de acolo folosind acest identificator, vom obține un anumit segment de mai multe sunete lipite împreună. Să convertim aceste sunete din formatul wwise intern în ogg obișnuit. Da, într-adevăr, într-una dintre ele Batman spune: „Nu am timp pentru asta”, iar într-un alt fișier îi răspund. Și frazele corespund exact textelor acestui dialog special.

Nu e rău deja! În principiu, ne-am fi putut opri aici: toate dialogurile sunt aranjate în foldere, pentru fiecare dintre ele există o bancă cu link către segmentul audio. Desigur, nu știm unde este fiecare fișier, dar putem tăia un segment în părți, putem asculta și plasa mai multe fraze în locurile lor (și de obicei sunt doar 3-4 în dialoguri) manual.

Dar nu căutăm căi ușoare. Înțelege-l până la sfârșit. Să verificăm, pentru orice eventualitate, ce se întâmplă dacă sunetele vin în ordine? Bineînțeles că nu, sunt confuzi. Orice s-ar spune, undeva trebuie să existe informații despre legătura dintre sunetele din segment și textul dialogului. Am căutat de ceva vreme fișiere diferite, în speranța de a descoperi ceva, dar totul este inutil. Amenda. Deoarece acesta este cazul, să despachetăm toate pachetele de joc. Sunt câțiva gigaocteți, ei bine, nimic, prima dată sau ce? Doar asta căutare completă Conform tuturor datelor din joc, nu a dat nimic. Singurul loc unde există identificatori de sunet este banca audio. Se pare că legătura trece doar prin el. Nu poți face nimic, va trebui să te urci înăuntru și să-ți dai seama cum funcționează.

Acum, pentru a fi sigur, haideți să găsim niște dialoguri în joc pe care le puteți verifica rapid. După o introducere spectaculoasă cu o reporteră fermecătoare și un spectacol de măști, Batman este capturat de Hugo Strange. El spune câteva fraze care încep cu „Simt că ar trebui să-ți mulțumesc”, apoi pleacă și jocul începe. Aici are loc prima salvare. Acest moment este potrivit pentru noi.

Să găsim fraza răufăcătorului în dosare. Se termină în pachetul OW_E8_Ch1z_Anim. Deci nu vei ghici imediat. Există un singur dialog în interior, care conține întregul început al jocului. Sunt 24 de fraze grozave, dar poate că este un lucru bun într-un amestec de coduri, este mai ușor să găsești numărul 24 decât 1 sau 2. Deci, urma să studiem conținutul .akBank;

Formatul băncilor wwise a fost deja parțial explorat. Să sperăm că aceste informații sunt suficiente pentru scopul nostru. Judecând după începutul fișierului .akbank, acesta conține 5 bănci audio pentru 5 limbi, prima este banca INT (engleză) - ne vom uita la el.

În primul rând, există un tabel de neînțeles după antetul VKRK, apoi destul de multe zerouri (acest lucru poate fi văzut în imaginea anterioară), apoi segmentul BKHD și apoi segmentul HIRC, care, aparent, conține o descriere a întregului sunet. obiecte. În acest caz, avem 79 dintre ele (0x4F este evidențiat în verde). După cum se arată în descriere, obiectele din segment merg unul după altul, pentru fiecare este indicat tipul (1 octet), apoi lungimea de 32 de biți și ID-ul. Lungimea și conținutul unui obiect diferă în funcție de tip.

Obiectele de tip 2 sunt sunetele reale. Tipul este evidențiat cu roșu, lungime - galben. Fiecare dintre ele indică ID-ul obiectului în sine (verde) și ID-ul fișierului de sunet (violet) în care este conținut. Mai jos puteți vedea începutul următorului obiect de același tip.

Obiectele 3 - acțiuni sonore, se pare că fiecare dintre ele este „reda un sunet”, cu niște parametri necunoscuți, dar fiecare dintre ele are propriul ID (gri) și ID-ul sunetului care trebuie să fie redat efectiv (verde). ).

Obiectele 4 - evenimente sonore. Intrări foarte scurte care conțin doar ID-ul evenimentului (albastru) și indică, de asemenea, că conține o singură acțiune și ID-ul acestei acțiuni (gri).

Ei bine, se pare că avem 24 de lanțuri de evenimente ca acesta:

Eveniment -> acțiune -> sunet

Acestea sunt legate prin identificatori și ajung la linkuri către fișiere de sunet. Cum să găsiți fișierele necesare? După ce am căutat aceste coduri, le găsim exact în același tabel de la începutul băncii. Se pare că acesta este un tabel care înregistrează unde sunt situate sunetele individuale într-un segment de sunet. Și într-adevăr, conține exact 24 de elemente, iar pentru fiecare fișier sunt indicate același ID pe care l-am avut în obiectul sonor, offset-ul față de început și lungimea. Felicitări! Acum avem o conexiune complet trasabilă de la evenimente audio din bănci la sunete individuale fisiere s:

Adică, ca intrare avem ID-urile mai multor evenimente, câte unul pentru fiecare frază de dialog, iar pentru fiecare dintre ele putem găsi un fișier de sunet. Dar cum le putem conecta acum cu dialogul în sine?

Să încercăm să căutăm acești identificatori undeva. Din nou, nu sunt în fișierele de dialog. Există, de asemenea, câteva fișiere .akevent foarte scurte în folder - sunt și 24 dintre ele. Evident, acestea sunt fișiere de evenimente audio. Sunt niște numere mici înăuntru, la fel pentru toată lumea, nu sunt de folos. Singurul lucru care este diferit acolo este id-ul evenimentelor audio pe care le-am găsit în bancă.

Un alt punct mort: există identificatori pentru toate evenimentele, dar nu există nicio legătură între acestea și textul dialogului! Pentru orice eventualitate, haideți să facem un test: schimbați ID-ul în fișierul necesar și lansați jocul. Da, într-adevăr, Hugo deschide gura, dar nu spune nimic. Aceasta înseamnă că acestea sunt exact datele prin care găsește jocul sunetul potrivit. În același timp, observăm că subtitrarea este încă afișată. Aceasta înseamnă că textele dialogurilor în cazul nostru sunt primare, iar sunetul provine deja din ele.

Și apoi îmi amintesc că motorul UE3 are obiceiul de a se referi la obiectele pachetului prin numărul lor de secvență din pachet, adică exact cum sunt ambalate în el. Să ne uităm la fișierul de export care este generat atunci când despachetăm pachetele:

Numerele de aici sunt zecimale și încep de la zero, dar în joc încep de la 1, așa că se dovedește că fișierele de evenimente din export sunt numerotate 0x35-0x4С. Să vedem dacă sunt undeva printre dialoguri. Începem să căutăm - și wow, chiar la începutul dosarului există acest număr!

Iată ultimul link lipsă. În același timp, găsim 0x2C în apropiere - acesta este numărul fișierului bancar. Dacă dintr-o dată există mai multe dialoguri într-un folder, ele pot fi de asemenea distinse. Acum știm pe deplin cum să găsim sunetul corespunzător din textul dialogului.

Aceasta s-a dovedit a fi o schemă de interacțiune destul de complexă. Se pare că dezvoltatorii au decis să nu le pese de comoditate și pur și simplu s-au bazat pe mecanismele interne ale motorului, ceea ce a dus la acest rezultat în acest caz. Și cazurile, așa cum am spus deja, sunt foarte diferite. Structura fișierelor și conexiunile dintre ele pot fi complet diferite. Aici aveam un link de la textul dialogului la sunet. Dar se întâmplă invers, sunetul primar este sunetul, iar textul se află lângă el prin identificator. Sau evenimentul de scenariu al jocului este principal și de la acesta există link-uri atât către sunet, cât și către text. Se întâmplă ca fișierele să fie localizate nu după nume, ci după hash. Dar, în orice caz, cumva sunt toate conectate, tot ce rămâne este să găsim această legătură.

Ca o ultimă atingere, să încercăm să ne verificăm rezultatele. Să găsim fișierul de dialog exact din expresia „Simt că ar trebui să vă mulțumesc” de care avem nevoie și să înlocuim 4B cu 4C în el. Începem jocul, iar prietenul nostru Hugo, în loc de această frază, spune cu sens: „Va fi moștenirea mea, un monument al eșecului tău și dacă încerci să mă oprești, garantez că toată lumea îți va ști secretul.”

Să-l lăsăm pe Batman la asta, studiul poate fi considerat finalizat. În formă scrisă, procesul pare rapid, dar în realitate, fiecare etapă poate fi însoțită de o lungă contemplare a cifrelor hexazecimale, fără nicio speranță că la un moment dat vor forma lanțuri semnificative și vei înțelege ce înseamnă. Dar uneori asta se mai întâmplă.

Cultura modificării jocului datează din cele mai vechi timpuri. Cel mai vechi pe care mi-l amintesc este Wolfenstein 3D (1992). Dacă nu mă înșel, ați putea să vă desenați propriile hărți și apoi noi inamici, să înlocuiți texturi și sunete. Principalul obstacol în modding este analizarea formatelor de date necunoscute. Să lăsăm aspectele morale ale acestui fenomen pentru alte resurse și să ne concentrăm asupra dificultăților tehnice care pot apărea în această problemă dificilă.

Am acumulat destul de multe povești de acest gen, de la cele mai simple, precum analizarea unei arhive simple în care sunt stocate multe mii de fișiere de joc într-un singur fișier, până la înlocuirea modelelor 3D, cercetarea și scrierea de codecuri de sunet non-standard. Vă spun una dintre ele, de complexitate medie.

Să presupunem că aveți dorința de a înlocui anumite fraze în joc sau chiar încercați să acționați vocal complet într-o limbă pentru care dezvoltatorii nu au puterea sau resursele. S-ar părea că trebuie doar să înregistrați sunetul, să găsiți unde se află în joc și să înlocuiți fișierele necesare. Dar acest lucru nu este întotdeauna ușor, de exemplu, cele mai recente jocuri din seria Batman: Arkham folosesc motorul de sunet wwise, care a fost integrat în Unreal Engine de ceva timp.

Am întâlnit UE de mai multe ori, dar după cum știți, dezvoltatorii comerciali au capacitatea de a schimba complet orice parte a codului motorului, așa că aproape toate jocurile se dovedesc a fi unice în ceea ce privește structurile de date, iar acest lucru este întotdeauna interesant. a explora.

Mai întâi, să ne uităm la fișierele de sunet. Ca de obicei, acestea se află în folderul audio și sunt colectate într-un pachet mare, cu o extensie neașteptată.WAD (bună ziua DOOM). Dacă doriți, puteți chiar să extrageți toate sunetele din acesta, dar vor fi câteva mii de fișiere fără nume, iar găsirea a ceva printre ele va fi foarte problematică, cu excepția cazului în care le ascultați „manual” pe toate. Trebuie să spun că de cele mai multe ori este mai simplu. Dezvoltatorii, pentru confortul lor, lasă undeva un fișier cu o listă de fraze. Dar nu este cazul.

Este logic să presupunem că, deoarece jocul în sine găsește cumva sunetele și subtitrările necesare pentru ele, înseamnă că aceste informații sunt conținute în fișiere undeva, trebuie doar să le găsiți. Textele nu se găsesc nicăieri în folderele de localizare, ceea ce înseamnă că sunt împrăștiate pe nivelurile individuale ale jocului, așa cum se întâmplă adesea. Să luăm ca exemplu unul dintre fișierele .upk cu un nume similar nivelului și să-l despachetăm. Din fericire, există instrumente pentru aceasta, chiar și cu textele sursă.

În interior, sunt descoperite rapid fișiere de tip .RDialogueEvent, în care textele frazelor în 11 limbi sunt vizibile cu ochiul liber.

Numele fișierelor sunt similare cu numele sunetelor originale. Grozav, acum nu mai rămâne decât să găsim o potrivire între ele și fișierele de sunet. Aici încep problemele. Desigur, există identificatori în pachetul de sunet. Acesta este un hash de 30 de biți care este întotdeauna folosit în wwise pentru sunete, dar, din păcate, acestea nu pot fi găsite nicăieri printre fișierele de dialog. Peste tot există doar numere de neînțeles, nu există nimic asemănător cu un ID de sunet, ar fi imediat vizibile. Pe de altă parte, acest lucru este de înțeles, deoarece motorul nu este atât de simplu și nu puteți pur și simplu să luați și să redați un fișier de sunet în joc. Este continut in banca audio, are multe proprietati care impun diverse efecte etc.

Și apoi se dovedește că în fiecare folder cu dialog există un fișier.akbank - se pare că aceasta este banca audio wwise.

Are o mulțime de identificatori în interior și, după ce le-am încercat la întâmplare, constatăm că unul dintre ei (evidențiat cu verde) se află în pachetul de sunet. Dacă extragem date de acolo folosind acest identificator, vom obține un anumit segment de mai multe sunete lipite împreună. Să convertim aceste sunete din formatul wwise intern în ogg obișnuit. Da, într-adevăr, într-una dintre ele Batman spune: „Nu am timp pentru asta”, iar într-un alt fișier îi răspund. Și frazele corespund exact textelor acestui dialog special.

Nu e rău deja! În principiu, ne-am fi putut opri aici: toate dialogurile sunt aranjate în foldere, pentru fiecare dintre ele există o bancă cu link către segmentul audio. Desigur, nu știm unde este fiecare fișier, dar putem tăia un segment în părți, putem asculta și plasa mai multe fraze în locurile lor (și de obicei sunt doar 3-4 în dialoguri) manual.

Dar nu căutăm căi ușoare. Înțelege-l până la sfârșit. Să verificăm, pentru orice eventualitate, ce se întâmplă dacă sunetele vin în ordine? Bineînțeles că nu, sunt confuzi. Orice s-ar spune, undeva trebuie să existe informații despre legătura dintre sunetele din segment și textul dialogului. Am petrecut destul de mult timp săpat prin diverse fișiere, sperând să descopăr ceva, dar totul a fost inutil. Amenda. Deoarece acesta este cazul, să despachetăm toate pachetele de joc. Sunt câțiva gigaocteți, ei bine, nimic, prima dată sau ce? Dar o căutare completă a tuturor datelor jocului nu a găsit nimic. Singurul loc unde există identificatori de sunet este banca audio. Se pare că legătura trece doar prin el. Nu poți face nimic, va trebui să te urci înăuntru și să-ți dai seama cum funcționează.

Acum, pentru a fi sigur, haideți să găsim niște dialoguri în joc pe care le puteți verifica rapid. După o introducere spectaculoasă cu o reporteră fermecătoare și un spectacol de măști, Batman este capturat de Hugo Strange. El spune câteva fraze care încep cu „Simt că ar trebui să-ți mulțumesc”, apoi pleacă și jocul începe. Aici are loc prima salvare. Acest moment este potrivit pentru noi.

Să găsim fraza răufăcătorului în dosare. Se termină în pachetul OW_E8_Ch1z_Anim. Deci nu vei ghici imediat. Există un singur dialog în interior, care conține întregul început al jocului. Sunt 24 de fraze grozave, dar poate că este un lucru bun într-un amestec de coduri, este mai ușor să găsești numărul 24 decât 1 sau 2. Deci, urma să studiem conținutul .akBank;

Formatul băncilor wwise a fost deja parțial explorat. Să sperăm că aceste informații sunt suficiente pentru scopul nostru. Judecând după începutul fișierului .akbank, acesta conține 5 bănci audio pentru 5 limbi, prima este banca INT (engleză) - ne vom uita la el.

În primul rând, există un tabel de neînțeles după antetul VKRK, apoi destul de multe zerouri (acest lucru poate fi văzut în imaginea anterioară), apoi segmentul BKHD și apoi segmentul HIRC, care, aparent, conține o descriere a întregului sunet. obiecte. În acest caz, avem 79 dintre ele (0x4F este evidențiat în verde). După cum se arată în descriere, obiectele din segment merg unul după altul, pentru fiecare este indicat tipul (1 octet), apoi lungimea de 32 de biți și ID-ul. Lungimea și conținutul unui obiect diferă în funcție de tip.

Obiectele de tip 2 sunt sunetele reale. Tipul este evidențiat cu roșu, lungime - galben. Fiecare dintre ele indică ID-ul obiectului în sine (verde) și ID-ul fișierului de sunet (violet) în care este conținut. Mai jos puteți vedea începutul următorului obiect de același tip.

Obiectele 3 - acțiuni sonore, se pare că fiecare dintre ele este „reda un sunet”, cu niște parametri necunoscuți, dar fiecare dintre ele are propriul ID (gri) și ID-ul sunetului care trebuie să fie redat efectiv (verde). ).

Obiectele 4 - evenimente sonore. Intrări foarte scurte care conțin doar ID-ul evenimentului (albastru) și indică, de asemenea, că conține o singură acțiune și ID-ul acestei acțiuni (gri).

Ei bine, se pare că avem 24 de lanțuri de evenimente ca acesta:

Eveniment -> acțiune -> sunet

Acestea sunt legate prin identificatori și ajung la linkuri către fișiere de sunet. Cum să găsiți fișierele necesare? După ce am căutat aceste coduri, le găsim exact în același tabel de la începutul băncii. Se pare că acesta este un tabel care înregistrează unde sunt situate sunetele individuale într-un segment de sunet. Și într-adevăr, conține exact 24 de elemente, iar pentru fiecare fișier sunt indicate același ID pe care l-am avut în obiectul sonor, offset-ul față de început și lungimea. Felicitări! Acum avem o conexiune complet trasabilă de la evenimente audio din bănci la fișiere de sunet individuale:

Adică, ca intrare avem ID-urile mai multor evenimente, câte unul pentru fiecare frază de dialog, iar pentru fiecare dintre ele putem găsi un fișier de sunet. Dar cum le putem conecta acum cu dialogul în sine?

Să încercăm să căutăm acești identificatori undeva. Din nou, nu sunt în fișierele de dialog. Există, de asemenea, câteva fișiere .akevent foarte scurte în folder - sunt și 24 dintre ele. Evident, acestea sunt fișiere de evenimente audio. Sunt niște numere mici înăuntru, la fel pentru toată lumea, nu sunt de folos. Singurul lucru care este diferit acolo este id-ul evenimentelor audio pe care le-am găsit în bancă.

Un alt punct mort: există identificatori pentru toate evenimentele, dar nu există nicio legătură între acestea și textul dialogului! Pentru orice eventualitate, haideți să facem un test: schimbați ID-ul în fișierul necesar și lansați jocul. Da, într-adevăr, Hugo deschide gura, dar nu spune nimic. Aceasta înseamnă că acestea sunt exact datele prin care jocul găsește sunetul dorit. În același timp, observăm că subtitrarea este încă afișată. Aceasta înseamnă că textele dialogurilor în cazul nostru sunt primare, iar sunetul provine deja din ele.

Și apoi îmi amintesc că motorul UE3 are obiceiul de a se referi la obiectele pachetului prin numărul lor de secvență din pachet, adică exact cum sunt ambalate în el. Să ne uităm la fișierul de export care este generat atunci când despachetăm pachetele:

Numerele de aici sunt zecimale și încep de la zero, dar în joc încep de la 1, așa că se dovedește că fișierele de evenimente din export sunt numerotate 0x35-0x4С. Să vedem dacă sunt undeva printre dialoguri. Începem să căutăm - și wow, chiar la începutul dosarului există acest număr!

Iată ultimul link lipsă. În același timp, găsim 0x2C în apropiere - acesta este numărul fișierului bancar. Dacă dintr-o dată există mai multe dialoguri într-un folder, ele pot fi de asemenea distinse. Acum știm pe deplin cum să găsim sunetul corespunzător din textul dialogului.

Aceasta s-a dovedit a fi o schemă de interacțiune destul de complexă. Se pare că dezvoltatorii au decis să nu le pese de comoditate și pur și simplu s-au bazat pe mecanismele interne ale motorului, ceea ce a dus la acest rezultat în acest caz. Și cazurile, așa cum am spus deja, sunt foarte diferite. Structura fișierelor și conexiunile dintre ele pot fi complet diferite. Aici aveam un link de la textul dialogului la sunet. Dar se întâmplă invers, sunetul primar este sunetul, iar textul se află lângă el prin identificator. Sau evenimentul de scenariu al jocului este principal și de la acesta există link-uri atât către sunet, cât și către text. Se întâmplă ca fișierele să fie localizate nu după nume, ci după hash. Dar, în orice caz, cumva sunt toate conectate, tot ce rămâne este să găsim această legătură.

Ca o ultimă atingere, să încercăm să ne verificăm rezultatele. Să găsim fișierul de dialog exact din expresia „Simt că ar trebui să vă mulțumesc” de care avem nevoie și să înlocuim 4B cu 4C în el. Începem jocul, iar prietenul nostru Hugo, în loc de această frază, spune cu sens: „Va fi moștenirea mea, un monument al eșecului tău și dacă încerci să mă oprești, garantez că toată lumea îți va ști secretul.”

Să-l lăsăm pe Batman la asta, studiul poate fi considerat finalizat. În formă scrisă, procesul pare rapid, dar în realitate, fiecare etapă poate fi însoțită de o lungă contemplare a cifrelor hexazecimale, fără nicio speranță că la un moment dat vor forma lanțuri semnificative și vei înțelege ce înseamnă. Dar uneori asta se mai întâmplă.

Formate muzicale în jocuri
Shiru (A.Semenov) mailto:shiru at mail dot ru

În procesul de dezvoltare a unui joc, mai devreme sau mai târziu apare întrebarea - ce formate să folosiți pentru a stoca datele jocului. Scop această recenzie este de a lua în considerare caracteristicile, avantajele și dezavantajele formate populare acompaniament muzical în jocuri, astfel încât, pe baza informațiilor primite, să se poată realiza alegere inteligentă ca parte a proiectului dumneavoastră. Nuanțele tehnice ale reproducerii (cum, cu ce) formatele menționate aici depășesc domeniul de aplicare al articolului și, prin urmare, nu sunt discutate aici.

În mod convențional, putem împărți formatele folosite pentru stocarea muzicii în două grupe: streaming audio, care conține pista audio finală (adică doar sunet), eventual comprimată pentru a-i reduce dimensiunea; și formatele muzicale în sine, care stochează un set de instrucțiuni despre când și ce notă să cânte, plus sunete (eșantioane) cu care aceste note ar trebui să fie redate. Mai întâi, să ne uităm la caracteristicile acestor două grupuri.

Streaming audio

Nu este cu adevărat un format muzical - este sunetul așa cum este, înregistrat într-un fișier. Dar acel sunet ar putea foarte bine să fie muzică, așa că, în sensul acestui articol, streaming audio este, de asemenea, un format muzical. Se numește streaming deoarece fișierul nu trebuie să fie prezent în întregime în memorie - este suficient să citiți bucăți mici de pe suport, să le decodați (dacă este necesar) și să-l trimiteți pentru redare. Streamingul audio vine cu sau fără compresie.

Formatele audio de streaming necomprimate nu sunt utilizate în mod obișnuit pentru a stoca muzică în jocuri din cauza dimensiunilor lor enorme: o secundă de audio stereo de calitate CD (44100hz, 16 biți) ocupă 172 de kiloocteți. Excepția anterior a fost CD-DA, formatul CD audio. Însă jocurile cu muzică în acest format nu s-au văzut în ultimii ani - întotdeauna există ceva care să umple cei câțiva, după standardele moderne, megaocteți de discuri CD/DVD.

Formatele audio comprimate sunt mai potrivite pentru aplicațiile de jocuri. Există algoritmi de compresie audio fără nicio pierdere de calitate (așa-numiții algoritmi lossyless), dar câștigul lor în volum este extrem de nesemnificativ, deci cele mai comune formate de compresie cu pierdere de calitate (algoritmi cu pierderi). Algoritmi populari de compresie care oferă câștiguri mari în volum dosar final, utilizați ideea „codării psihoacustice” - excluderea dinamică a frecvențelor din semnal care sunt slab percepute de auzul uman. De obicei, se alege un nivel de pierdere care abia este vizibil pentru ureche. Algoritmii de compresie audio funcționează de obicei cu un raport de compresie fix, pentru jocuri, acesta este de obicei aproximativ 11:1...7:1 (flux de date 128...192kb/s). Există un număr mare de formate de compresie audio, dar cele mai cunoscute și utilizate dintre ele sunt MP3, WMA, OGG.

MP3 este cel mai vechi format, foarte comun. A apărut inițial ca format de compresie pistă audio pentru videoclipuri în format VideoCD (nume complet MP3 - Audio MPEG Stratul III), dar a început rapid să fie folosit singur. MP3 este acum standardul industriei. Folosirea fișierelor audio comprimate în MP3 în proiecte comerciale de jocuri cu un tiraj de peste 5.000 de exemplare costă bani - 2.500 USD per produs (licență de joc, pentru mai multe informații despre licențiere, vezi linkurile de la sfârșitul articolului). Astăzi MP3-ul nu oferă cea mai bună performanță în ceea ce privește raportul dimensiune/calitate. Versiunile îmbunătățite ale formatului MP3 - MP3pro, de exemplu - cu indicatori similari cu WMA/OGG, nu au câștigat prea multă popularitate.

WMA - Windows Media Audio, un format promovat de Microsoft ca o alternativă mai avansată la MP3, este aproximativ similar ca capabilități cu formatul OGG. Utilizarea sa în produse software stocarea conținutului audio nu necesită licență.

OGG - relativ format nou compresia audio este de cel mai mare interes pentru dezvoltatorii de jocuri. Nu necesită nicio licență și este complet legal pentru utilizare gratuită; în același timp, oferă o calitate superioară a sunetului, cu aceeași dimensiune ca MP3, sau o dimensiune mai mică, cu aceeași calitate a sunetului. Adevărat, decodarea OGG necesită puțin mai multe resurse de calcul decât MP3/WMA. Codificatoarele și decodoarele software de la creatorul formatului (Vorbis) sunt distribuite ca sursă deschisă.

Avantajele utilizării în flux audio pentru a stoca muzică:

  • Puteți stoca muzică de absolut orice nivel tehnic. În această privință acest format universale și potențial (în special cu compresie cu pierderi reduse) capabile să ofere cea mai buna calitate sunet
  • Muzicienii tăi nu sunt limitați de capacitățile formatului și pot folosi instrumentele pentru a crea muzică care sunt convenabile pentru ei (adică, va fi ușor să găsești un muzician potrivit)
  • Nu necesită mult memorie cu acces aleatorîn timpul redării (fluxul de date este citit de pe media în porțiuni mici)
Minusuri:
  • Pentru unele aplicații, dimensiunea audio chiar și comprimat poate fi prea mare - o compoziție de lungime medie la o calitate decentă durează 3-5 megaocteți (când se utilizează formate comprimate)
  • Reducerea dimensiunii se poate face doar prin reducerea semnificativă a calității (creșterea pierderilor de compresie) și reducerea lungimii compozițiilor.
  • Durata unei piese depinde direct de dimensiunea fișierului său
  • Decodarea sunetului comprimat necesită resurse relativ mari ale procesorului și este posibil să nu fie posibilă pe platforme cu consum redus fără un decodor hardware (în timp real)

Formate muzicale

Formatele muzicale în sine sunt formate care nu conțin sunetul final, ci doar informații despre cum să îl obțineți. Adică, informații despre când și ce note să cânte cu ce sunete (și - opțional - aceste sunete în sine). Datorită acestui fapt, este posibil să se obțină un câștig semnificativ în cantitatea de informații stocate (dimensiunea fișierului). Sunetul final (pe care jucătorul îl va auzi) este obținut direct în timpul procesului de redare a muzicii. Acest lucru ocupă unele resurse de calcul, dar în general încărcarea nu este mai mare decât decodarea audio comprimat în flux și, de obicei, chiar mai puțin (redarea formatelor de muzică poate fi făcută accelerare hardware; pe un PC, de exemplu, suportul hardware necesar este mult mai frecvent decât suportul hardware necesar pentru decodarea audio comprimată).

Formatele muzicale impun unele restricții asupra libertății de creativitate a unui muzician - o parte lungă vocală sau instrumentală înregistrată live, de exemplu, nu poate fi inserată - mai precis, va fi neprofitabilă, deoarece va duce la o creștere a dimensiunii fișierului și va fi mai convenabil să utilizați streaming audio. Pentru muzică „live” (orchestră simfonică, trupă rock etc.) trebuie neapărat să utilizați streaming audio. Formatele muzicale sunt potrivite numai pentru imitaţie muzică live (pentru cazurile în care sunetul imitației devine acceptabil datorită unui câștig semnificativ în dimensiunea fișierului) sau pentru muzică electronică. Este aproape imposibil să se realizeze asemănarea absolută în sunetul unei compoziții într-un format muzical cu muzică live sunt posibile doar diferite grade de aproximare. După cum arată practica, această limitare nu este un dezavantaj serios.

Formatele muzicale utilizate în jocuri pot fi împărțite în două subgrupe: MIDI și familia de formate de urmărire (așa-numitele module de urmărire, uneori numite și simplu module). Principala diferență dintre aceste două subgrupuri este că fișierele MIDI standard conțin doar note, în timp ce modulele de urmărire, pe lângă note, stochează mostre care sunt folosite pentru a suna aceste note. Diferențele rămase se referă în principal la unele restricții care își impun propriile specificități atunci când scriu muzică.

Un punct important: atât formatele MIDI, cât și formatele tracker nu necesită licență pentru a fi utilizate într-un produs comercial.

Formate muzicale: MIDI

MIDI (Musical Instruments Digital Interface) este o interfață hardware, precum și un standard care descrie procesul de schimb de date muzicale între instrumentele muzicale electronice. Datele muzicale nu sunt sunet, ci sunt, pentru a spune foarte simplu, doar informații despre tastele sintetizatorului apăsate/eliberate. MIDI sunt, de asemenea, standarde pentru stocarea acestor informații în fișiere (cele mai cunoscute opțiuni sunt .mid, .midi). MIDI poate fi numit, într-o oarecare măsură, un „format de muzică în flux”, deoarece... pentru a-l reda, nu este nevoie să aveți întreg fișierul în memorie - îl puteți citi bucată cu bucată, așa cum este cazul în cazul streamingului audio. Dar aceasta este singura asemănare între aceste formate.

Mulți utilizatori de PC, auzind cuvântul „midi”, spun cu dispreț ceva de genul „oh, acestea sunt fișiere atât de mici, cu muzică groaznică” (în special cei care au încă plăci de sunet rare fără sintetizatoare WaveTable de înaltă calitate). Este important să înțelegeți că sunetul unei compoziții înregistrate într-un fișier MIDI este sunetul unui sintetizator din computerul dvs. prin care este redat conținutul fișierului, calitatea sunetului depinde direct de calitatea sintetizatorului; Puțini oameni știu că MIDI este utilizat pe scară largă în crearea muzicii electronice profesionale (inclusiv pentru crearea muzicii pentru jocuri, pentru înregistrarea ulterioară în format audio).

ÎN în prezent singurul principiu de funcționare folosit pentru sintetizatoarele MIDI pe un PC este așa-numitul. Sinteza WaveTable. Adică există un set (bancă) de sunete ale diferitelor instrumente (descrise de standard, cel puțin 128 de instrumente și 64 de sunete de tobe), sintetizatorul reproduce note cu aceste sunete. Sunetele instrumentelor nu sunt stocate în fișierul MIDI, iar băncile de instrumente de la diferiți producători de plăci de sunet pot diferi (nu în compoziția instrumentelor, ci în caracteristicile sunetului lor). Prin urmare, cu diferite bănci de instrumente, sunetul aceluiași fișier MIDI se schimbă oarecum, ceea ce creează uneori o anumită problemă. O compoziție scrisă pentru o bancă poate suna prost cu alta (din cauza unui echilibru diferit al volumelor instrumentelor, de exemplu). Acest lucru impune și o limitare a libertății creatoare a muzicianului - acesta este limitat doar de acele timbre (instrumente) pe care standardul le descrie. Pe de altă parte, absența mostrelor de instrumente într-un fișier MIDI îi reduce foarte mult dimensiunea - o compoziție uriașă poate cântări doar 50-100 de kiloocteți și, în același timp, poate fi comprimată perfect de mai multe ori cu un ZIP obișnuit.

Există mai multe standarde MIDI compatibile cu înapoi - cel principal, General Midi (GM); prelungire de la Roland (GS); extensie mai avansată de la Yamaha (XG). Formatele extinse au un număr mare de instrumente în standard (minimum 226 pentru GS, minim 480 pentru XG - fără a număra tobele) și caracteristici suplimentare comenzi de sinteză a sunetului, prin care puteți diversifica și îmbunătăți calitatea sunetului.

Pentru a reda MIDI, aveți nevoie de un sintetizator MIDI în sistem - pe un computer poate fi o placă de sunet cu un sintetizator hardware WaveTable (GM/GS/XG, cu propria bancă de sunete) sau o placă de sunet simplă (cum ar fi AC"97) cu un sintetizator software (care consumă o parte din performanța sistemului; un sintetizator software GS cu o bancă de sunet standard este inclus în DirectX). Pe dispozitive precum telefoanele mobile, acesta poate fi un simplu sintetizator hardware (pentru sinteza software putere nu există încă dispozitive), și nu WaveTable, ci unul dintre ele. moduri alternative sinteza (de obicei sinteza FM), simulând foarte aproximativ sunetul instrumentelor.

Dacă în sistem nu există un sintetizator hardware și nu există suficiente resurse de procesor/memorie pentru sinteza software, este imposibil să redați MIDI pe un astfel de dispozitiv.

Pro:

  • Dimensiunea fișierului foarte mică
  • Când utilizați un sintetizator bun cu banca buna mostre - calitate ridicată a sunetului
  • Dacă aveți un sintetizator hardware, există o sarcină foarte mică pe CPU (playerul trimite doar comenzi la sintetizator)
  • Nu va fi greu să găsești un muzician care să știe să lucreze cu MIDI
Minusuri:
  • Dependența calității sunetului de sintetizatorul utilizat
  • Sunete diferite ale instrumentelor pe diferite sintetizatoare (muzica care sună bine pe un sintetizator poate suna groaznic pe altul, chiar dacă aceste sintetizatoare sunt de aceeași înaltă calitate)
  • O oarecare monotonie în sunetul oricărei muzici de pe același sintetizator (datorită faptului că banca de mostre pentru diferite compoziții de obicei nu se schimbă)

Formate muzicale: muzica tracker

Muzica în acest format se mai numește și „module”. Ca și în MIDI, fișierul stochează date despre note, dar pe lângă acestea, stochează și mostre care vor fi folosite pentru a suna notele atunci când sunt redate. Aici se termină asemănările - din punct de vedere tehnic, există mai multe diferențe decât asemănări între MIDI și muzica tracker. În ciuda ideii generale (de a stoca note mai degrabă decât sunetul final), implementările acestei idei variază foarte mult.

Tracker este un editor de muzică cu un anumit tip interfață (coloane verticale de numere și litere în loc de personalul muzical familiar muzicienilor). Trackerele au apărut cu mult timp în urmă, pe primele computere de acasă care aveau cele mai simple dispozitive pentru sinteza sunetului. Notele au fost sunate de hardware-ul sistemului (de exemplu, prin cipul SID de pe C64, prin cipul AY de pe ZX128). Trackerele care folosesc mostre pentru a suna notele au apărut la sfârșitul anilor 80 pe platforma AMIGA, iar mai târziu s-au răspândit pe toate celelalte platforme care au mijloacele de a reproduce sunetul digital.

Însuși principiul de funcționare a trackerelor impune anumite restricții asupra capacităților muzicianului, pe de altă parte, oferind capacități neobișnuite de control al sunetului. Spre deosebire de standardul MIDI profesional, acesta este un standard de amatori dezvoltat de pasionații de muzică pe computer, nu de producătorii de echipamente muzicale. Scrierea muzicii în trackere este diferită de lucrul cu secvențiere MIDI software profesionale. Principalele caracteristici ale trackerelor:

Cuantificare strictă a timpului - notele nu pot începe și nu se opresc să sune în orice moment, ci doar în anumite poziții (acest lucru face dificilă executarea unor efecte, de exemplu, interpretarea lin a unui acord de chitară);
- Lipsa polifoniei pe un singur canal (pistă), pot suna simultan exact atâtea note câte canale sunt în pistă;
- Prezența „efectelor” - comenzi care afectează procesul de redare a fiecărei note individuale. Efectele pot fi destul de obișnuite (din punct de vedere muzical) - vibrato, control volum, portamento; și nu chiar obișnuite - deplasarea începutului eșantionului, gestionarea filtrelor etc.

În ciuda unor limitări (comparativ cu MIDI), stocarea mostrelor într-un fișier melodie dă avantaje evidente- capacitatea de a utiliza orice timbre necesare, fragmente de părți interpretate „live” (riff-uri de chitară, bucle de tobe) - acest lucru vă permite să îmbunătățiți calitatea sunetului și să îl apropiați de „sunetul live”.

Există un numar mare de formate de urmărire - de regulă, fiecare nou editor pe lângă faptul că acceptă câteva dintre cele mai populare formate, avea și propriul său format. Formatele diferă în ceea ce privește capabilitățile și organizarea datelor în fișier, dar ideea generală rămâne aceeași. Cele mai populare sunt patru formate care au devenit standard (suportate de aproape toți editorii): MOD simplu (Sound Tracker/Pro Tracker) și S3M (Scream Tracker) și XM (Fast Tracker) și IT (Impulse Tracker) mai avansate.

Primul format de tracker - MOD (de la cuvântul modul, motiv pentru care muzica tracker se numește module) - avea capacități modeste: 4 canale, maximum 15 instrumente (doar mostre de 8 biți, plus posibilitatea unei bucle simple în un eșantion), un set slab de efecte. Mai târziu, a apărut o modificare MOD cu capacitatea de a folosi 31 de instrumente și 8 canale.

S3M extinde oarecum capacitățile MOD - în special, puteți utiliza până la 32 de canale și un număr crescut de efecte. Dar formatul eșantionului este încă limitat la 8 biți.

XM și IT oferă posibilități mult mai mari de creativitate și o calitate semnificativ mai mare a sunetului. Un număr mare de canale (în funcție de editor și suport din partea playerului), un număr mare de efecte, mostre pe 16 biți (pot fi redate fie direct, fie într-o buclă bidirecțională), 64 de instrumente. Instrumentele din XM/IT nu sunt sinonime cu un eșantion - este o descriere a probelor de utilizat pentru anumite game de note ale instrumentului (așa-numitele straturi, acest lucru este necesar pentru a îmbunătăți calitatea simulării instrumentelor vii) , volumul și plicul panoramic și alți parametri.

Redarea MOD/S3M necesită puțin mai puține resurse CPU decât redarea XM/IT mai complexă. Sarcina CPU depinde și de numărul de canale din modul și de algoritmul de interpolare utilizat în timpul mixării (calitatea sunetului depinde foarte mult de calitatea interpolării).

Fișierele muzicale tracker pot varia de la sute de octeți la câțiva megaocteți. Dimensiunea fișierului depinde direct de numărul și calitatea mostrelor utilizate. În medie, un modul care sună mai mult sau mai puțin decent (de orice durată) necesită 200-500 de kiloocteți.

Pentru a reduce volumul ocupat de muzică în joc, puteți stoca mai multe melodii într-un singur fișier, folosind aceleași mostre de instrument în ele. Capacitățile trackerelor vă permit să organizați mai multe fragmente în buclă în cadrul unei compoziții, în joc puteți reda o astfel de piesă, pornind din diferite poziții în cadrul acesteia;

Există modificări ale formatelor standard de urmărire folosind compresia mostrelor folosind OGG/MP3. Acestea sunt formatele MO3 (combină formatele IT/XM/S3M/MTM/MOD) și OXM (XM standard, dar folosind OGG pentru ambalarea mostrelor). Ambele formate folosesc compresia numai pentru acele mostre pentru care oferă un avantaj de dimensiune. Comprimarea probelor duce la o reducere semnificativă a spațiului ocupat pe disc cu o scădere aproape insesizabilă a calității. Eșantioanele sunt stocate comprimate doar într-un fișier atunci când modulul este încărcat, ele sunt extinse în memorie, astfel încât redarea unor astfel de module în sine nu crește sarcina CPU, dar modulul în timpul redării va ocupa aceeași cantitate de RAM ca și un unul despachetat. Utilizarea compresiei probei poate fie să reducă pur și simplu dimensiunea fișierului, fie să îmbunătățească calitatea sunetului fără a modifica dimensiunea (datorită utilizării mostrelor de calitate superioară). Este posibil ca această tehnologie să nu fie potrivită pentru utilizarea pe platforme cu putere redusă - decodificarea (încărcarea) probelor poate dura prea mult.

Pro:

  • Poate oferi cel mai bun raport dimensiune/calitate, când dimensiunea fișierului muzical este foarte limitată (100-500kb)
  • Creșterea duratei unei compoziții crește foarte puțin dimensiunea fișierului
Minusuri:
  • Formatele de urmărire nu sunt la fel de flexibile precum streaming audio
  • Modulul care este redat ocupă RAM (relevant pentru sistemele cu o cantitate limitată de RAM, de exemplu, unele PDA-uri)
  • O abordare destul de nestandardă a scrierii muzicii, diferită de notația muzicală convențională, aceasta complică dezvoltarea tracker-urilor pentru muzicienii „obișnuiți”.

Ce sa aleg?

Familiarizându-ne cu specificul diferitelor formate muzicale, putem trece în sfârșit la problema reală a alegerii celui mai potrivit în cadrul unui anumit proiect. În primul rând, trebuie să determinați criteriile de selecție: ce capacități are platforma pe care rulează jocul dvs., ce limitări tehnice disponibil. În special, volumul de muzică ocupat pe media și, la redare, RAM este critic? Încărcarea procesorului este critică? Există capabilități hardware pentru redarea muzicii (decodor MP3, sintetizator MIDI).

Este rezonabil să folosiți streaming audio atunci când nu există restricții stricte privind spațiul ocupat pe suport și există suficientă putere CPU pentru decodare (sau există un decodor hardware). De asemenea, dacă trebuie să creați un aranjament muzical de foarte înaltă calitate (exemple: posturi de radio din serie jocuri GTA; muzică live înregistrată), pur și simplu nu există alte opțiuni decât streaming audio. Marele avantaj al acestui format este că nu există probleme cu abilitățile (sau lipsa acestora) de a folosi diverse echipamente și programe ale muzicienilor tăi - aceștia pot folosi liber acele instrumente care sunt cele mai convenabile pentru ei, deoarece rezultatul poate fi întotdeauna înregistrat într-un fișier audio.

Dacă există restricții stricte privind cantitatea de memorie ocupată, este mai bine să ne gândim la formatele muzicale - MIDI sau muzică tracker. Trebuie să alegeți între aceste două direcții pe baza capacității de a reda formate pe platforma țintă (MIDI pe Palm sau GBA, să zicem, nu puteți reda mult) și a limitărilor de dimensiunea fișierului. Capacitățile muzicienilor tăi joacă, de asemenea, un rol important (de când au creat muzica de calitateîn aceste formate necesită anumite aptitudini).

În zilele noastre este popular să se folosească, în condiții de limitare severă a cantității de memorie de pe medii (de obicei jocuri shareware pe un computer) alocate pentru muzică, fragmente de un-două minute de streaming audio (de obicei OGG) la o calitate foarte scăzută (de la 56 kbps și mai jos, la 22050 hz mono - aceasta este aproximativ 500-600 kilobytes). În astfel de cazuri, merită să ne gândim la posibilitatea de a utiliza formate de urmărire - în acest caz, puterea procesorului este suficientă pentru redare, dar în același timp sau dimensiune mai mică fișier, puteți obține un sunet de calitate semnificativ mai ridicat, mai curat (poate mai puțin plin de viață - dar aici totul depinde de priceperea muzicianului).

Dacă proiectul este pe un PC, iar spațiul pentru muzică este foarte limitat (să zicem, 500 de kiloocteți pentru întreaga compoziție muzicală), te poți gândi să folosești fișiere MIDI în loc de streaming audio și module de urmărire. Problema diferitelor sunete la utilizarea diferitelor bănci de sunet poate fi rezolvată prin utilizarea sintetizatorului MIDI software DirectX - Microsoft Software GS MIDI Synthezer. Folosește banca GS de trei megaocteți care vine cu DirectX și, dacă scrieți o pistă MIDI special pentru acest sintetizator, puteți obține un sunet foarte decent cu un consum minim de memorie pentru design muzical (500 de kiloocteți pot încăpea cu ușurință o duzină de 5 dezambalați). -Fișiere MIDI de 10 minute). De asemenea, puteți utiliza propriul sintetizator MIDI software sau propria bancă DLS - în acest caz veți obține toate beneficiile lucrului cu muzica prin MIDI și capacitatea de a folosi propriile timbre, caracteristice formatelor de tracker.

Pe PDA-uri și dispozitive portabile console de jocuri Cel mai potrivit format acum este muzica tracker (formatul specific este selectat în funcție de puterea procesorului) - volumul media, spre deosebire de puterea procesoarelor, nu a crescut încă până la posibilitatea de a utiliza în mod liber audio streaming în jocuri .

În concluzie, vreau să spun că alegerea formatului muzical nu ar trebui să fie limitată de capacitățile tale. implementare software jucător. Există un număr mare de biblioteci gata făcute (atât plătite, cât și gratuite) pentru a reda toate formatele enumerate pentru toate platformele pe care acest lucru poate fi implementat în hardware.

site-ul vă prezintă al doilea material din seria noastră dedicat sunetului în jocurile moderne. De data aceasta vom arunca o privire mai atentă asupra profesiei de designer de sunet și a procesului de creare a unui mediu sonor.

Profesie de designer de sunet

Jocurile moderne conțin mii de sunete. Unele dintre ele sunt aproape de neobservat, altele par a fi ceva de la sine înțeles, altele uimesc imaginația și ne fac să credem în ceea ce se întâmplă pe ecran. În spatele tuturor acestor lucruri se află un designer de sunet - un specialist în designul de sunet și zgomot al unui joc video.

Profesia de designer de sunet a venit în industria jocurilor de noroc din lumea cinematografiei. În 1979, regizorul Francis Ford Coppola l-a numit pentru prima dată pe Watler Murch în acest fel pentru realizările sale remarcabile în filmarea dramei de război Apocalypse Now. Din punct de vedere ideologic, rădăcinile designului sonor se întorc în vremuri mult mai străvechi: efectele sonore de scenă erau folosite în teatrul antic.

Sarcinile unui designer de sunet de joc sunt multiple: includ menținerea mecanicii de joc, crearea atmosferei și imaginii emoționale, furnizarea de informații și crearea de feedback. În ciuda faptului că am împrumutat tehnologii cheie, designul sunetului jocului este foarte diferit de designul sunetului cinematografic. Filmul este liniar și nu interactiv. Piesa audio pentru aceasta se formează o dată și nu se schimbă cu fiecare nouă vizionare. În jocuri totul este complet diferit: acompaniament sonor este asamblat din mers în funcție de acțiunile jucătorului, iar aceleași sunete pot fi repetate de mai multe ori, redate în buclă și redate în medii acustice diferite. Prin urmare, designerii de sunet pentru jocuri trebuie să monitorizeze în mod constant compatibilitatea sunetelor între ele și să ia în considerare toate opțiunile posibile pentru reproducerea lor.

Proces

Lucrarea la sunet începe cu scrierea unei explicații - un plan detaliat care acoperă toate aspectele posibile ale punctajului unui joc viitor. Acest document poate avea câteva zeci de pagini și servește drept ghid pentru întreaga echipă audio. Explicația conține o descriere a sunetelor jocului, informații despre natura lor, formatele audio, tehnologiile prioritare, caracteristicile platformei și ale motorului.

Apoi vine primul etapa practică Munca designerilor de sunet constă în înregistrarea sunetelor și zgomotelor individuale. Unele dintre ele pot fi înregistrate într-un studio, altele necesită o echipă audio pentru a merge pe teren.

Mențiune specială merită tehnica de scoring Foley - una dintre numeroasele moșteniri ale industriei cinematografice. În audio pentru jocuri, esența sa se rezumă la simularea unor sunete în detrimentul altora care sunt mai ușor de obținut. Luptele, de exemplu, s-au sunat istoric prin lovirea cu pumnul într-un pepene verde sau într-o bucată de carne și prin zdrobirea oaselor prin ruperea unui morcov sau zdrobirea unei pahar de plastic. Metoda de obținere a sunetului depinde în întregime de imaginația designerului de sunet. Unii oameni înregistrează sunetul menționat mai sus de scărșăminte de oase în timp ce bat o carcasă de pui cu un ciocan.

Următoarea etapă este modelarea sunetelor unice. Cum sună focul unui pistol cu ​​plasmă? Ce aude un personaj atunci când este scufundat într-o sursă de energie magică? Ce voce va avea creatura extraterestră cu șase picioare? Jocurile video sunt literalmente pline de obiecte care nu au analogi în lumea reală. Fiecare dintre ele trebuie să sune autentic și unic, ceea ce înseamnă că o simplă înregistrare a sunetului nu mai este suficientă. Sunetele realiste vor trebui accelerate și încetinite, „desfășurate” înapoi, combinate în mod repetat între ele, combinate cu timbre sintetizate și procesate cu lanțuri complexe de efecte. Numai imaginația nu este suficientă aici - va trebui să folosiți observația naturală. Trebuie să vă imaginați din ce elemente poate consta acest sau acel sunet, ce parte a obiectului îl poate produce și ce impresie trebuie să fie transmisă jucătorului prin acest sunet.

Deci, apropierea unui gigant robot umanoid va consta în scârțâituri de servo, zgomot metalic și bătăi puternice, scuturarea tuturor obiectelor din jur.

Nu toate sunetele trebuie înregistrate - adesea nu există suficient timp și buget pentru asta. Numeroase biblioteci cu o cantitate colosală de material audio vin în ajutorul unui designer de sunet. Utilizarea sunetelor „de bibliotecă” în forma lor pură într-un mediu profesional este considerată o formă proastă. Prin urmare, majoritatea designerilor de sunet se străduiesc să le facă unice, amestecându-le între ele și aplicând diferite tratamente.

Urmează etapa de integrare a sunetelor în codul de program al jocului - un proces care poate dura până la 70% din timpul de lucru al unui designer de sunet. În această etapă, sunetele sunt atribuite obiectelor de joc și sunt stabilite regulile pentru reproducerea și interacțiunea acestora.

De exemplu, avem un obiect de joc „mașină” care poate exploda. În ce caz va fi reprodus sunetul exploziei sale? Cât de departe se va auzi? Cât de important este pentru jucător? Cât de des vor exploda mașinile în joc? Va îneca discursul personajelor din joc? Va fi mai tare decât sunetele de focuri de armă și cum se va potrivi cu ele?

Aceasta este doar o mică parte din problemele care pot fi rezolvate în timpul integrării unui sunet din mii. În trecutul recent, situația a fost complicată și mai mult de faptul că pentru a înlocui fiecare sunet din joc a fost necesar să apelezi la programatori. Mijloace moderne precum Audiokinetic Wwise și FMOD Designer rezolvă această problemă permițând compozitorilor și designerilor de sunet să încorporeze ei înșiși orice fișiere audio și să automatizeze procesarea acestora.

Cuvânt de la experți

Peter Comley este designer de sunet la Microsoft Studios. De-a lungul anilor de muncă la companie, a participat la multe proiecte AAA, inclusiv serialele Fable, Gears of War și Halo.

„Sunt adesea întrebat ce face un designer de sunet în industria jocurilor de noroc. Să încercăm să ne imaginăm o jucărie ieftină pentru copii care scoate un sunet atunci când apăsăm un buton. Sunetul se poate schimba în funcție de forța de apăsare, dar, în general, acest lucru nu poate face nimic altceva. Treaba unui designer de sunet este să folosească totul fonduri disponibile(abilități de sunet, design de butoane, sistem de operare jucării, specificul difuzorului și chiar planul de producție) astfel încât utilizatorul să dorească să se joace cât mai mult timp. Ești ca un designer de jocuri, dar tot ce ai la dispoziție este sunetul. Mai mult, trebuie să faci jocul nu numai interesant, ci și captivant. Nu știu dacă acest lucru este bun sau rău, dar „dependența” este cea mai mare laudă pe care o poate primi orice joc.


Acesta, desigur, nu este cel mai realist exemplu: așa jocuri simple probabil ca nu exista. Dar esența muncii unui designer de sunet rămâne aceeași. Luați această situație, înmulțiți-i complexitatea cu un trilion de ori, adăugați tot felul de ornamente și imaginați-vă că sarcinile sunt în continuă schimbare. Acum ai o idee aproximativă despre cum este să faci design de sunet pentru un joc video modern major.”

Sam Cooper este designerul principal de sunet la Creative Assembly. A lucrat la audio, care a câștigat un premiu BAFTA pentru realizare în audio de joc. În plus, Sam a participat la dublarea mai multor jocuri din seria Total War.

„Uneori, tonul unui eveniment de joc este stabilit cu un sunet simplu de interfață de jumătate de secundă. Sau poți influența subconștient jucătorul cu zgomote atmosferice din mediu. Noi, designerii de sunet de jocuri, ne întrebăm mereu: „Ce ar trebui să simtă jucătorul în acest moment?”, „Cum putem susține aceste emoții?”.

La Creative Assembly, preferăm să înregistrăm noi înșine toate sunetele posibile. Este întotdeauna interesant – indiferent dacă lucrăm în teren sau în studio. Lucrul meu preferat este să înregistrez explozii și sunete de distrugere: este foarte incitant. Poate fi distractiv și în studio. De exemplu, când am înregistrat sunetele de dezmembrare pentru Alien: Isolation, aveam un set de microfoane și o grămadă de tot felul de fructe și legume. Ne-am petrecut toată ziua distrugându-le, scoțând tot felul de sunete dezgustătoare – ne-am murdărit foarte tare atunci.


Designul sunetului jocului este diferit de alte domenii ale industriei audio prin faptul că trebuie să ne gândim constant la interactivitate. Acest lucru afectează fiecare aspect al muncii noastre. Nu putem să mergem înainte și să facem unul. sunet perfect la un moment dat: audio trebuie să răspundă la o serie de evenimente posibile. O explozie, de exemplu, trebuie înregistrată ținând cont de materialele distruse și de dimensiunea încăperii. În același timp, sunt înregistrate mai multe opțiuni pentru fiecare situație, deoarece repetarea aceluiași sunet va obosi jucătorul.”

În articolul următor ne vom uita probabil la cel mai interesant aspect al sunetului jocului pentru mulți - muzica. Urmăriți actualizările de pe site-ul nostru. Puteți găsi prima parte a seriei noastre.