Skin system/Multiple textures per item system for Workshop Uploads

The system has been improved in multiple ways over the years. It’s extremely robust.

Workshop is done in real time, meaning the content is downloaded in real time and loaded in real time.

This is done because we believe in having workshop player models be accessible in game, and players can click and instantly see them. Other Workshop implementations require you to restart the entire game for each new model.

Our workshop system is custom made. There is no way to dynamically load in skeletal meshes (player models) or static meshes (items) in Unreal Engine 4. This is technology we made ourselves.

Our system has to subscribe and unsubscribe because we use Steam workshop. You cannot directly download from Steam workshop without massively hitching the game, so we use subscribe which has no hitch to it. You also can only download one model at a time, a Steam limitation.

We definitely cache workshop models once they are downloaded. Once they are downloaded, they are stored in a cache folder, just like canvases. We also cache them in memory (not all of them, a reserved amount of ram cache).

Once cached, we skip the subscribe and unsubscribe system completely and models load in. We do ping Steam workshop to check for any updates to the model as well.

This entire system is asynchronous and highly threaded.

The concern Alexer_Zoderia brought up is that workshop models are not always optimized by the author of the workshop model. As such, some authors do not compress their textures as much as they should.

The other concern is that when you have multi-body support, you will have to download all the bodies at the same time. You would also need to load in the body data in real time. It would be the same as loading two player models. This applies to workshop condo items as well.

Adding colorable materials is not a concern, but adding new body types means more model data to load in real time.

3 Likes