DarkMultiPlayer Client

DarkMultiPlayer Client

38.8k Downloads

Avoiding singularities - an idea for safely sharing stations

alxhub opened this issue ยท 3 comments

commented

I lost a part of my space station to a temporal anomaly (what I'm calling a DMP "singularity").

One one client I flew a brand new module from Kerbal to Minmus. I docked it to the station, no problems.

On a second client (which happened to be in the past relative to the first docking), I carried out a routine Kethane delivery, docking with the station and offloading some Kethane in the tanks before flying back for more.

Some time later, I synced the second client and took control of the station, then noticed my new module was nowhere to be found!

Here's what I imagine happened, based on my understanding of DMP:

  • Docking craft A with station S occurs at t=1, and results in the new combined craft (A+S) being saved by the server for t >= 1.
  • At t=0, the station still doesn't have A docked with it, that occurs in the future. So docking craft B with S results in B+S being saved by the server, for t>=0. This overwrites the later "version" of S.

The past overwrites the future. This seems reasonable, but somewhat dangerous for players attempting to share a single station. It also enables duplication of resources (if I refuel from a station in the future, nothing prevents another client in the past from also refueling).

I think DMP should have a mode to mitigate such "singularities", though. Perhaps docking with a craft that's been modified in the future (either by having resources shifted around, or having other things docked to it).

commented

Wow, I was asleep this morning. Last sentence should be: Perhaps docking with a craft that's been modified in the future (either by having resources shifted around, or having other things docked to it) should be disallowed.

commented

Reference #80

commented

Alternatively what about having a warning when approaching a craft that has been modified in the future and, if you continue to dock with it, once docked you're jumped ahead to a time after the previous-future modification took place.

Of course this might end up being way too difficult to implement, and possibly cause problems (what if the docking port you attempt to dock with is already docked with something in the future, or even if it's not what if your new vessel would intersect with something that was docked in the future?)