godarklight / DarkMultiPlayer

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

Sending vessel infos might might cause short freezes #217

Closed Kakyokuu closed 9 years ago

Kakyokuu commented 10 years ago

I am not sure at all about that issue because I am trying to investigate on freezes my users encounter while they are on the server and not in solo. For information, the server is modded.

We tested some flights with my users and we noticed that when the game got frozen the debug console log displayed that sort of message : [Log]: [5748.527] DarkMultiPlayer: Sending vessel 6598b00c-6768-4836-83d3-aed6363e621d, name Redshift v1, type: Ship, size: 145615

The creation of a lot of debris (crash) seems to create the same issue (can't get you the log for the moment)

oldmud0 commented 10 years ago

How big is the ship? What modded parts are on the ship? Can you confirm that the vessel is 145 KB?

Kakyokuu commented 10 years ago

The vessel file is 145KB yup. Here's a pastebin of the vessel's file : http://pastebin.com/9cSMCTEJ The vessel itself is not that big : http://puu.sh/bR895/ed9128f96d.jpg and as far as I know, this issue occurs with either large or small vessels. As modded parts, there are : 1 PX-STAT 1x2 Photovoltaic Truss from Near Future 1 Z-400 Rechargeable Battery from Near Future The Mobile Processing Lab MPL-LG-2 has been rescaled to match SC-9001 Science Jr. size.

You can find the total mods list here : http://forum.languagecraft.tv/viewtopic.php?f=84&t=5184 (first part in french, second part in english)

oldmud0 commented 10 years ago

Wow, those are a lot of mods. This is definitely going to freeze someone's game. Not only that, but you have things like TweakScale and Infernal Robotics that aren't quite as stable.

I'm guessing this might be because it's flooding the clients with vessel data, or KMP isn't able to keep the "vessel creation" window open for so long.

godarklight commented 10 years ago

In DMP, a vessel is sent every 30 seconds, or immediately if there's a part count change.

This calls Vessel.Save(), Which might be a little expensive. I'll have to profile this on the way to 0.1.6.

In either case, the current Kill/Replace trick DMP uses to update the parts is far too laggy for the game, which will defintiely cause pauses.

godarklight commented 9 years ago

Fixed via ba0b0ffc13eb9cc3884d62d43911313c7ed04277