Describe
The description of release 0.4.0 mentions a configuration file called "diablo.ini". This file does not exist in the devilutionx-windows-i386.zip nor does it exist in the latest release(1.0.0). It is unclear if this file is still supported or how i can fill this configuration file with settings.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
I expected a diablo.ini file which was mentioned in release 0.4.0 and a little bit of documentation about this file and how to configure it.
Additional context
https://github.com/diasurgical/devilutionX/releases
Someone can correct me if I'm wrong, but it generates in a hidden folder nested under the user location. It's a coinflip these days whether a small project will simply write it in the exe folder or to this distant user area.
I personally can't stand when my small-time apps do this, especially the ones without installers. No one uses my computer but me, so the concept of "account specific" configuration is lost on me. It breaks portability. And it makes it a PITA to back up configurations when you're planning to reinstall windows and don't want to go through the process of reconfiguring hundreds of apps back to where you had them.
I feel like this idea only works in a corporate or school environment where a computer is being shared by a bunch of people who don't own it. On a PC, it fails hard. Sadly, the linux people are used to it and we won't get much sympathy from them.
The file is in the data folder described in "how to play" section
https://github.com/diasurgical/devilutionX
Also mentioning 0.4 stuff is pointless when we are at 1.0 already
The diablo.ini file is generated in whatever the operating system defines as the user-writable area. On recent versions of Windows this appears to be C:Users[username]AppDataRoamingdiasurgicaldevilution You can also copy the one from your original Diablo installation as they are compatible.
It breaks portability.
This is actually done for portability, not all systems (like Android) allow you to put the exe in a user-writable area. But obviously you are thinking about it being transportable i.e. self-contained. There are already installers for other systems like RetroFW and various Linux systems where this is also required and eventually, there will probably be an installer for Windows as well, but since we do not have a Windows maintainer it's not our highest prioritized platform. And it would also be a bit annoying if with some update down the road the default changed to where you had to move your files around. And we can't exactly detect if you are the only user of the computer.
I feel like this idea only works in a corporate or school environment
Our primary goal is to get it running everywhere. We do plan to add a parameter that would allow the application to run in a self-contained manner, probably it would happen faster if someone who would like this feature offered a pull request...
On a PC, it fails hard. Sadly, the linux people are used to it
Personally I prefer my backups to contain just my configurations and files, not every program that I'm going to reinstall anyway. Sadly Windows gamers are often unorganized and tend to disable security features so probably we won't get much sympathy from them.
At least we don't use the register database or hide multiplayer savegames in the Windows driver foldder like the original game :P
I mostly agree with @FitzRoyX . Having portable support is a good idea, but as ajenbo mentioned there's not many windows devs working on it right now.
There are many situations where this could be useful. For example, in many office/school settings, the computers heavily restrict accessing certain parts. In high school all computers in our school booted from the admins hard drive, it was hella slow. But also means local documents don't exist, because when you logoff, it goes back to a "fresh" state by loading it again. So all your stuff had to be stored on the admins student folder or a flash drive. You also couldnt even access the AppData folder, because they had it locked down so u couldn't view hidden folders or any program data. I brought diablo to school a few times and played on a flash drive :P
Then there is the fact some people like to wipe their PC clean every now and then, in which case its nice to easily backup all your settings.
And finally, organization. You never know which program writes were. And frankly its annoying as hell having some write to /My Documents, or /Games, or /AppData, or /Windows. You just never know with a modern program, and frankly I dislike it and prefer everything stick to its folder.
Having the application self-contained isn't really a Windows specific feature. Lack of Windows devs was more in reference to packaging it with an installer (we have had a couple of users not know how to install).
The folder we save in is what we get told to use when asking the operating system. I know Windows apps have a tendency to not follow the Windows API, but not following the operating system guidelines is exactly how things have ended up in this mess where no one knows where there things are, this is of cause is especially a problem when you throw any in app that supported Windows 98 pre IE 5.0 since SHGetFolderPath was not available before that time. And that when you get in to having to disable security features, run things as admin, or have your files randomly redirected.
If you school didn't retain AppData they really fucked up :D Apparently the whole reason MS introduced the roaming part was to have it synced between the various devices people login to https://blogs.windows.com/windowsdeveloper/2016/05/03/getting-started-with-roaming-app-data/
So if you use OneDrive you should be able to continue your Diablo game from any where :P
I'm kinda curious how many times MS has changed the standard for where things are saved (further exasperating the issue is suppose). Maybe there is a website somewhere that lists all the various places SHGetFolderPath can point to, I think on XP is was [USER]Application Data. The path can also be changed by the local admin, and the full path also differ depending on language, fun.
I know Windows apps have a tendency to not follow the Windows API
This is basically the issue. Im not too familiar with other OS's, but Windows is terrible about this. In Windows 95 almost everything just wrote to C:/, because no "documents" folder even existed. Hence why diablo works the way it does. They changed it again in windows 98/me iirc, then again in XP, and again in vista, and yet again in 8/10. I have probably 75-100 programs on my PC atm and my user folder is a disaster. Some use AppData, some make their own unique folder, some use program files, it just goes on and on. When time comes to format I really have to dig to backup any config i need to save (such as templates and stuff).
If you school didn't retain AppData they really fucked up
It was junior year our school's IT Admin decided to switch to a virtual hard drive, that way they dont have to go around and update all 100's of computers around the school one at a time. But as I mentioned, it's entirely virtual and read only, only the admin can make changes to it. And you can't enable hidden files because that was blocked. The student folder was restricted by file extensions, you could only have MS office documents there. So yeah, this was 2013-2014 so i'd imagine alot of public places like libraries, fiber spaces, etc. with computers will have something similar. From a maintenance perspective it makes a lot of sense though...
path can also be changed by the local admin
I guess it depends on what function, but when using stuff like fopen/fwrite, specifying the file name without a path places it in the directory of the exe.
Also, figured I'd add that this is the fundamental problem with windows and why you pretty much have to do a clean format every couple years. Take the above all writing crap to different parts of your system. Now add the stupid registry, hidden files, GUID's, /ProgramData. Like after a year of using windows, the system has become so convoluted and full of junk you have to wipe it.
Im still using Windows 7 because alot of programs I need depend on it. But when support officially dies, that is most programs start requiring windows 8/10+, I'm definitely switching to linux and forcing myself to learn it. Don't like the direction Microsoft went with 8, and frankly Linux is the only way to get a clean, minimal non intrusive OS like windows used to be.
I guess it depends on what function, but when using stuff like
fopen/fwrite, specifying the file name without a path places it in the directory of the exe.
Afaik this would be the CWD, i.e. the folder the system was focusing on when starting the application. So if the user makes a shortcut with a wrong "Start in" value then suddenly it will be trying to access files in some other folder:

the only way to get a clean, minimal non intrusive OS like windows used to be.
You sound like an Arch user already :) (I'm still only on Ubuntu)
Also worth noting is privacy: when cfg writing isn't self-contained, you're leaving trails of your app usage on computers that aren't yours. In corporate America, your employer and the lackeys they pay to spy on you are always looking for ways to hassle you and avoid giving out raises. "What's this devilutionX folder doing in your user directory, FitzRoyX? Why aren't you working?" "I was on my lunch break sir. And I enjoy demonic video games."
Why I understand your point (believe me I'm dealing with it right now) this isn't really a concerns of this project. If you need privacy use some sort of virtualization, guest user or get a handheld gaming device (DevilutionX already supports 4 such devices).
Most helpful comment
The diablo.ini file is generated in whatever the operating system defines as the user-writable area. On recent versions of Windows this appears to be C:Users[username]AppDataRoamingdiasurgicaldevilution You can also copy the one from your original Diablo installation as they are compatible.
This is actually done for portability, not all systems (like Android) allow you to put the exe in a user-writable area. But obviously you are thinking about it being transportable i.e. self-contained. There are already installers for other systems like RetroFW and various Linux systems where this is also required and eventually, there will probably be an installer for Windows as well, but since we do not have a Windows maintainer it's not our highest prioritized platform. And it would also be a bit annoying if with some update down the road the default changed to where you had to move your files around. And we can't exactly detect if you are the only user of the computer.
Our primary goal is to get it running everywhere. We do plan to add a parameter that would allow the application to run in a self-contained manner, probably it would happen faster if someone who would like this feature offered a pull request...
Personally I prefer my backups to contain just my configurations and files, not every program that I'm going to reinstall anyway. Sadly Windows gamers are often unorganized and tend to disable security features so probably we won't get much sympathy from them.
At least we don't use the register database or hide multiplayer savegames in the Windows driver foldder like the original game :P