UEViewer
UEViewer copied to clipboard
Add adjustments for ARK's streamed SoundWaves
This naive patch enables export of streaming-enabled sounds from Ark: Survival Evolved.
The implementation of audio streaming in ARK seems rather undercooked. The differences, compared to other UE4 games, caused UEViewer to hit the wrong path (deserialisation of a typed array of FSoundFormatData), followed by a crash due to invalid memory allocations, invalid name indexes, et cetera.
- bStreaming is called bReallyUseStreamingReserved in ARK assets. Keeping that in mind was enough to make UEViewer choose the right path (bStreaming == true block), but didn't make export possible yet.
- There's actually one more field in these SoundWaves, that immediately follows the data GUID and is a 32-bit boolean. I did some tests using another extraction project on both client and server files, and it looks like it's another bCooked, which I'll call here bCookedStreaming for simplicity. It can be ignored when dealing with client data, but the empty sound files of the server build have positive bCooked and negative bCookedStreaming, with no more data following the latter.
I'm mostly unfamiliar with UEViewer's codebase, so in advance, I'm sorry for formatting issues or whatever you consider a hack here.