Asset Transfer Protocol Mappings


Working with hashes is no fun. In order to make the Asset Transfer Protocol (ATP) more usable for content development we are introducing the concept of path mappings. This will allow you to use your Asset Server like you would use an S3 bucket or simple HTTP file server.

To use this new feature you will need a client and server that is at least build 4440. Old clients are unable to connect to the updated Asset Server, and updated Asset Servers cannot serve files to older clients.

In your domain (or a domain where you are allowed to create entities), pull up the new “My Asset Server” dialog. It is available in the Menu under “Edit”. If you had any existing assets, they will have been migrated to the new system and you will see some initial mappings with truncated hashes.

From this dialog you can add and edit file mappings in your Asset Server. If you right click on an item in the list, you will be given an option to copy the URL for that asset. This URL can be used anywhere in High Fidelity. For example, you can use the atp:/ URL as as an entity model URL, a script URL, or a sound URL in a script.


The ATP URLs have the following syntax:


So, if I have a file in the root of my Asset Server named “chair.fbx”, the ATP URL is atp:/chair.fbx. If I have a file in my Asset Server at the path “content/sounds/boom.wav” the ATP URL is atp:/content/sounds/boom.wav.

Don’t forget the leading slash!

Note that assets are currently only available inside your domain. The Asset Server is best used to host the content used by entities and scripts in your domain. Your avatar mesh would not be an ideal use case for an ATP asset since it is not likely to be available under the same mapping from the Asset Servers in the other domains you visit.

Technical Details

Here is an overview of the features being introduced:

  • QML Asset Server browser to view and modify path mappings
  • Upload of local files to Asset Server at a given mapping
  • Rename of existing mappings (files/folders) in the Asset Server
  • Deletion of existing mappings (files/folders) in the Asset Server
  • “Add to World” to add model files from Asset Server in front of your Avatar
  • Persistence of mappings in Asset Server to local map.json file

Internally the Asset Server still has a directory of files whose filenames are the SHA256 hash of their content. The file system you will see via the QML interface in the High Fidelity client does not match how the Asset Server is storing the files on your machine. The client asks the Asset Server for its mappings and produces the displayed tree of files.

You may notice that the Asset Server is still keeping the files you have deleted mappings for. Once we confirm that the new mapping system is stable, we will soon enable deletion of unmapped assets in your asset directory.

ATP Bugs

We know there are still some bugs in the networking layer that are causing some users to be unable to see ATP assets. We are actively looking into those bugs. If you have any issues seeing ATP assets or serving ATP assets to viewers, please send me a message and I’ll work with you to gather more information.

Max number of avatars in Sandbox?

Very cool . will it let me use fbx with unpacked textures with a relative path?


That would be feasable as soon as they support domain mapping /sharing of atp resources between domains. :stuck_out_tongue:


What @Menithal said is basically correct @Judas. We have some hypothetical strategies for scaling of an Asset Server system to allow for portability of Assets between domains, but none have been investigated so far.

Ah I see you have edited your post. Yes! I should have mentioned that. You can now use an FBX with non-embedded textures at a relative path. That is one of the things we wanted to enable with this change.

Just ensure the path structure in the Asset Server matches the relative path requirements for the model file and textures. We’re hoping to add a bulk upload soon that would make this process easier, for now you will need to upload each individually and set the path manually so the files are in the correct folders.


Are non-embedded textures with relative paths available for non ATP (S3 for example) FBXs now also?


I believe so otherwise I would expect that not to work in the ATP (they use the same code path). Give it a try and let me know if you see any issues.


I’ve only tried a few non-embedded things on S3, but so far so good. Which is cool because it should make things faster for everyone.

I’ve tried to stay away from ATP for most stuff because of domain bandwidth concerns, but I’m thinking ATP might be the way to go for my localhost domain rather than using a local web server, as I did long ago.

And main reason this is good is because it will give new users a quick and easy way to get content into their own domains.


In my case things are running on VPS with enough bandwidth. but for home users ATP can be a problem. but i do not like the webbased storage right now because it feels so unprotected.


Once atp works so smokey can see anything hosted on it i think it will be great. Because its assets get cached its not like everything on your domain has to be re downloaded every time they come back. If you manage the traffic using your domain then the bandwidth isn’t much of a problem.
Ofcourse if you leave it open you risk bandwidth griefing.
What we need and I suppose we will get is some kind of payment system linked to server data usage.
Once that’s set in such away that a bandwidth griefer is paying you handsomely for his usage of your data , then things will rock

oh @b we sent data to @Clement about smokeys atp problems, if you need anything else just ask


@Judas There are 2 fixes related to that problem coming in. I merged one yesterday and I think the other one should follow pretty soon, today? I’ll let you know here once it’s merged.

If those do no work, I’m currently implementing a feature that’ll allow a domain manager to limit the bandwidth used by the Asset Server per user. (i.e., if I set it to 10 Mb/s, no individual user can download faster than 10Mb/s)
As well as the possibility for any user to specify a maximum send speed to any asset server they connect to.
I’m hoping I can wrap that up today, but we’ll also need to test it, so I’m not sure when it’ll roll out.


I am employing a state of the art system to test if the atp has been cured


Noooo… lol…!!