Menu

#118 Exult.cfg should be valid for all users

no milestone
closed-fixed
nobody
None
5
2025-06-07
2010-02-23
No

Just to give you guys a bad headache....

The fix for bug #2841673 (exult.cfg written to C:\Program Files) introduced a regression with dealing with multiple users on a single machine. Consider this scenario:
* User A installs Exult. Generic exult.cfg written to C:\Program Files\Exult (or whatever) with default settings
* Installer running as User A customizes their "personal" exult.cfg (in local appdata), pointing to blackgate and si directories.
* User B logs in, Exult fails to start.

I wonder if the exult.cfg should be split into two parts - <config><disk><game> would *only* exist alongside exult.exe. All other settings are per-user. The big problem here is that settings get copied on first use for each user. I think the game really needs to separate "installation configuration" (per machine, readonly unless admin) from "user settings" (per user, things like volume or full screen settings).

The biggest issue here is that the per-user savegame paths are stored within the <config><disk><blackgate> element. Maybe those settings aren't needed? Seems like overkill to me.

Discussion

  • Marzo Sette Torres Junior

    Consider the alternate scenario: user A installs Exult and sets up paths to BG and SI during setup. This user places both BG and SI under his profile directory. User A also happens to encrypt his profile.

    User B starts Exult. It is "properly" configured but won't start anyway because user A has encrypted his profile, hence user B can't read the game files and Exult will fail.

    The bottom line is that however it is done, since Exult does not (and cannot) install the game data, someone somewhere will break the system. Unless we completely do away with the possibility of changing the location of game data and force a path structure.

     
  • Anonymous

    Anonymous - 2010-02-23

    That's true, but note that the user had to explicitly configure it that way for it to fail. In the current configuration, it's impossible to setup Exult for multiple users naturally. On Win32 it's considered a bug if an app fails for a new user - it should just "work".

    Also note that for it to fail the user would have to install Exult for all users (In C:\Program Files) and then install the game data in a local profile. It's really all the in the same - the game data is part of the installation. It doesn't make sense splitting it up.

    I don't think we should hardcode game paths, but having a default would help in this scenario. Plus in the future you could enumerate the directory to autodiscover games. Just copy in SI and BI and play. Same goes for sfx - I'd like to see the SFX files merged, redundant sounds removed, and deployed with Exult. 99% of people use those files, and all the extra manual config is a huge pain in the butt. :)

     
  • Marzo Sette Torres Junior

    If the user hadn't configured it Exult would have failed anyway. Moreover, Exult *does* have a default -- "./<gamename>". I even think that the installer starts with those values (but it has been a while since I actually tried the installer).

    But in any case, I am thinking that maybe the "proper" location for the game data, as well as for the "data" directory of Exult/ES, would be a subdirectory of common appdata. This would mirror the *nix behavior of using /usr/local/share/exult for the "data" dir (except for the sudo-only access requirements). But you are more familiar with the M$ guidelines; do you see any problems with this idea?

     
  • Anonymous

    Anonymous - 2010-02-23

    There are no specific guidelines as far as I know, but generally they are used this way:
    * Program Files - binaries and read-only data
    * Common App Data - Shared configuration and settings
    * Local App Data - Per user, per machine configuration and settings. Generally used for "large" settings (temp files, browser caches) and settings that should be per machine. Exult settings would apply here since not many corporations will be installing Exult on all their desktops ;-)
    * Roaming App Data - Per user, roaming configuration and settings. This folder can be configured to replicate when joined to a domain. Generally settings with small file sizes that apply to all machines go here (ie/ settings for your favorite image editing program or whatnot).

    The only fringe scenario here is "per user installs" - however, Exult's installer doesn't support this right now anyways and it it's kind of a kludge on top of Windows as it is - 99% of installers don't support it.

    My ideal vote would be something like this:
    * Exult has a preconfigured subdirectory it enumerates for game files. Subdirectory of the executable file (ie/ if C:\Program Files\Exult\Exult.exe then C:\Program Files\Exult\Games)
    * SerpentIsle and BlackGate sub directories created by default (empty)
    * Roland MT-32 sound packs for SI and BG merged into a single sound library and installed by default (release after next?) to main install directory. Available for use by other games/patches/mods, hence the merging. Installed by the default download - advanced users can download a slim package or raw binaries?
    * Ditch the custom paths for games and game-specific settings from exult.cfg. Keeps things simple and will help in the future if the Pentagram-style INI is used rather than the hierarchical XML Exult config system. Also makes it very easy for additional games to be installed. People publishing their own games and mods can easily deploy them rather than having to give users a huge list of instructions. The other option is to leave folder remapping in the Program Files Exult.cfg, but this complicates things somewhat.
    * Preferences.cfg or Preferences.ini in current per-user location. These would be things like screen size and the settings that can be modified in-game. Short term one option would be to have the settings system as a hierarchy - if a setting isn't overridden in the per-user location it's loaded in the read-only/common location (Program Files).
    * On Windows Vista and 7 (ie/ Windows version >= 6.0) gamedat files get stored in the "Saved Games" folder rather than Local App Data. The current approach of using Local App Data is fantastic (it works!) but "Saved Games" is even better - some of the Windows backup and transfer tools have special knowledge of the Saved Games folder but not the Local App Data one. (ie/ I wouldn't rebuild my machine then go "Argh!" when i forget the hidden Local App Data folder ;-)

    Obviously that amount of work right now is overkill - but perhaps there are a few good ideas in there. Establish a clean convention by default for the 95% case (making it easy to install and manage games for users) but still support the advanced users that want to install Serpent Isle in Z:\Archive\90s_Games\SI\Extracted_Files ;-)

     
  • Dominik Reichardt

    • labels: 101350 -->
    • milestone: 100842 -->
     
  • Dominik Reichardt

    • status: open --> closed-fixed
    • Group: --> no milestone