Перейти к содержимому
Zone of Games Forum
xoixa

Pacific Drive (утилиты для озвучки)

Рекомендованные сообщения

набор скриптов и инструментов для экспорта/импорта звука (для версии игры 1.1.4)

Pacific_Drive_VO_tools_1.2.zip

дополнение утилит

Для сжатия в формат wem необходимо предварительно установить audiokinetic wwise 2021.1.* (не включён в архив. скачать автономный установщик можно, например здесь (нужна регистрация) )

  1. Распаковать архив в папку PenDriverPro\Content\Paks\
  2. Запустить export.bat чтобы получить ogg файлы озвучки
  3. Переозвучить и сохранить в папку wav (озвученные файлы должны быть с теми же характеристиками что и оригиналы (имя, длительность, дискретизация, количество дорожек) в формате wav PCM s16)
  4. Запустить import.bat чтобы сжать wav и импортировать обратно в пак Запустить create_pak.bat чтобы сжать wav и создать pak с озвучкой

 

Скрытый текст

@echo off
REM Export wems
@echo It takes time to export all files. Be patient
@pause
quickbms pak2wem_meta.bms pakchunk0-WindowsNoEditor.pak

REM Rename wems to friendly name using filetable.txt
::%%1 size	%%2 mediaID	%%3 name	%%4 sha1	%%5 offset 1.1.1	%%6 offset 1.1.3	%%7 offset 1.1.4
for /f "tokens=1,2,3,4,5,6,7 delims=," %%1 in (filetable.txt) do IF exist wem\%%7.wem ren wem\%%7.wem %%3.%%7.wem 

REM Convert vo wems to ogg
mkdir ogg
for /f "tokens=1,2,3,4,5,6,7 delims=," %%1 in (filetable.txt) do IF exist wem\%%3.%%7.wem ww2ogg.exe —pcb packed_codebooks_aoTuV_603.bin wem\%%3.%%7.wem -o ogg\%%3.%%7.ogg

@echo Delete wem files? Close window now if you need them
@pause
del wem\*.wem
@pause

 

Скрытый текст

@echo off
REM Create ExternalSourcesList list.txt for WwiseCLI tool
echo ^<^?xml version=^"1.0^" encoding=^"UTF-8^"^?^> > list.txt
echo ^<ExternalSourcesList SchemaVersion=^"1^" Root=^"^"^> >> list.txt
for %%s in (wav\*.wav) do echo 	^<Source Path=^"%%~fs^" Conversion=^"Vorbis Quality High^" /^> >> list.txt
echo ^</ExternalSourcesList^> >> list.txt

REM Convert wavs to wem
"%WWISEROOT%\Authoring\x64\Release\bin\WwiseCLI.exe" dummy.wproj -ConvertExternalSources list.txt -ExternalSourcesOutput wem
RMDIR /S /Q .cache, Originals
del /A:h wem\Wwise.dat
del list.txt

REM Rename wems for importing using filetable.txt
::%%1 size	%%2 mediaID	%%3 name	%%4 sha1	%%5 offset 1.1.1	%%6 offset 1.1.3	%%7 offset 1.1.4
for /f "tokens=1,2,3,4,5,6,7 delims=," %%1 in (filetable.txt) do IF exist wem\%%3.%%7.wem ren wem\%%3.%%7.wem %%7.wem

REM inject metadata 
for %%a in (wem\*.wem) do IF exist wem\%%~na.meta quickbms -Y meta_inj.bms %%a

@echo Time to import
@pause
REM Import to pakchunk0-WindowsNoEditor.pak
quickbms -r -w pak2wem.bms pakchunk0-WindowsNoEditor.pak
@echo Delete wem folder?
RMDIR /S wem
@pause

 

Скрытый текст

//QuickBMS script for export/import wwise wem sound of Pcific Drive game
//to import use quickbms -r -w pak2wem.bms pakchunk0-WindowsNoEditor.pak

for 
findloc OFFSET binary "RIFF" 0 ""
if OFFSET == ""
	cleanexit
endif
goto OFFSET
idstring "RIFF"
get Size long

getDString check 4
if check != "WAVE"
	continue
endif

getDString fmt 4
get fmt long

math Size + 8
string Name P "wem/%OFFSET%.wem"
if fmt != 0x42
	//string Name P "fmt_%fmt%/%OFFSET%.wem"
	continue
endif
log Name OFFSET Size
math OFFSET + 4
goto OFFSET
next

 

Скрытый текст

//QuickBMS script for export wwise wem sound of Pacific Drive game

for 
	findloc OFFSET binary "RIFF" 0 ""
	if OFFSET == ""
		cleanexit
	endif
	goto OFFSET
	idstring "RIFF"
	get Size long

	getDString check 4
	if check != "WAVE"
		continue END
	endif

	getDString fmt 4
	get fmt long

	math Size + 8
	string Name P "wem/%OFFSET%.wem"
	if fmt != 0x42
		//string Name P "fmt_%fmt%/%OFFSET%.wem"
		continue END
	endif

	//Save metadata start
	log MEMORY_FILE 0 0
	log MEMORY_FILE OFFSET Size // write wem to memory file

	set MetaSize long 0
	set MetaOffset long 0x56 //skip RIFF and WAVE chunks(0x56)
	goto MetaOffset MEMORY_FILE

	for  
	get ChunkID long MEMORY_FILE
		if ChunkID = 0x61746164 // "data"
			string MetaName P "wem\%OFFSET%.meta"
				if MetaSize > 0
					//print "%OFFSET%.meta"
					log MetaName 0x56 MetaSize MEMORY_FILE //write meta to file
				endif
			break //end of metadata. exit cycle
		elif ChunkID = 0x4b4e554a // "JUNK"
			getdstring Unk 10 MEMORY_FILE
			get ChunkSize long MEMORY_FILE
			xmath MetaSize "MetaSize + 8 + 10 + ChunkSize"
			xmath Pos "MetaOffset + MetaSize"
			goto Pos MEMORY_FILE
		else
			get ChunkSize long MEMORY_FILE
			xmath MetaSize "MetaSize + 8 + ChunkSize"
			xmath Pos "MetaOffset + MetaSize"
			goto Pos MEMORY_FILE
		endif
	next
	//save metadata end

	log Name OFFSET Size //write wem to file
	label END
	math OFFSET + 4
	goto OFFSET
next

 

Скрытый текст

get Name basename 
open FDDE "meta" 1
get MetaSize asize 1

log MEMORY_FILE 0 0
get RIFF long
get WSize long
get WAVE long
get fmt long
get fmtSize long
xmath HeaderSize "20 + fmtSize"
goto HeaderSize
get Data long
if Data != 0x61746164 // "data"
string Name + ".error"
log Name 0 0
cleanexit
endif
xmath DataSize "WSize - fmtSize - 12"
log MEMORY_FILE 0 HeaderSize 
append
log MEMORY_FILE 0 MetaSize 1
log MEMORY_FILE HeaderSize DataSize
append 
math WSize + MetaSize
putVarChr MEMORY_FILE 4 WSize long
get Size asize MEMORY_FILE
string Name P "wem\%Name%.wem"
log Name 0 Size MEMORY_FILE

 

Скрытый текст

@echo off
::goto meta
REM Create ExternalSourcesList list.txt for WwiseCLI tool
echo ^<^?xml version=^"1.0^" encoding=^"UTF-8^"^?^> > list.txt
echo ^<ExternalSourcesList SchemaVersion=^"1^" Root=^"^"^> >> list.txt
for %%s in (wav\*.wav) do echo 	^<Source Path=^"%%~fs^" Conversion=^"Vorbis Quality High^" /^> >> list.txt
echo ^</ExternalSourcesList^> >> list.txt

REM Convert wavs to wem
"%WWISEROOT%\Authoring\x64\Release\bin\WwiseCLI.exe" dummy.wproj -ConvertExternalSources list.txt -ExternalSourcesOutput "pak_me\PenDriverPro\Content\WwiseAudio\Localized\English_US_\Media"
RMDIR /S /Q .cache, Originals
del /A:h pak_me\PenDriverPro\Content\WwiseAudio\Localized\English_US_\Media\Wwise.dat
del list.txt
:rename
REM Rename wems for importing using filetable.txt and Copy .meta to pak_me\PenDriverPro\Content\WwiseAudio\Localized\English_US_\Media\
::%%1 size	%%2 mediaID	%%3 name	%%4 sha1	%%5 offset 1.1.1	%%6 offset 1.1.3	%%7 offset 1.1.4
for /f "tokens=1,2,3,4,5,6,7 delims=," %%1 in (filetable.txt) do IF exist "pak_me\PenDriverPro\Content\WwiseAudio\Localized\English_US_\Media\%%3.%%7.wem" ren "pak_me\PenDriverPro\Content\WwiseAudio\Localized\English_US_\Media\%%3.%%7.wem" %%7.ubulk && copy wem\%%7.meta pak_me\PenDriverPro\Content\WwiseAudio\Localized\English_US_\Media\%%7.meta
:meta
REM inject metadata 
for %%a in (pak_me\PenDriverPro\Content\WwiseAudio\Localized\English_US_\Media\*.ubulk) do quickbms -Y meta_inj.bms %%a
del pak_me\PenDriverPro\Content\WwiseAudio\Localized\English_US_\Media\*.meta
:rename2
REM Rename wems for packing(MediaID) using filetable.txt
::%%1 size	%%2 mediaID	%%3 name	%%4 sha1	%%5 offset 1.1.1	%%6 offset 1.1.3	%%7 offset 1.1.4
for /f "tokens=1,2,3,4,5,6,7 delims=," %%1 in (filetable.txt) do IF exist "pak_me\PenDriverPro\Content\WwiseAudio\Localized\English_US_\Media\%%7.ubulk" ren "pak_me\PenDriverPro\Content\WwiseAudio\Localized\English_US_\Media\%%7.ubulk" %%2.ubulk
:size
for %%a in (pak_me\PenDriverPro\Content\WwiseAudio\Localized\English_US_\Media\*.ubulk) do quickbms -Y size.bms %%a
@echo Ready to pack
@pause
:pack
UnrealPak.exe "pakchunk5-WindowsNoEditor_VO.pak" -create=filelist.txt -compress
@echo _
@echo Done
@echo _
@echo Delete pak_me?
RMDIR /S pak_me
@pause

 

Скрытый текст

//quickbms script to fix ubulk size
//for %1 in (q00\*.ubulk) do quickbms -Y size.bms %1

get WavName basename
get WavSize asize //new size
Open "." filetable.txt 1 //original data
get TableSize asize 1

//read original data from filetable.txt and put it to array 0(size) and 1(names) and 2(mediaID)
open 1 //filetable.txt
for
getCT mediaSize string 0x2c
getCT mediaID string 0x2c
getCT mediaName string 0x2c
getCT O111 string 0x2c
getCT O113 string 0x2c
getCT O114 string 0x0D
get Dummu byte
savepos Pos
//print "%mediaSize% %mediaID% %mediaName%"
//print "%Pos% %TableSize%"
putarray 0 -1 mediaSize
putarray 2 -1 mediaID
putarray 1 -1 mediaName
if Pos = TableSize
break
endif
next
getarray ELEMENTS 0 -0x80000000 //get elements count in array 0(size)

//fix size
open 0 //new wav
for i = 0 < ELEMENTS
    getarray origSize 0 i
    getarray origName 1 i
    getarray origMID 2 i
    //print "wavSize origSize: %WavSize% %origSize%"
    if WavName == origMID
        log MEMORY_FILE 0 0
        xmath Delta "origSize - WavSize"
        if Delta < 0
            string Error P "File %WavName%.ubulk is bigger then original %origName%"
            put Error string MEMORY_FILE
            get Size asize MEMORY_FILE
            string Name P "%origMID%_error.txt"
            log Name 0 Size MEMORY_FILE
            cleanexit
        endif
        putvarchr MEMORY_FILE Delta 0 //create MF with zeroes
        print "%origName% %Delta%"
        string Name P "pak_me\PenDriverPro\Content\WwiseAudio\Localized\English_US_\Media\%origMID%.ubulk"
        append
        log Name 0 Delta MEMORY_FILE //append zeroes to ubulk to match origSize
    endif
next i

Скрытый текст

"pak_me\*.*" "..\..\..\*.*" 

 

Для экспорта файлов с понятными именами, понадобится файл filetable.txt(включён в архив) с описанием файлов “размер,медиаID,название,sha1 hash,адрес в патче 1.1.1,адрес в патче 1.1.3,адрес в патче 1.1.4”, разделённым запятыми. Вот такое:

17071,998451977,vo_q08_061_francis_TobiasTobias_int,0024a30aeb823d9abc006053afb0c2c851e4b87d,4657524654,4656476078,4656476078
122866,551825624,vo_q08_nudge_batterylow_003_tobias_DontWorryDriver_int,002e9ba74497e553037b537e17ebf2e5faf8d4e3,4346843982,4345795406,4345795406
...
172425,459377820,S07C_ToCheckpoint05A_052_054_int,003631d3d91e7c97f55c5fb30097ae4adbd9ef14,4289459786,4288411210,4288411210

как сгенерировать такой файл - отдельная история…

Инструменты:

QuickBMS универсальный инструмент для распаковки/запаковки по скрипту

ww2ogg утилита для конвертации wem файлов в ogg

audiokinetic wwise софт для работы со звуком для видео игр

UPD: утилиты обновлены до версии 1.2

  • Исправлены субтитры
  • Исправлен экспорт файлов vo_q01_retry_antennaparts_001_oppy_StillNeedThose_Alt_1_ext и vo_q01_retry_antennaparts_001_oppy_StillNeedThose_Alt_1_int
  • Оптимизирована конвертация wem в ogg при экспорте
  • Обновлён файл filetable.txt адресами из патча 1.1.4

UPD: filetable.txt с адресами из патча 1.5.0. Добавлен экспорт-импорт файлов radio_channel_m3 (кроме radio_interstitial04)

UPD: дополнение утилит для запаковки в pak файл (pakchunk5-WindowsNoEditor_VO.pak). Распаковать в ту же папку.

Скрытый текст

для добавления radio_interstitial04 в пак, нужно предварительно закинуть wav файл с именем radio_interstitial04.nd.wav в папку wav (длительность 2:14.548s, 44100Hz, stereo)

UPD: В обновлении 1.8 игру перенесли на 4.27.2. Имена файлов изменили с ubulk на wem.  Путь к файлам был

PenDriverPro\Content\WwiseAudio\Localized\English_US_\Media\

стал

PenDriverPro\Content\WwiseAudio\Media\English(US)

 

Изменено пользователем xoixa
дополнение утилит для запаковки в pak файл
  • Лайк (+1) 2
  • Спасибо (+1) 2

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас



Zone of Games © 2003–2025 | Реклама на сайте.

×