Jump to content
  • entries
    945
  • comments
    5,899
  • views
    929,816

Workshop Design


Josh

3,216 views

 Share

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.

 

blogentry-1-0-75908900-1413741955_thumb.png

 

blogentry-1-0-69207700-1413742306_thumb.png

 

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.

  • Upvote 8
 Share

6 Comments


Recommended Comments

Something for the you may implement in the future is a preprocessor for lua embedded in the editor. It's sole purpose would be to find all strings and see if they match with a file that exists in the project. When you export a script it will check all the strings for mdls, Tex, mats, and all other files that leadwerks natively works with. Then show a list of files that may need to be included when you export to the workshop. The user selects the files and the editor packages them.

 

I imagine that it would be a long and hard process and would most defiantly break if a person doesn't sandbox lua, then you would need to import files and rewrite strings on the fly.

 

I have a day off tomorrow, I'll see if I can waste a day implementing this in a programming language and wondering why it doesn't work.

Link to comment

This will improve the workshop a lot. How about a way to choose on a per project basis which workshop items you want to have in the project. This way you can handle updates globally (on the user machine) but seperate from your current project. I don't want to have all workshop items available in my projects espeacially if i just want to test something out. You can replicate a local version of the steam - workshop on the user machine.

  • Upvote 1
Link to comment
Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...