![]() ![]() I apologize for the inconvenience, for sure, but the fact that this is a beta AND a completely novel networking approach attached to a novel multithreading approach (which is why things like mods can work in MP, even complex code-oriented ones, which is unheard-of without modders normally having to know enough about MP to code their part themselves - not the case here). It's been delayed repeatedly, but the core is super solid and I've been the one holding it up because I've been torn between so many things. There's also the upcoming DLC work, where I'm substantially the only artist working on it, and I'm adding a lot of supporting code and such as well, and it has an absolutely insane amount of new art. The UI flashing and things disappearing is a case in point. However, one casualty of the new approach is that it requires a whole new set of testing, and sometimes when I fix one thing I break something else. The new approach is novel enough that I'm considering writing some form of paper on it, because it allows for some new advances in large multithreaded simulations in multiplayer. ** Thanks to a huge number of folks for reporting the problem, and bearing with us while we tried to figure this thing out!ĪI War 1 "just works" specifically because it was vastly simpler to code (I coded it), and also does not have a lot of hugely convenient things built in like compensation for a slow client or host, hot-joining games without having to resync all clients, etc.ĪI War 2 has some known issues with MP at the moment, but there is just one guy working on that code (again, it's me). In the end, just making it so that the host sends a message of "I'm sending them all, or I'm just sending a few" is enough to make it so that we can only run the delete method when it sends them all. **** This was easily triggered by making transports load or unload, but other things could also trigger it. Of course this would cause massive lag and other problems. If we had 3 fleets out of 200 that needed to get quick updates, it was deleting 197 fleets and all the stuff in them. except with the fast sending of partial data. So it had logic in there to delete any fleets that were not included in the update data (since those clearly did not exist on the host). **** But the problem was, this was a general-purpose fleet sync tool that normally synced ALL fleets for a faction. The goal was to have it update fleet data faster after a load or unload of transports, to keep strength numbers accurate. *** Thirdly, and lastly, I added in a rapid-sync function for fleets a few releases back (around when this all started). It would have been more noticeable if it was not for the third issue. **** This was something that was more periodic rather than happening absolutely every frame, and fixing this definitely fixed some errant client explosions, but was not the core issue that was making MP unplayable. When those were sorted by strength, then it would cause an order mismatch on the client and the host, which led to all ships in that fleet line (and probably then a cascade of others) being deleted. *** Secondly, we recently added sorting to the fleet member groups. **** This is probably good for some edge cases, some of the harder to track down ones, but it didn't help the core problem here much. They now add themselves to a new form of central registry, and do a better job of getting killed - or updated - by the host if the client requests a ghost check (hey, is this ship dead for you?). ![]() *** Firstly, ships that are suspected of being ghosts on the client are never allowed to just delete themselves if they don't hear back. ** So, overall, there was a three-pronged strategy to fixing this: It also happened for other seemingly-random reasons. I could never really duplicate that on my own machine, but it turns out that loading and unloading transports would cause it instantly to happen. ** The short of the problem was that lots of ships and even fleets would disappear for clients periodically. * Fixed a cluster of three issues that were combining to make one of the most tricky MP bugs in recent memory, and which were also making the game fairly unplayable for MP clients for a week, or a week and a half (time is hard it may have actually been a bit longer, this has been a crazy time and a crazy bug). This is finally fixed, coming next version! Originally posted by x-4000 (Chris McElligott Park): ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |