Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add adjustments for ARK's streamed SoundWaves #144

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

alex4401
Copy link

@alex4401 alex4401 commented Nov 3, 2019

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.

@alex4401 alex4401 force-pushed the ark-support/soundwave branch from b10ac82 to e0eb3d8 Compare January 17, 2020 11:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants