Page 1 of 1

[0.17.34] [mod, MP issue] Unable to join save created in 0.17.33 until saved/reloaded by the server.

Posted: Fri Apr 26, 2019 5:38 pm
by eduran
Save games created in 0.17.33 with LTN Tracker active do not allow anyone to join when hosted for the first time on a 0.17.34 server. Error message is

Code: Select all

Cannot join. The following mod script files are not identical between you and the server.

mod-LTN_Tracker
If the server is shut down (creating a new save in version 0.17.34) and restarted from there everything works. Single-player also shows no problems. Due to the relatively easy workaround this not a big deal, but I thought I should report it anyway.

Attached is an example save game showing this behavior, the LTN-Tracker mod and its dependencies.

Re: [0.17.34] [mod, MP issue] Unable to join save created in 0.17.33 until saved/reloaded by the server.

Posted: Fri Apr 26, 2019 6:33 pm
by Rseding91
Thanks for the report. This error comes from mods implementing startup settings incorrectly and conditionally requiring stuff based off startup settings.

Re: [0.17.34] [mod, MP issue] Unable to join save created in 0.17.33 until saved/reloaded by the server.

Posted: Fri Apr 26, 2019 7:17 pm
by eduran
Those three mods don't have any startup settings. And LTN Tracker does not do any conditional requires at all. Could you elaborate and what is implemented incorrectly here? Because LTNT is my mod and I am interested in fixing it.

Edit: I have a couple of questions, to better understand what the issue is.
First, my idea of how this works:
  1. Server loads map. This is equivalent to doing the same thing in singleplayer. on_init/on_load, migrations, on_configuration_changed all run. Server pauses game.
  2. Someone joins. The server saves the map and sends it to the client. This new save is different from the one originally created.
  3. Client loads this new save, resulting in a game state different from the server. Joining not possible.
Is this correct?

Assuming yes, which point of the Data Lifecycle does the client reach in point 3? Does it run control.lua init and on_load or does the state check happens before that?