World uploading failed on Linux
tracked
YTJVDCM
I tried to upload world on Linux .
But, it's failing with the message "Last built VRChat scene could not be found. Please Test/Compile Full Scene (slow)".
"Last Build" and "Build & Publish for Windows" button does not work with this message, but "Build & Test" can work and I can local test it.
Log In
M
Misaka-L
the problem still in vrchat sdk v3.7.1
WACOMalt
With VPM fully suppoted on linux, and ALCOM existing as a great VCC frontend replacement. This bug is the only remaining issue to having fully functional content creation on linux. Given the apparent simplicity of the proposed fixes it'd be wonderful if VRChat could spare the slightest effort to get this functional out of the box instead of requiring a one word addition to the sdk every update.
Infinifox
I'd love to see an official fix for this. This seems like a situation where a small amount of work on VRChat's side would save a ton of work and hassle for your users.
Stenu
It would be nice to not have to make a symlink every time I update or upload a world. Hoping the devs at the very least take a glimpse at the suggested fix.
Pint
Bump. It's been two years since this issue was first reported and a little under two years since the first fix was created. As far as I can tell, this is the
only
issue impacting uploading content on linux. This is not a complicated fix - it took me around half an hour to find the issue and build a workaround for it, and the fixes given by Bartkk0 and Happyrobot33 are even simpler to implement. Please fix this issue - every creator working on linux will greatly appreciate it!Fairplex
Another workaround for the SDK 3.5.2:
WACOMalt
Fairplex Just replying for anyone trying today. That old repo doesnt work any more with the current SDK, but this fork does.
https://github.com/Happyrobot33/VRCSDKonLinux Tested working just fine on Linux Mint 21.3 (Ubuntu 22.0.4)
Momo the Monster
Merged in a post:
[Fix Included] World Uploads Do Not Work On Linux
Pint
VRChat Version: N/A
Description of the bug: When trying to upload a world (and possibly) avatar on Linux, VRChat reports that the last build could not be found. After investigating this, I've discovered that VRChat saves the asset bundle with a lowercase file name, but saves the filename as uppercase in the lastVRCPath editor pref. This is because Linux treats filenames as case-sensitive, while Windows does not.
For example, VRChat might save the asset bundle to /tmp/FilePath/to/Asset/asset-bundle.vrcw but saves /tmp/FilePath/to/Asset/Asset-Bundle.vrcw in the editor pref. Then, when it tries to read the asset bundle, it has the wrong filename so it reports that the file cannot be found.
Potential Resolution:
The best fix that I can image would be to save the correct name in lastVRCPath, or to just not lowercase the file name when saving the asset bundle. Right now my work-around is to add the following code:
var paths = EditorPrefs.GetString("lastVRCPath").Split('/');
var firstPaths = string.Join("/", paths.Take(paths.Length - 1));
EditorPrefs.SetString("lastVRCPath", firstPaths + "/" + paths[paths.Length - 1].ToLower());
Immediately before "VRC_SdkBuilder.UploadLastExportedSceneBlueprint();" in "VRCSdkControlPanelWorldBuilder3.cs". Then, I build and publish (which will fail) and then upload the last build (which will succeed).
Steps to reproduce (how did you encounter the bug?):
Upload a world under Linux.
Momo the Monster
tracked
Happyrobot33
STILL an issue after SDK 3.5.1, just so a random dev doesnt come along here and think they fixed it
Happyrobot33
bump on this, should take a dev literally 5 minutes to fix, all that needs to be added is a ToLower() at the end of a string concat in VRCWorldAssetExporter
(namely around here)
string[] obj = new string[5] { "scene-", null, null, null, null };
BuildTarget activeBuildTarget = EditorUserBuildSettings.activeBuildTarget;
obj[1] = ((object)(BuildTarget)(ref activeBuildTarget)).ToString();
obj[2] = "-";
activeScene = SceneManager.GetActiveScene();
obj[3] = ((Scene)(ref activeScene)).name;
obj[4] = ".vrcw";
string text3 = string.Concat(obj); <--- Add .ToLower() here
Happyrobot33
For more context on this fix
on windows, paths are case-insensitive
on linux, paths are case-sensitive
in Unity, when creating asset bundles, they
always
will have a lowercase file name, even if you give them a uppercase name upon creationThe root of the issue here is windows is fine looking for
scene-StandaloneWindows64-worldscene.vrcw
and returning scene-standalonewindows64-worldscene.vrcw
insteadLinux however doesnt do this, as its case sensitive. Lowercase casting the concated string will fix this. this purely comes from the fact the
EditorUserBuildSettings.activeBuildTarget
returns a mixed case responseLoad More
→