ID:2926519
 
Applies to:Dream Seeker
Status: Open

Issue hasn't been assigned a status value.
Windows 11 goes even harder into OneDrive nonsense, which by default has your user documents directory inside of the OneDrive directory. As we know, BYOND doesn't handle things like OneDrive and network folders very well, especially when it comes to things like the cache.

The solution is to change the default storage path BYOND uses from Documents to the OS' "%localappdata%" which should always be a local folder, and remain fairly consistent across Windows releases.

Most programs have already moved to storing things in the APPDATA folders, and it's probably a good time for BYOND to jump on the bandwagon before Windows 11 gets more popular and it has to be done anyways.

(I just spent two hours trying to figure out why my Windows 11 laptop was freaking out with BYOND's cache)
This guy speaks sanity in insane times.
Problem, appdata is a hidden folder that can't be accessed without changing display settings.

I will never support putting shit in it so long as this remains the case.

Byond should move it up a folder, to the user profile directory, kinda like how music and videos and downloads are in that folder.
In response to MrStonedOne
MrStonedOne wrote:
Problem, appdata is a hidden folder that can't be accessed without changing display settings.

I will never support putting shit in it so long as this remains the case.

Byond should move it up a folder, to the user profile directory, kinda like how music and videos and downloads are in that folder.

Software that saves data in a folder within %USERPROFILE%, usually does so to maintain compatibility with some form of platform-agnostic software that is being used, but that is a kind of legacy standard that was used before the XDG Base Directory Specification was introduced. Under that specification, the Windows equivalent of $HOME/.config/ would be %LOCALAPPDATA%.

This page clearly shows the Windows equivalents:
https://docs.racket-lang.org/basedir/ index.html#(part._.X.D.G_.Basedir_.Specification)

That also reflects what is shown here:
https://github.com/adrg/xdg/blob/master/ README.md#xdg-base-directory

I do respect your opinion. I'm not a fan of how Windows handles AppData. It's hidden and has poor security, yet it's considered to be the modern standard on Windows, even for software that is ported from Linux. That means it's probably more future-proof, and less likely to be targeted by software like OneDrive.
I'm open to this. I'll look into it.
yet it's considered to be the modern standard on Windows

Unlikely everybody else, I do not believe in following standards when they don't fit the situation.

Moving something from an unhidden folder to a hidden folder does not fit.

It should go in user profile/
In response to MrStonedOne
MrStonedOne wrote:
yet it's considered to be the modern standard on Windows

Unlikely everybody else, I do not believe in following standards when they don't fit the situation.

Moving something from an unhidden folder to a hidden folder does not fit.

It should go in user profile/

press Win+R type %localappdata%

It's only hidden from vegetables.
If you save and run this as a batch file, it will read the "BYOND User Directory" path from the registry, and create a shortcut to it in your "Documents" folder:

@echo off
setlocal
goto :MAIN


:function_RemoveOuterQuotes
set "function_RemoveOuterQuotes_arg1=%function_RemoveOuterQuotes_arg1%"
set "var_ROQ_string=%function_RemoveOuterQuotes_arg1%"

set "var_ROQ_string=###%var_ROQ_string%###"
set "var_ROQ_string=%var_ROQ_string:"###=%"
set "var_ROQ_string=%var_ROQ_string:###"=%"
set "var_ROQ_string=%var_ROQ_string:###=%"

set "function_RemoveOuterQuotes_returnval=%var_ROQ_string%"
exit /b


:MAIN


for /f "skip=2 tokens=2*" %%a in ('reg query "HKCU\SOFTWARE\Dantom\BYOND" /v "userpath"') do set "byonduserpath=%%b"

set "function_RemoveOuterQuotes_arg1=%byonduserpath%"
call :function_RemoveOuterQuotes
set "byonduserpath=%function_RemoveOuterQuotes_returnval%"


set "tempvbspath=%TEMP%\\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"


echo set wshShell = WScript.CreateObject("WScript.Shell") >> %tempvbspath%
set "newlinkpath=%USERPROFILE%\Documents\BYOND User Directory.lnk"
echo set wshShortcut = wshShell.CreateShortcut("%newlinkpath%") >> %tempvbspath%
echo wshShortcut.WindowStyle = 1 >> %tempvbspath%
echo wshShortcut.TargetPath = "%byonduserpath%" >> %tempvbspath%
echo wshShortcut.Save >> %tempvbspath%


cscript /nologo %tempvbspath%
del %tempvbspath%


endlocal


Maybe the BYOND installer could create such a shortcut, wherever it might be convenient. The shortcuts wouldn't be hidden, so that wouldn't be an issue.
In response to MrStonedOne
MrStonedOne wrote:
yet it's considered to be the modern standard on Windows

Unlikely everybody else, I do not believe in following standards when they don't fit the situation.

Moving something from an unhidden folder to a hidden folder does not fit.

It should go in user profile/

By default on Windows, the profile directory is no more accessible than the appdata folders. In the file explorer there's no easy place to navigate outside of the folders inside of the profile directory (Documents, Pictures, etc). Even with the address bar enabled, if you want to get to something like "C:\Users\Yourname" you have to enter the full path since the address bar will populate with "Documents", "Pictures" etc, while inside of it. Our instructions for pointing someone at that folder would be the same, which is pressing Win+R and entering the folder to open it in explorer.

Outside of Windows, Linux tends to store per-user configuration inside of "/home/[user]/.config" which is also, look at that, a hidden directory.

This has been a normal thing on both Windows and Linux for quite a long time, and your suggestion immediately loses water when you realize it's no easier to access "C:\Users\[name]" than it is "%localappdata%".

If you had suggested it be moved somewhere that explorer easily lets you navigate to, your argument would be a lot more reasonable. It may as well be a hidden folder to since Windows tries very hard to keep you from manually accessing it.
Agreed; It's harder to get into the user folder even if you know what you are doing. Documents? Sure, just the quick-access shortcut: Win+E.

But the OS tries to hide the user folder from you unless you go in through the home drive and manually navigate to the user folder. Going up to the parent folder from documents just dumps you out to the This PC location instead of the user folder, which makes getting into that user folder a little bit more painful than just Win+R %localappdata%.
You can just as easily do Win+R %userprofile%, but that one is probably less well known, as I would imagine %localappdata% is frequented more often by the majority of Windows power users, considering how many more programs make use of it.

James connected the dots and expanded upon the comparison that I was making earlier. He pointed out one of the reasons why I brought it up, which is that both Windows and Linux are using a comparable hidden directory/folder to store user configuration data for various programs. On Linux, the dot in the name makes it hidden. You can see examples of folder names starting with a dot, even on Windows, right inside of %userprofile%, which looks rather out of place, but that was part of the platform-agnostic way of doing things before the XDG Base Directory Specification was introduced, as I had mentioned before.
Win+R %userprofile%

Oooooh, new environment variable lernt.
The whole point is that Microsoft is stupid for making Documents non-local by default, and all of our suggested locations are equally hidden from normal users. The difference is that %localappdata% is actually meant for what we're talking about :)

BYOND should probably handle network and cloud folders better too, though, it's 2024.
I will need to back up the Stoned One on this topic. Finding the user profile is a simple affair via the File Explorer. If you click the leftmost ribbon on the top, it'll produce a dropdown that you can use to go to the user profile.
In response to Meme01
How do you know that in the future, OneDrive isn't going to start consuming all folders within %userprofile%? That's not something that would happen to folders within %localappdata%. I think it's best to just avoid the risk of having to change the default location of the BYOND User Directory again, in the future.

To reiterate, OneDrive tries to take over %userprofile%\Documents, so it could just as easily take over %userprofile%\BYOND, with a possible future update. Maybe the OneDrive developers would choose to skip over folders with names that start with a dot, but who knows? I think that if the BYOND User Directory had to be moved to %userprofile%, it actually should be renamed to ".BYOND", just as a deterrent.
In response to Multiverse7
Multiverse7 wrote:
How do you know that in the future, OneDrive isn't going to start consuming all folders within %userprofile%? That's not something that would happen to folders within %localappdata%. I think it's best to just avoid the risk of having to change the default location of the BYOND User Directory again, in the future.

To reiterate, OneDrive tries to take over %userprofile%\Documents, so it could just as easily take over %userprofile%\BYOND, with a possible future update. Maybe the OneDrive developers would choose to skip over folders with names that start with a dot, but who knows? I think that if the BYOND User Directory had to be moved to %userprofile%, it actually should be renamed to ".BYOND", just as a deterrent.

Idk. Simply adjust when that comes to be?

EDIT: I want to note that this was not in a sarcastic tone, since I think it can be read that way.


In response to Meme01
Meme01 wrote:
Idk. Simply adjust when that comes to be?

EDIT: I want to note that this was not in a sarcastic tone, since I think it can be read that way.

If Lummox JR, along with everyone who uses BYOND, would have to "adjust" again, that would be rather detrimental and unhealthy for BYOND. Do we really want give all of BYOND, collectively, OneDrive PTSD? I say this should be done right the first time, so that there is no risk of it needing to be done again.

The way that BYOND has been using the Documents folder is a mistake that needs to be corrected. Moving to %userprofile% is just backing into a corner to continue that trend. Moving to %localappdata% will be more sustainable in the long term, and give BYOND more credibility, in terms of being a legitimate software package.
Counter point

Most games store their data in the documents folder (or documents/My Games) so that their users can easily back it up.

Going thru my documents folder, I see:

Age of empires
Borderlands 2
Fallout nv
FTL
Starcraft 2
Starcraft 1
Crusader Kings 3

Also, most software dev packages do the same thing.

in my documents folder see jetbeans, visual studio, visual studio again, amd app profiler, ellipse, visual studio again.

appdata is strictly for internal data structures that only the application edits in normal use.

because byond is both a software development platform and a game with an editable skin, most of its config files do not fit that bill.

The reality is there is no consensus on package local or package split, which is whats going on here. byond/ doesn't need to be moved to one location, it needs to be moved to many. byond/cache, byond/pager should go in %temp%, byond/cfg should go in appdata, byond/skin, byond/lib, byond/screenshots should go in documents.

Byond instead choose to keep everything in one subfolder (temp/package, cfg/package vs package/temp, package/cfg) and choose to keep that subfolder easily accessible.

Like byond/screenshots for example. you really want to move that to appdata?

No this whole idea isn't sound.


Ter13 wrote:
MrStonedOne wrote:
yet it's considered to be the modern standard on Windows

Unlikely everybody else, I do not believe in following standards when they don't fit the situation.

Moving something from an unhidden folder to a hidden folder does not fit.

It should go in user profile/

press Win+R type %localappdata%

It's only hidden from vegetables.

Sometimes I need to tell those vegetables how to do shit to troubleshoot/clear out their shit, ideally i'd like it be something they can learn and remember to do on their own for the next time, run commands do not fit that bill, browsing to a folder in their documents folder and renaming it to .bad does.
In response to MrStonedOne
MrStonedOne wrote:
Counter point

Most games store their data in the documents folder (or documents/My Games) so that their users can easily back it up.

Going thru my documents folder, I see:

Age of empires
Borderlands 2
Fallout nv
FTL
Starcraft 2
Starcraft 1
Crusader Kings 3

Yes, it is quite common for games to use "%userprofile%\Documents\My Games", which I find odd because "%userprofile%\Saved Games" looks like it should be the most "correct" location for that, and there are games that use it. The "%userprofile%\Saved Games" folder even has its own unique icon. I have seen a good number of games that do store save data in an AppData folder, but I would say that's a bad practice.

Things are not quite that simple when you start talking about online multiplayer game launchers, and especially launchers for game stores. In these launchers, lots of things revolve around a web browser, so they tend to follow a similar philosophy in how the configuration data and cache is saved.

The BYOND Pager is an example of that. The main difference is that BYOND games, specifically those which are not standalone, are not Windows binaries, so they don't get a say in where they can save data, unless they are running locally in "Trusted Mode". BYOND automatically creates the cache directories for games, as if those games were part of a common platform, which they are. BYOND currently handles these games in a way that is similar to how a web browser handles browser extensions or plugins, so until that changes, the way that the folders in the BYOND User Directory are organized should not be changed all that much.

MrStonedOne wrote:
Also, most software dev packages do the same thing.

in my documents folder see jetbeans, visual studio, visual studio again, amd app profiler, ellipse, visual studio again.

There are some that use %userprofile%. Dream Maker itself is a whole suite of game making software, for editing code, GUIs, key or button macros, maps, and icons, so it's kind of hard to compare it to the more mainstream, general-purpose IDEs that usually focus entirely on the code writing side of things.

MrStonedOne wrote:
appdata is strictly for internal data structures that only the application edits in normal use.

because byond is both a software development platform and a game with an editable skin, most of its config files do not fit that bill.

Can editing configuration files even be considered "normal" use for most users? When I think of either AppData or config files, I think of power users, and I do often see such files within AppData folders.

MrStonedOne wrote:
The reality is there is no consensus on package local or package split, which is whats going on here. byond/ doesn't need to be moved to one location, it needs to be moved to many. byond/cache, byond/pager should go in %temp%, byond/cfg should go in appdata, byond/skin, byond/lib, byond/screenshots should go in documents.

Byond instead choose to keep everything in one subfolder (temp/package, cfg/package vs package/temp, package/cfg) and choose to keep that subfolder easily accessible.

Like byond/screenshots for example. you really want to move that to appdata?

No this whole idea isn't sound.

I don't think any of those folders belong in %temp%. Like I mentioned above, the BYOND User Directory is organized in a way that is similar to a game launcher or web browser, and BYOND manages what is or isn't temporary, not the operating system. The files in the cache and pager folders can be useful for debugging purposes, and it's much easier to keep track of them when they are organized together, in one place, along with the configuration. The skin is just another form of configuration, so it also belongs in the same place. OneDrive could cause issues with skins anyway. The screenshots could go in "%userprofile%\Pictures\Screenshots\BYOND", for easy access. The "BYOND\lib" folder is used by developers, so if it moves to "%localappdata%\BYOND\lib", it's not the end of the world, but I can see how that might be less convenient. Maybe it could move to "%userprofile%\BYOND Projects\lib".