Multichannel vs single-channel – which way to go?

(This blog has been updated – see the update at the end of the text.)

If you’re a cockpit builder, you’ll eventually have to make a choice as to whether to try to run everything for your sim on the one computer, or to use multiple computers. Depending on how much hardware you have, you may simply have no choice. Once you start adding things like Active Sky Next, external avionics packages etc, your performance will nose-dive pretty quickly even if your PC is as fast as it gets. Raw, single-thread CPU speed stopped doubling every 18 months back when multi-core processors became the norm, and there are genuine physical barriers that are likely to keep CPU speeds at a realistic maximum of 5Ghz for the foreseeable future.

Thankfully, many external add-ons – those that do not run directly as plugins within the simulator – can be configured to run over a network from a different PC. So you can set up another machine with stuff like ASN on it and keep that precious CPU time for the simulator software. This is pretty normal stuff for sim-builders and has been for years, and most sims have at least two, and often more, PCs

There’s a further level of multi-PC setup, though, and that’s a multi-channel rig. This is where there are multiple PCs running the simulator itself. Microsoft Flight Simulator (and, for that matter, X-Plane) were not originally designed to allow this, but if you need it then the community usually provides, and a chap called Luciano Napolitano built a utility called WidevieW. This binds one or more client PCs to a server PC, all of them running the simulator software – whether FS9, FSX, or these days P3D – and synchronises all activity from the server PC to the clients. You fly on the server, and the displays on the clients keep up with you and do the same things that you do. For simulators using multiple monitors or projectors for the outside view, this lets you hook each display up to a separate client PC and run them all in parallel.

The primary reason for doing this is that each additional outside view you open up in the simulator will lower your frame rates, often drastically. With lots of add-ons and several views, it’s not uncommon to see frame rates drop to single digits. Views on separate display devices have a higher impact than multiple views on a single display, and views on multiple graphics cards – given that the most displays a single GPU can handle is usually 3 or 4, so if you have more you’ll need multiple GPUs – has a higher impact still. WidevieW and similar solutions are the way out of this dilemma.

The reason why most proper sims have multiple outside views is because of the way that FSX / P3D generates its view. In principle, you should be able to group a bunch of displays or projectors together using NVidia Surround or AMD EyeFinity (or a hardware solution like the Matrox Triple Head 2 Go) and have it as one big display with a single outside view in the simulator, and that would be fine, except that FSX was designed back in the days when most monitors had a 4:3 aspect ratio and were no more than 21″ diagonally, and the view engine makes assumptions based on that. Specifically, FSX (and thus P3D, which has not so far changed this) assumes that your outside view should fill about 50 degrees of your visual field of view, and draws it accordingly.

The 3D scene being rendered is spherical (or more accurately, hemispherical from your view direction) and the GPU maps this onto a virtual planar surface, which is what gets drawn onto your display. To ensure that perspective (which is related to the distance from an object in the scene, and the zoom factor of your view) is preserved, the simulator rendering engine will horizontally stretch the edges of the view, so that round objects become elliptical. You can see this easily by moving your view directly in front of a round gauge on the instrument panel, and then rotating the view to the left or right. As the gauge approaches the edge of the window, it’ll start to distort. This happens whenever the effective field of view exceeds about 50 degrees. If you zoom right back out from a default view, you’ll see it almost becomes a fish-eye lens view.

FSX introduced a Wide Aspect View setting that you were supposed to turn on if you had a widescreen display. This doesn’t change the rules about the default FOV, though, and the same perspective correction applies. It changes the way that zoom works instead. It would require a lot of explaining that I don’t really want to do here, but this series of videos from Almost Aviation does a great job explaining the whole outside view / FOV / zoom thing in some detail.

(Almost Aviation is a brilliant channel, BTW, and you should definitely subscribe. Right after you subscribe to my channel. Hint hint.)

So if you have, say, a 180-degree screen like mine, and you create a 180-degree wide view, then the edges are going to be very stretched. Experimenting with different view settings and zoom factors may give you something you’re happy with – as I have done – but it’s absolutely a compromise. Further, if you have a curved screen rather than an array of flat screens, for example, you have another issue, which is that the view engine is trying to draw a hemispherical scene onto a flat plane, and then you display that flat plane on a curved surface, which introduces further distortion. Although your warping and blending software lets you correct for the essential distortion of the projector image, it doesn’t magically un-bend straight lines, and so runways, for example, do not have the correct perspective when viewed across the whole screen. Rather, they appear to bend around a curve. You can improve this by moving your seating point as near to the centre point of the screen radius as you can – the distance from your eyepoint to any point on the screen is thus about the same, and this minimises the curvature that you perceive, not least because you can’t get the whole of the screen in sight at any one time.

To fix these problems, really serious sims use a series of outside views lined up next to each other. Usually this will be one view per projector or monitor, but you can in theory have two or even more per display device if you’re willing to accept the frame rate drop. By keeping each view to no more than about 70 degrees FOV and with the correct zoom factor, the perspective distortion is removed. There is still some distortion present though, because at the boundary between two views a straight line will have slightly different angles, since each view is still a flat plane being projected onto a curved surface. You can fix this with the warping software, but it’s really hard to do this by hand. Thankfully, many warp & blend packages include tools to help you do this, and in some cases will calculate all the view settings for you, and export them for you to import into your simulator.

If you’re going to do this, you simply have to go multi-channel. There’s no other way to do it and get frame rates that don’t look like a slide-show. This is how many sims end up with as many as half a dozen PCs controlling the outside views and other networked software.

In terms of multi-channel solutions for FSX / P3D, there are currently two for FSX and one that is P3D-only. WidevieW, mentioned earlier, is available for all versions of P3D and FSX, and also FS9. Opus FSI provides a multi-channel view module as part of its toolkit that works on FSX and P3D. Finally, P3D itself has provided a native multi-channel mode since version 3.2 – but this requires you to run the Professional Plus version of the software, which is much more expensive than the Professional version, although you only have to license the server PC; as many clients as you like can be networked free of charge.

I’ve tried all three, and I can say that the best, without a doubt, is the built-in P3D multichannel function. Everything is properly synchronised and just works. However, performance of your clients is directly related to the performance of your server, and if the server FPS drops below a certain threshold, the FPS of all the clients is halved immediately. This caused significant and frequent visual stutters for me in high-density add-on scenery areas. Also, adding any AI traffic at all into the sim totally crushes the frame rates. To be fair, I haven’t tried multichannel in v4, and I’ve heard it’s a little better; nor have I tried using an external traffic injector like Ultimate Traffic Live, but I doubt that I’d get frame rates I was happy with this way.

The best from a performance perspective was WidevieW. The client FPS doesn’t depend directly on the server FPS, although you need sufficient FPS on the server or else the movement of the aircraft on the clients becomes laggy irrespective of the actual frame rate achieved. There are a few gotchas which are harder to deal with, but there’s plenty of advice available in the product manual, and I found answers to most of my problems eventually. That said, there are reported problems with weather synchronisation (specifically, clouds crossing the boundary between displays) which I didn’t experience as I was only using a single outside view on my client machine. There are also what I think are bugs in the new 64-bit version of the software that haven’t been ironed out yet – the model of my aircraft would occasionally appear in front of me and ‘fly’ back into my view, which is very disconcerting and ruins the immersion – and in the end, I made the decision to switch away from a server-and-client approach. I tried installing OpusFSI but I couldn’t get it to work at all in P3D v4 and to be honest, I couldn’t be bothered to try to fix it.

In all cases, you should prepare to be largely on your own if you go multi-channel. It’s a minority use case of a minority group (sim-builders) of a minority group (sim-users) and so there’s no real community to support you. Most of the people doing this seriously are building commercial simulators and they just don’t talk about how they get their best results as it’s effectively a commercial secret. Posts on Lockheed’s P3D forum often go unanswered. Luciano, the author of WidevieW, does his own support and is super-busy and not especially responsive on email (I requested access to the private forums for WidevieW customers several months ago, and I still haven’t gotten a login). You can work all this stuff out, but it will take time and experimentation.

Until recently, my setup was a server PC running P3D, the G1000 sim, Active Sky Next, and all the USB devices and controllers, with a client PC running the projectors via a TH2GO and NTHUSIM as the warping software, with just P3D and WidevieW and Widetraffic to connect them. This worked pretty well, but the bugs I mentioned above eventually drove me to change to my current setup, which has the server PC running everything except the G1000 software and hardware / displays, and the G1000 running on the client PC. I still have P3D on the client machine, with WidevieW installed, so that I can use my G1000 displays for in-simulator avionics. I could in theory just plug the G1000 displays and USB into the server PC when I’m not using the G1000 software, but that’s too much like hard work! Instead, I run P3D on the client with WidevieW and create a view to show the relevant panels on the two G1000 device monitors, which syncs up with my server which is doing the actual flying and generating the outside view for the projectors. This works OK, and the bugs in WidevieW don’t affect me because there is no outside view on the client PC.

So, should you go multi-channel? Well, if you plan to have a sim with more than one display and you want a correct perspective view, you pretty much have no choice. Some people claim to get satisfactory frame rates generating three outside views from one super-beefy PC, but my main sim PC is extremely fast and heavily overclocked, and I can’t get anywhere close to performance I’m happy with two windows open, let alone three. Maybe if you fly GA into small airfields all the time and most of the scenery you see is landclass plus autogen, yes; but I fly low and slow in high-complexity areas like London and other large cities and frames are poor on a single view! In the end, I’ve compromised on a single view and distorted edges, minimised with a few tricks of zoom and eyepoint positioning.

I still ended up going multi-channel because I’m running lots of external add-ons like Flight1Tech’s G1000 simulator, which uses a lot of CPU in built-up areas, and because it’s the only way to display the panels from many of the aircraft I fly on a separate machine. I could buy (and have bought) one of the packages that lets you create your own 2D networked panels from a set of included gauges, and this works well for some aircraft, but many of the best aircraft have custom gauges with significant custom software (like Carenado’s in-sim G1000 with Synthetic Vision on the TBM 850 etc). There is a utility called FSXSpy which seems to ‘copy’ the output of 2D panels or pop-ups to another machine over the network where they can be displayed, but it doesn’t work with P3D at all and as the developer sadly passed away last year, I doubt it ever will.

Will I ever go properly multi-channel, with multiple views across multiple clients, again? Yes, probably. My plan is to build a new simulator in the next few years with a much larger screen and a full cockpit enclosure, and to do that and get a correct display of 180-220 degrees, I’ll have no choice. Hopefully by then, P3D’s own multichannel solution will be improved and allow for adequate performance that I can live with.

In the meantime, I keep experimenting. If I find a solution that works better than what I have now, I’ll certainly use it. One area of potential hope is the Simultaneous Multi-Projection tech introduced by NVidia in the 10 series GPUs. This was really designed for VR use cases, but it lets you set up multiple views onto the same 3D scene and have them properly corrected for perspective in a single pass – avoiding the need to render each view’s frame completely from start to finish – and if that could be applied in P3D it should allow the frame rate hit for multiple outside view windows to be absolutely minimised. But there’s no sign than Lockheed is interested in this, and so far, industry take-up of SMP has been almost non-existent, probably because it requires DirectX 12 and most games companies are reluctant to make their software Windows 10-only. I imagine Lockheed feels the same, and even though it ought to be possible to make it an optional module, the current low-hanging fruit for their development team is more than enough to keep them busy on the way to P3D v5. We’ll see.

Update: 14 January 2018

I’ve actually gone back to a single-PC setup! While my WidevieW based solution worked up to a point to let me display control panels and avionics on my G1000 screens, it quickly became obvious that many aircraft simply don’t work this way. WidevieW does not seem to send all the simulator events, for example, so that some of the switches work but some don’t. On some aircraft, half my instrument panel just wasn’t working and I had to manipulate the switches directly on the other PC, which defeats the object. So in the end I gave up and went back to a single PC. To be fair to WidevieW, its primary purpose is to display out of the window views on client PCs, usually without any virtual cockpit elements at all – I was a bit odd to be using it that way, so it’s no surprise that it doesn’t work well for that use. P3D multi-channel does send all simulator events including all button pushes etc, so most – but not all – aircraft work as intended.

I’ve taken a bit of a frame rate hit, especially when running the G1000 simulator software, but I’m working on ways of optimising this, and will be using performance profiles – that is, different graphical and world settings for different aircraft and different geographical areas; flying a complex aircraft into somewhere like London? You need the sliders much further to the left than flying low and slow over countryside with small airfields in a simple GA bird. This is something that most simmers do. With a program like SimStarter from Aerosoft, you can automate all this and make it almost a push-button menu to start your simulator. More on that in a future post.

This doesn’t mean that I’ve abandoned multi-PC operation forever; I would still prefer to run the G1000 simulator software on a separate PC, but to do that I’ll need a quick and easy way of swapping the displays and USB connections between machines. By hand isn’t going to cut it.

The next time I try multi-channel, though, it’s going to be P3D’s built-in option. Since this requires upgrading my licenses (I have a pay-monthly developer license as I’m developing add-ons, so it’s not a super-costly upgrade) and, more importantly, re-installing the simulator and thus all the add-ons (I don’t think there’s a way around this), it’s not something I’m going to rush into. Maybe in the summer.