FS2020 with FSHost and large sessions

Started by twotonemurphy, November 27, 2020, 06:34:50 PM

Previous topic - Next topic


Hello Russell,

I have been looking for a solution for an issue my community has for MSFS2020. I livestream MSFS on YouTube & Twitch and have seen steady growth over the past number of weeks. Its an incredible sim. We usualy average 50-80 live pilots with us each flight. The current options within the sim are not powerful enough to keep control of the experience. I was looking at creating a server based system similiar to VATSIM and just before I started to sit down with a coffee to educate myself on all things to do with hosting multiplayer, I found your website.
I have not used your product before but from what I have read, it ticks every box my community is looking for. The ability to adminster, control access, kick/ban pilots, control weather etc.

I saw that you have started to look into compatability with MSFS. I am very excited about this. I no longer have to re invent the wheel!

Is there anything I can do to assist with this development? I cant do much on the programming side but Im sure I can help with some publicity.

Russell Gilbert


I'm afraid I don't have good news for you. I built FSHost using Microsoft's multiplayer API that they released for Flight Simulator. When FSX was released, they changed to a completely different multiplayer system that wasn't compatible with the old one, so I created FSHostClient to be an interface between FSX and a remote FSHost session on someone else's machine. This works fine, but all of the multiplayer connections are still in FSHost using the original multiplayer API.

The problem is that the original multiplayer API was written using Microsoft's DirectPlay, which is part of DirectX. It was created back in the day when hardly anyone had routers at home, and internet speeds weren't nearly as high as they are now. Plus, graphics cards weren't as fast as they are now, so there wasn't as much data being transferred.

The multiplayer API works by connecting every player in the session DIRECTLY with every other player in the session. FSHost does not relay the data between players - it basically just acts as another player, monitoring everything, but with the ability to control some aspects of what the players can do.

When everyone started getting routers, it became a headache because DirectPlay needs lots of ports to be forwarded in the router. But if it's setup correctly, it works fine for small sessions.

The problem is when you have more than about 15 or 20 players. That's when the amount of data becomes so high between the players that the session starts to become unstable. On top of that, the more people you have in the session, the higher the chances are that at least one of them doesn't have their router configured correctly, which can cause them to be dropped from the session, and sometimes even drop other people as well.

Assuming I'm able to update my programs to work with FS2020, I'll basically just be updating FSHostClient, the interface program between FSX and FSHost. FSX doesn't know anything about FSHost or the multiplayer API, so FSHostClient relays the data back and forth and makes sure each program has what it needs. So I won't really be changing anything in FSHost at all.

VATSIM took a different approach to their server because they knew they could have very large sessions. So instead of using Microsoft's multiplayer API with DirectPlay, they wrote their own protocol to relay the data through the server, not directly between each player. That gave them the ability to drastically slow down the data rate, which keeps the sessions more stable.

So, like I said, I'm afraid it's probably not what you're looking for. The solution would be to write some kind of new multiplayer server in place of FSHost, but you'd still need something like FSHostClient on each person's machine so it could interface between FS2020 (using Microsoft's updated FSX-style API) and the multiplayer server. Then the server could operate more like VATSIM.

However, another problem is Microsoft themselves. They've changed their multiplayer system multiple times over the years, sometimes being completely closed and proprietary, and sometimes creating entirely new systems that had no backwards compatibility with all the programs like mine that were created using their previous APIs. For that reason, I don't know of any other programmers that are working on this issue, and most of the people I did know have long-since given up and moved on to other things. I still maintain my programs and hope to add support for FS2020 but I'm afraid I have no interest in playing cat-and-mouse with Microsoft anymore either, so I won't be re-writing FSHost to work more like VATSIM.

Sorry, hope that at least helps give an understanding of the situation.