Workshop Design
The Workshop system is a great way to share content, but I've come across some limitations. Most of these have to do with the use a "virtual" file system (using Workshop package IDs).
- Scripts and shaders can't be debugged because these systems expect a file path. With Workshop files, there is a file name and an ID number. This makes Shadmar's cool effects difficult to access, among other things.
- Interdependent files are very difficult to work with, because when you upload them to the Workshop file associations are lost. For example, if you have a prefab that loads a model with the path "Models\Cars\car1.mdl" that file will not be present with the same path in the Workshop package. The engine does a lot of guessing to find the right file, but it's a ton of extra code and I still encounter situations where it's lost.
- In general, having two file systems means there is more inconsistency and opportunity for things to go wrong.
The encryption is a really cool idea, but I think at this point it's impeding usage. Workshop should be easier to use than passing zip files around, and right now I think it's a little bit harder. In fact, the FPS Weapons pack needs to be delayed because it's pretty much impossible to deploy it reliably right now. I keep getting disappearing objects in the example map because file references are being lost due to the changing file paths.
I've tested another method of handling files. Here's what I propose: When a Workshop package is downloaded, it gets extracted into a subfolder of a "Workshop" folder in each project. For example, if you have a project in "Documents\MyGame" and you subscribe to "Shadmar's post-effects pack", then a folder will be created at "Documents\MyGame\Workshop\Shadmar's post-effects pack" and all files are extracted there. Files will be updated automatically. Workshop files would no longer be "fake" files stored in encrypted zip files, they would just be regular old files the editor automatically extracts to your project folder. Keeping them neat and tidy in a "Workshop" folder in the project will prevent you from getting a mess of files all over your project.
The downside is it loses the global identifier. Workshop dependencies would not be automatically subscribed to because maps would only store the regular old file path. My experience is more than one level of dependencies is a bad idea, so I think it's worth it just to have all the headaches go away.Workshop would be a more efficient way to distribute files to each other, instead of being an alternate virtual file system. The "fake" Workshop folder in the Asset Browser would go away, replaced by an actual folder in your project.
Your existing Workshop items do not need to be changed. Of course, assets would be stored unencrypted on the user's hard drive. My view is that encryption is only good to the extent that it doesn't damage the system's usability, and right now I think it is causing problems.
Encryption will still be supported in Workshop game deployment, and automatic encryption will be added to games published through the Publish dialog.
This will not take place until after the Halloween game tournament finishes October 31.
- 8
6 Comments
Recommended Comments