godarklight / DarkMultiPlayer

DarkMultiPlayer - A multiplayer mod for Kerbal Space Program
MIT License
280 stars 120 forks source link

Kerbals in flying vessels change upon server restart. #401

Open rsramek opened 7 years ago

rsramek commented 7 years ago

Another bug I cannot quite track down. I put a vessel into orbit with kerbal A. Come back the next day, and it's kerbal B in it. Trying to rectify this, I shut down the server and change the Kerbal in the vessel manually back to kerbal A (in Universe/Vessels/...) and in persistent.sfs. No dice, kerbals are good until I load the mission upon which they are switched by the client and uploaded. The only thing to be seen in client logs is: "DarkMultiplayer: OVC Malner Kerman belongs to xxxxxxx-xxxxxxx-xxxxxxx"

Could it be there is a list of names that is not synced and that's why the migration happens?

rsramek commented 7 years ago

Annoyingly, I cannot replicate this. Let me check overnight with other players on if it happens again.

81ninja commented 7 years ago

kerbal A is probably dead, missing, assigned to more than one craft, or assigned but the craft doesn't list it as crew. When the game loads it takes the next available pilot (kerbal B) and puts it in the command seat.

This may be caused by reverting, but also happens when different players use the same kerbals at different times (past / present / future).

It's all in the server files (Universe/Vessels and Universe/Kerbals). persistent.sfs has no power here.

EDIT: Note: when you change kerbals in vessels you also have to change the kerbal's current status file in /Kerbals/ (to either Available or Assigned), otherwise when the game loads the assignments are validated and any inconsistencies cause the problem you describe, and kerbals to be marked as M.I.A.

81ninja commented 7 years ago

Another possible cause: reverts.

I haven't fully reproduced it, but I noticed that when you revert during flight, esp. to VAB/SPH, the kerbals' statuses aren't being updated to the server, much like vessels or debris aren't correctly reverted (#400).

Also, when you revert, a kerbal may remain Assigned to either the active vessel and/or another vessel that wasn't correctly reverted. This causes it to be assigned to two different vessels when you load, which would also cause the problem you describe.