Multiplayer Mod Configuration Comparison
aqzina
Member Posts: 28
This idea popped into my mind while I was reading the Ask us anything thread, to a question related to multiplayer.
What I'd like to have is an easy way to compare the mod configurations of everyone connected to a multiplayer game, before the game starts (when people are in Beamdog's lobby, for example). Before the game starts, the mod configuration at the host side can be pushed to others, and maybe even have the option to overwrite the configuration at the client side, or temporarily refer to the files received (an override to the override folder maybe?)
I do not have much modding experience, neither do I claim to know how best this can be implemented, but here's a couple of free ideas thrown:
IDEAS
1. The mod configuration check could be a simple diff from what the original files need to be, where both the host (person hosting the game) and the clients have their game related folder checked, then know the difference of their configuration with the vanilla game so to say.
Then, the host (or Beamdog lobbying server) can compare the differences and make a delta analysis as to what needs to be pushed. This could be client specific (everybody receives the files they need to) or same for everyone (everybody gets the same thing pushed, but if some of their files are identical, that does not make much of a change)
When everybody succesfully receives the configuration, the game can then be successfully started.
2. The mod configuration check is based on the Weidu logs found in the folder, thus everyone knows what mod is installed in which order at the host side. The appropriate weidu commands are run with the proper version of the mode downloaded and installed (not sure this would 100% work, since the order of installation is also really important)
3. Similar to 1, but instead of downloading everything for the clients automatically, the system just warns about the difference of the configuration with respect to the host. The host gets a compressed folder structure that he knows he needs to push ( mod_config.zip if you may) and then can upload this to a file sharing website etc. so that the clients can download (decoupled from Beamdog, so the traffic is not over their servers). This step repeats itself until everybody has identical configuration
4. The difference between the vanilla game does not have to be done when everybody is sitting in the lobby, it can also be an offline comparison, similar to the check BGEE does on each file when a new update is there.
POSSIBLE ISSUES
1. The main issue I see is about the security, since the host pushes everyone his configuration, any virus-like file is also possible to be pushed. I can see that Beamdog would not want to have this, of course. In this case, if a "use-at-your-own-risk" disclaimer does not work, maybe the host delta configuration (the data that the host needs to push to everyone) is sent to Beamdog directly, and after a virus check or two, can then be sent to clients (or torrented, however distribution Beamdog wants to use)
2. Extra traffic and load on Beamdog servers (I cannot estimate how much traffic this could generate, with 100-200 sessions on, but this will be most probably only done once or twice at most, especially once the configuration is same everywhere, there should not be too much extra traffic, apart from the initial configuration check log sent, but then again, this log can be sent to the host directly also)
I think this is an idea that is worth -at least- being considered. A skeleton of the implementation can then be used to achieve modding on the other platforms that you cannot directly run the weidu tool. The vanilla iPad version can then be modified to download a configuration.
The "modding" in this case can be a pre-defined combination of options from different mods (say, SCS, Tactics, and an NPC mod, with selected options for improved mages, but not improved shapeshifting), but oh well, this should be the topic of another request.
TLDR: Have a mod configuration system that checks what exactly needs to be modified in order to play the game in multiplayer.
What I'd like to have is an easy way to compare the mod configurations of everyone connected to a multiplayer game, before the game starts (when people are in Beamdog's lobby, for example). Before the game starts, the mod configuration at the host side can be pushed to others, and maybe even have the option to overwrite the configuration at the client side, or temporarily refer to the files received (an override to the override folder maybe?)
I do not have much modding experience, neither do I claim to know how best this can be implemented, but here's a couple of free ideas thrown:
IDEAS
1. The mod configuration check could be a simple diff from what the original files need to be, where both the host (person hosting the game) and the clients have their game related folder checked, then know the difference of their configuration with the vanilla game so to say.
Then, the host (or Beamdog lobbying server) can compare the differences and make a delta analysis as to what needs to be pushed. This could be client specific (everybody receives the files they need to) or same for everyone (everybody gets the same thing pushed, but if some of their files are identical, that does not make much of a change)
When everybody succesfully receives the configuration, the game can then be successfully started.
2. The mod configuration check is based on the Weidu logs found in the folder, thus everyone knows what mod is installed in which order at the host side. The appropriate weidu commands are run with the proper version of the mode downloaded and installed (not sure this would 100% work, since the order of installation is also really important)
3. Similar to 1, but instead of downloading everything for the clients automatically, the system just warns about the difference of the configuration with respect to the host. The host gets a compressed folder structure that he knows he needs to push ( mod_config.zip if you may) and then can upload this to a file sharing website etc. so that the clients can download (decoupled from Beamdog, so the traffic is not over their servers). This step repeats itself until everybody has identical configuration
4. The difference between the vanilla game does not have to be done when everybody is sitting in the lobby, it can also be an offline comparison, similar to the check BGEE does on each file when a new update is there.
POSSIBLE ISSUES
1. The main issue I see is about the security, since the host pushes everyone his configuration, any virus-like file is also possible to be pushed. I can see that Beamdog would not want to have this, of course. In this case, if a "use-at-your-own-risk" disclaimer does not work, maybe the host delta configuration (the data that the host needs to push to everyone) is sent to Beamdog directly, and after a virus check or two, can then be sent to clients (or torrented, however distribution Beamdog wants to use)
2. Extra traffic and load on Beamdog servers (I cannot estimate how much traffic this could generate, with 100-200 sessions on, but this will be most probably only done once or twice at most, especially once the configuration is same everywhere, there should not be too much extra traffic, apart from the initial configuration check log sent, but then again, this log can be sent to the host directly also)
I think this is an idea that is worth -at least- being considered. A skeleton of the implementation can then be used to achieve modding on the other platforms that you cannot directly run the weidu tool. The vanilla iPad version can then be modified to download a configuration.
The "modding" in this case can be a pre-defined combination of options from different mods (say, SCS, Tactics, and an NPC mod, with selected options for improved mages, but not improved shapeshifting), but oh well, this should be the topic of another request.
TLDR: Have a mod configuration system that checks what exactly needs to be modified in order to play the game in multiplayer.
0