JavaScript Integration of Unreal uasset Files

Job ID: 38394084

Budget: $30 – $250 USD

I'm in need of a developer with experience in both Unreal Engine and JavaScript to help me convert and read certain Unreal uasset files for a web application. This currently involves primarily sound and texture files, with potential future work involving meshes and animations.

First this must be a JAVASCRIPT library! The open source Epic Unreal Github has the C code for opening uassets since that is the source of truth and it is open source, so you can see exactly how uasset files containers are structured.

The project can use https://github.com/blueprintue/uasset-reader-js as a base if it wants to and probably would be the easiest since it can already read and parse all the uasset files into pieces, it just doesn't appear to have any code to break out or detect what type of pieces they are.

The license of the final library must be MIT or Apache. (If you use the uasset-reader it would be MIT)

For Phase 1, I would like to be able to USE a couple different uasset type files and be able to use the resources inside the uasset file. Phase 2+ will be additional jobs at a later point, but documented a bit so you have an idea of the longer term goals.

Key Requirements:
The easy stuff applicable to the majority of uasset types:
- Preview Icon - need the data stream to the preview icon (if it exists) to be able to display it
- Asset version number (i.e. which Unreal engine produced it).
- Actual asset type

Phase 1
- Audio uasset - need access to the data of the PCM Audio in the uasset so that I can play it in my app, so basically the data needs to be either seeked or converted into something I can play in memory via any normal Chrome based browser..
- Texture uasset- need access to the data stream of the textures to be able to display it/them.

Keep in mind some uassets have:
1. Multiple resources, i.e. audio uassets can have multiple streams for surround sound.
2. Point to other uassets (i.e. Materials/Meshes may point to textures it uses)

Basically after opening the uasset I can then ask this library what type of file
".getType()" return UASSET.AUDIO

Then I can call an ".getInfo()" and get the specific information about it in Array format one for each stream as some assets can have multiple resources.
example for an audio file:

[{id: 0, type: UASSET.Audio, channels: 2, rate: 44000, format: USASSET.AUDIO_SIGNED_8BIT...., linkedAssets: null, UnrealEngine: 5.3},....]

Then ".getStream(<id>)" and it gives me access to the raw stream to be able to use just like as if I opened up a raw wav file with this data in it.

And .getThumnail() returns null or the stream to the thumbnail on the asset file...

----

Phase 2 (harder stuff):
I'll post later jobs to enhance this library to pull models/meshes/materials out and any other resources that I think I will need. It is possible that the code you write is generalizes so that it works well with pretty much any type of uassets out of the box which would be awesome...


Ideal Skills:
- Proficient in JavaScript.
- Either familiar with Unreal Engine and/or its uasset file format or willing to learn how to parse it.
- Probably should have UE 5.x installed, but if need be I can provide a couple texture and audio asset uasset files.
Related categories: JavaScript C++ Programming Unreal Engine