No Servers displayed in SWTOR
The real reason for this is unknown to me, but I was reading a post on the forum regarding the improvement in performance by simply setting the Compatibility checkbox on the executable properties to be that of Windows XP SP3. Their reasoning behind doing this was changes to the way VRAM and texture allocation in memory and so on. All of this was garbage but out of testing this, since I am always one to try and find ways of pushing the limits of the game to get better performance I found one unintended consequence.
While testing this out, I set the Launcher and the EXE compatibility options to be Windows XP with SP3, see below for where to set this, it can be set on the Shortcut that you launch the game from or the EXE for the launcher but for the SWTOR.EXE it needs to be on the EXE since the launcher isn’t starting the game from the shortcut.
The compatibility tab in Windows 7 and Windows 8 are a little different, the additional options in Windows 7 that are there relate to the use of Aero interface elements which aren’t in Windows 8.
But when testing it I set both of them to Windows XP (Service Pack 3) and everything was OK (and no improvement in performance) so, when finished my testing I also switched them back but I switched the launcher and not the EXE.
OK, now what this did and I have seen it before but as a consequence of something else. Was when I logged in the launcher took a little longer to verify what is happening. Play enabled I then continued.
The process then took longer than normal and then instead of the last character I logged in with showing up I was looking at the server list screen but it was empty.
As mentioned I have seen this before, I used a latency reduction service called BattlePing. It doesn’t as much lower my ping but provides me with a stable and fairly unfaltering connection to the servers. Though there are some issues that are outside of my control, but I won’t go into that at this time. That said, sometimes the connection can be a cause of problem, I change from Connection 1 to Connection 2 (I think it is the NIC at the proxy end personally) and it worked, then.
I tried this to no effect. But then I remembered that I had just changed back the compatibility setting on the launcher but not the EXE. I turned off compatibility mode for the EXE, started it and the application went through its normal start-up routine and did so at the normal speed. It logged me in an showed me the list of characters and my last logged in character available for play.
Now why did the application have problems simply because of the launcher having a different compatibility mode to the executable. Well one area would be regarding the way the networking stack is set up and how an application will use it. The launcher performs the log in, then when it fires the EXE off, there is something that is passed into the EXE to indicate that this user is logged in and should proceed, but I also launch the launcher with elevated permissions using UAC, Windows XP has no concept of UAC, but Windows 8 still requires it.
Above is a process of this. This is only a guess as to one reason. But another reason is the fact that application compatibility uses a set of Shims, which is a set of shunting APIs. Due to the changes in the network stack between Windows XP and Windows 8, when it has been created under Windows 8, then when the EXE runs under compatibility mode, there call to the API is then redirected by the Shim to access network protocol APIs that return not the information require. If the structure of the return data has changed then this will cause problems. But there are also restrictions accessing code that runs in Kernel mode (like device drivers), so DirectX does this and therefore the differences between the Windows 8 and Windows 8 + Shim + Windows XP (Service Pack 3) is not compatible
Networking: TCP/IP Stack and the Windows Filtering Platform. The networking stack was completely rewritten for Windows Vista. Instead of the dual-stack model that exists in Windows XP (to support IPv4 and IPv6), the networking stack in Windows Vista implements a new architecture in which there is a single transport and framing layer that supports multiple IP layers. The new stack is modular, flexible, and extensible. While all attempts have been made to maintain application compatibility with the existing applications that interface with the stack at various layers, there are nevertheless changes (that are mostly side effects of the improvements) that might cause potential application-compatibility issues.1
Application compatibility is a last result to get applications to work on new operating systems. By nature they were created due to the changes and optimisations made in newer operating systems. They can resolve a lot of issues by redirecting or injecting code to enable the application to receive data from the OS or talk to the OS like it is the OS intended to run on.
Remember the launcher and the client EXE need to run at the same level of application compatibility to work properly. If it is in Windows XP mode or Windows 8 or Windows 7 mode.
1. http://technet.microsoft.com/library/ee449431.aspx – Understanding Application Compatibility, TechNet, Microsoft