Hard Light Productions Forums
Modding, Mission Design, and Coding => FS2 Open Coding - The Source Code Project (SCP) => Topic started by: karajorma on October 11, 2009, 06:08:46 am
-
Following the meeting today I made a couple of quick mockups for how I see the installer section of the combined launcher/updater/installer working.
Firstly the launcher would be a standalone, cross-platform program. It would not live in the FS2 folder but instead would live in one of its own (if you want you could install FS2 in a subfolder below it of course). The launcher would either be installed as part of a TC download or on its own. Once run the launcher would then look at its ini file. The ini file would contain a list of folders on the users harddrive to search for FS2_Open games.
The Launcher then checks those folders looking for mod.ini files (we can also make it look for launcher6.ini files for compatibility reasons if we want). It uses those to populate its internal list of mods and TCs. If the user has something installed it goes to the run game tab allowing the user to set up the game.
If the user has nothing installed or the user then clicks on the Install tab, the launcher goes online and checks the website the current installer does (or a new one). It finds the master list of mods and TCs available for download. It then contacts each of them and sees what they have available. It then presents the user with something like this screen.
(http://fs2downloads.com/Misc-Pics/Installer.png)
The master list is a text file which states the name of the mod or TC and the URL of a text file describing where the download for it is located (allowing each mod to remain in charge of updates, etc themselves). Each mod then provides its own text file at that location which has certain data.
1) The version number of the mod
2) The name of any mods or games it requires (so Operations would state TBP (and maybe Zathras) here)
3) The URLs for the downloads plus CRCs, etc for them.
4) CRCs for old files which are no longer part of the mod can be included as an option.
(http://fs2downloads.com/Misc-Pics/Installer2.png)
When the user clicks to download the game checks if there are any requirements. It then checks if the required game is already installed (i.e in the internal list it compiled earlier. If the game is present it then checks if the game is up to date (we could supply minimum version numbers if we wanted to so that you don't need to be 100% up to date, merely up to date enough for the mod).
It does this by checking section 2) and then contacting the URL the master list gave for that mod or TC. So in the case of Operations it would check the master list, find the text file for TBP and then check if the CRCs of the .vp files for TBP matched the ones of the files on the HD.
If there are no issues, it starts to download. Otherwise....
(http://fs2downloads.com/Misc-Pics/Installer3.png)
If we handled this all correctly we could probably wipe out a huge portion of our support work cause checking that mods are installed properly could all be handled by the launcher. Best of all, none of this should get in the way of a manual install. We'd add a settings tab and simply allow users to manually tell the installer where they have installed mods by hand.
Furthermore instead of maintaining a central .ini file for the launcher by making it save the set up in the folder belonging to the game (or even mod) we allow the user to choose to use the same launcher to run 3.6.11 for WCS, 3.7 for Diaspora and 3.8 for anything else with different settings.
-
I'll crunch some ideas with Iss Mneur and get back with a reply soon.
-
I've improved on the original post a little by updating the mod list so you can sort it by any of the fields. Which would make it very easy to simply sort by requirements and get all the TBP mods for instance.
-
Looks good, but in addition to sorting, how about some filtering? And at least the option to make the pictures much smaller. Maybe only expand the currently selected mod.
Is this going to include mod version requirements and perhaps executable versions?
-
Well at this stage it's just a mock up done in a UI design program so it would need to actually be redone in something which understands what code is. :D
The pictures are simply the ones from the mod.ini files in my FS2 folder for the most part but we could decide on a standard size once we had the program running. Simple filtering wouldn't be hard for something like standalone vs mods. We could probably have it look through the list of standalones so you could filter based on that but I'm having trouble picturing a good, dynamic way of saying "Only find mods dependant on FS1 port"
I think we should definitely make sure that the requirements list include minimum (and maximum) versions for both mods and executables.
-
Well I guess that this would sort out problems of not having the right ships to play mods. I remember playing a lot of mods and having to go though and find each ship which I needed to download to make it work.
So yeah this looks like a really good idea, hope to see it soon. :)
-
1) The version number of the mod
2) The name of any mods or games it requires (so Operations would state TBP (and maybe Zathras) here)
3) The URLs for the downloads plus CRCs, etc for them.
4) CRCs for old files which are no longer part of the mod can be included as an option.
Is there handling for optional/recommended mods?
-
Ooh, I like this mockup. :)
What would you have on the other two tabs?
-
it should have a developer mode too, so we can maintain settings different from general game playing that can be toggled quickly. i find it annoying when in the middle of modding somone asks me to play multi and i have to spend several minutes changing settings to play multi, and then have to reverse those changes when i want to get back to modding. maybe in the form of a tab which can launch different builds, different fred builds, and maybe other modding tools, and can maintain several saved presets so we can quickly swith over from modding a tc or fredding retail multi missions. maybe also provide quick access to debug log files.
-
So how close is this to reality? Are these just mock-ups or is some of the code already in place?
-
Sadly, these are just mock-ups. I think Karajorma pointed this somewhere in the previous posts.
-
May I suggest a way to launch fred in a similar way, i.e with mods and such.
Think of it like a launcher similar to the current one, just for fred instead of fs2
-
I'd just add the option to choose a FRED build to this launcher.
it should have a developer mode too, so we can maintain settings different from general game playing that can be toggled quickly. i find it annoying when in the middle of modding somone asks me to play multi and i have to spend several minutes changing settings to play multi, and then have to reverse those changes when i want to get back to modding. maybe in the form of a tab which can launch different builds, different fred builds, and maybe other modding tools, and can maintain several saved presets so we can quickly swith over from modding a tc or fredding retail multi missions. maybe also provide quick access to debug log files.
The idea was that the settings (i.e the equivalent of launcher6.ini) would be saved in the same folder as the game or mod itself rather than the one belonging to the launcher. In that way every single mod could have different settings.
The current issue I'm pondering is how to make that work so that we can set a default for all games run through the launcher. The problem is that if I set a global default for Diaspora which was running on 3.7 that command line option might not work on FS2 running on 3.6.11. That said even if I we only set the defaults at the game level (i.e you have to set up Diaspora's defaults and then have to do it again for TBP, Starfox or FS2) that's still what you have to do now anyway, so it simply means we couldn't improve on that. :D
1) The version number of the mod
2) The name of any mods or games it requires (so Operations would state TBP (and maybe Zathras) here)
3) The URLs for the downloads plus CRCs, etc for them.
4) CRCs for old files which are no longer part of the mod can be included as an option.
Is there handling for optional/recommended mods?
I didn't remember to include it but it would be very simple to add it to this design. You'd add it in between 2 and 3 and then check it in a separate pass using the same functions used to check the requirements.
Ooh, I like this mockup. :)
What would you have on the other two tabs?
I'll design them today. The update tab would be very similar to the one you see except it would display a list of the mods and games you have already have installed. Clicking on them would simply check the version you have against the one that is available. Personally I think we should make checking for updates something the launcher does automatically (although we'd allow the user to switch that off and do it manually if they wanted to).
-
Hmm... As far as I am concerned, wouldn't it be better to store all settings in an ini file instead of using registry (or rather virtual registry on Vista / Win 7)?
This would make the game really portable and I could, for example, run different resolutions with different mods. For instance, when debugging a mission, I prefer to run the game in 1280*1024 in window mode, when playing just for fun, I run it in 1920*1080. Currently the resolution setting (as well as language setting) is stored in the registry. Which reminds me: German version of Saga poses another problem - language string has to be set to German which leads to all kinds of issues with the HUD in international version.
-
Removing all registry dependencies was one thing everyone was in agreement on at the meeting.
-
Yeah. It was so obvious we'd be giving the registry the boot that I didn't even think to mention it. :D
-
Does that include eliminating the launcher's backwards compatibility with retail through 3.6.10 builds? I was suggesting a while back that future builds should somehow tell the launcher they use a new storage method for configuration, similar to how they report their supported flags when polled. Then a launcher could work with old and new builds.
-
I actually thought about this a while ago.
Define a very clear XML file format which contains the capabilities of the engine and the defaults that will be used.
Define a very clear XML file format which contains the settings to be used for the game.
Readers are simple and cross-platform.
This allows for very simple launcher development in whatever design people wish.
-
Moving on, here are my mock ups for the run game section.
Starting with Mod/Game selection. This simply displays a list of the available mods and games. I've not bothered showing the text from the mod.ini here but we might as well show it. :)
(http://www.freespacefaq.com/Misc-Pics/Installer-Run-Select.png)
Once you have selected a mod you'll be taken to the easy setup screen.
(http://www.freespacefaq.com/Misc-Pics/Installer-Run-Setup.png)
This makes heavy use of the mod.ini (or its replacement) that was downloaded with the mod. First thing the launcher does is use the skinning settings in the mod.ini to alter itself to look the way the mod team wanted.
Then it checks if you have specified an executable for this mod (or globally). If not it looks in the .ini file to see if one is specified there and selects that one if it finds it in the correct folder.
It then populates the easy setup combo box with all the versions it can find. Some of these are hard coded (as they are now) but mod teams can also specify their own set of default settings in the ini file which will then be presented to the user as an option.
The Other tab could be used to have general settings (Don't check for updates, continue even if required mods are out of date, etc) perhaps we could just call it preferences or something. :D The About This Game tab also uses the mod.ini to give a description of the game/mod and any information it thinks the user might need. The About FS2_Open tab has information about the SCP etc on it. The other tabs should be fairly self explanatory.
-
Kara said I should repost this here:
I would definitely agree with a combined Launcher/Installer-Updater, as that immediately minimises support.
However, I would suggest that it *doesn't* expect to deal with all TCs, but instead the same executable should be 'skinnable' to meet the needs of each TC.
- So a TC distributes the same Launcher app, but with a different skin and config file suited to their particular needs.
Thus TCs have the option to have associated 'mods', handled in the same way as FS2O handles mods to FS2.
This removes the problem of 'Where do you put the Launcher?' and the issues of having the Launcher find the appropriate executables, because it simply lives in the same folder as the associated TC or FreeSpace2Open itself.
It also prevents future updates to the Launcher from possibly breaking older 'no longer supported' TCs, as they will simply keep their old one.
-
A unified Launcher, "One Launcher to rule them all", as it were, would be my preferred solution. That is, the Launcher is installed separately from each TC, but can be used to launch (and install!) every TC or campaign that provides the necessary information. Skinning being dependant on mod.ini settings.
-
There are some definite issues with some of these ideas unique to OS X/Linux. Havner would be a good one to comment on some of them, or Soulstorm.
-
However, I would suggest that it *doesn't* expect to deal with all TCs, but instead the same executable should be 'skinnable' to meet the needs of each TC.
- So a TC distributes the same Launcher app, but with a different skin and config file suited to their particular needs.
Thus TCs have the option to have associated 'mods', handled in the same way as FS2O handles mods to FS2.
This removes the problem of 'Where do you put the Launcher?' and the issues of having the Launcher find the appropriate executables, because it simply lives in the same folder as the associated TC or FreeSpace2Open itself.
It also prevents future updates to the Launcher from possibly breaking older 'no longer supported' TCs, as they will simply keep their old one.
Yeah, this is what I was thinking. It also is another reason to separate the launcher and installer behaviors.
-
What about blocking command line options unwanted by mod developers? Like tbp or 3d radar flags for WCS.
-
Many of those options should be handled differently, i.e. an in game options menu, and some options should have the possibility of being locked by the mod. Of course, this could all be based on the same system, as the in game options will mostly be stuff already definable through the command line anyway.
-
@Tomo : If we design things correctly the launcher shouldn't ever break TCs that worked with an earlier version of it in the first place. :p
Hell I don't remember the last time the current launcher broke anything and that had far less planning.
-
Hope I am not preaching to the choir - I am thinking these levels of settings are good.
3. User's user-defined settings for a particular mod. These override all settings below, whether it be flags or things like screen resolution.
Located in the mod directory, is not used until user starts setting overrides for settings on a per-mod basis.
2. Mod's default settings for flags and such, included with the mod to allow the author to provide suggested settings for things such as ambient factor. Also includes information about the mod such as what content to use. Equivalent to today's mod.ini. Again, located in the mod directory.
1. User's user defined settings for the engine itself. These are the defaults which the engine falls back on in the absence of the above two settings. These are located where the builds are located. Most settings are located here, except for those which are mod-specific such as the TBP warp effects.
0. Hardcoded default settings per build (as if you ran without any flags at all).
Note that 3 overrides 2, 2 overrides 1, etc, although I do not believe that #2 should be capable of setting things which can adversely affect system performance. Video settings are the purview of #1 - the user's global settings. In other words, we should limit what mods are capable of setting, so that we do not wind up with people having to edit their mod's files to get it to run well on their systems.
Maybe we could also have settings which more adversely affect performance be grouped together for ease of access.
-
Yeah, this is what I was thinking. It also is another reason to separate the launcher and installer behaviors.
Not quite seeing how it makes it necessary to separate launcher and installer-updater.
Simply adding a button "Check for updates" to the launcher means that a user can always quickly check for updates to all their installed mods, executables and settings.
It could also suggest new mods and campaigns that have been released/updated since the last update check.
This is far more likely to get used than if a user has to download a separate 'updater' application.
The installer itself is basically irrelevant, but having a native app will always be both faster and easier to use - no need to install additional framework, like the current Java-based Turey's Installer.
Each 'user copy' of the Launcher would be attached to a different TC, and thus would automatically be looking in a different location for relevant updates and new mods.
The actual Launcher executable itself would be identical for all.
- If we're very careful, we could allow the Launcher to update itself from a single location, but that requires extreme care with the original design.
-
Hope I am not preaching to the choir - I am thinking these levels of settings are good.
3. User's user-defined settings for a particular mod. These override all settings below, whether it be flags or things like screen resolution.
Located in the mod directory, is not used until user starts setting overrides for settings on a per-mod basis.
2. Mod's default settings for flags and such, included with the mod to allow the author to provide suggested settings for things such as ambient factor. Also includes information about the mod such as what content to use. Equivalent to today's mod.ini. Again, located in the mod directory.
1. User's user defined settings for the engine itself. These are the defaults which the engine falls back on in the absence of the above two settings. These are located where the builds are located. Most settings are located here, except for those which are mod-specific such as the TBP warp effects.
0. Hardcoded default settings per build (as if you ran without any flags at all).
Note that 3 overrides 2, 2 overrides 1, etc, although I do not believe that #2 should be capable of setting things which can adversely affect system performance. Video settings are the purview of #1 - the user's global settings. In other words, we should limit what mods are capable of setting, so that we do not wind up with people having to edit their mod's files to get it to run well on their systems.
Maybe we could also have settings which more adversely affect performance be grouped together for ease of access.
:yes: :yes: :yes:
i like this idea. there is no reason to change some settings such as joysticks and video resolution for every mod you download. so configuring a new mod to play should take little or no time at all. per mod settings means i can keep settings for mods in development. the only thing id change is ad a new alterantive to level 3 for debug mode (running the game with a debug build) settings.