Forged Alliance Forever

The community-driven lobby for Supreme Commander : Forged Alliance.

Development Update: The lobby and networking

To raise awareness and shed a little light on what goes on with development on FAF, I will start being a bit more active with communicating publicly about what we’re working on. I will be slightly technical, but I will try and remain understandable to the masses. I’m thinking bi-weekly posts for now.

In this post I’ll write a little about the lobby, how the server does connections between players, and how we’ve been working to get problems with this ironed out for the next release. Finally I’ll talk about ingame crash issues.

Lobby

The lobby has old roots. It was originally developed for Supreme Commander by GPG in 2005, a full 10 years ago. Since then, it has been worked on tirelessly by the community, receiving many updates–each one with good and bad parts.

In 2011 when Ze_PilOt created FAF, the lobby needed to work with a different client and associated server than it was originally designed for. To accomodate this, updates to the lobby code were made so it would tell the server when peers were connected to eachother–information that the server would use to determine whether or not to connect players through proxy, something that GPGnet was unable to do. This worked for a long time and FAF has been able to (And still is) connect many players that would not be able to connect on GPGnet.

Over time the lobby has received more updates that have introduced new features–each one taxing the start up time of the lobby a bit more. Start-up time isn’t typically a big problem in itself–it’s something that people are used to and typically solved with patience (We’re not talking minutes, after all). But this has exposed a problem with how the update I talked about earlier works: For the lobby to tell FAF that players were connected, it needs to be able to do so in a timely manner–otherwise the server will tell them to connect through the proxy. So in this case, increased start-up time now means that players who do not manage to run the lobby fast enough, will get proxied to other players.

Rethinking connections

To solve this problem, we’re changing how FAF will connect players that are joining a game. Instead of relying on the lobby to tell the server that peers were connected, we will use the game engine to send packets back and forth between peers in different ways, each time testing for success. If this is successful, we can safely tell the lobby to connect and know it will succeed, because we just tested it.

The proxy will still be there, but it will only be used in case it is impossible for the players to connect through other means.

To test this, we will put a seperate client online during this week that connects to the development server and connects to other players on there.

Game crash and desync issues

Since patch 3640, we have had a few crash-related issues reported that we did not previously–others that the game has had a long time. A few technical problems have been identified and patched for the upcoming release already, but we have unfortunately not conclusively solved crashes. Part of the problem is that we cannot reproduce these crash issues consistently, which means that it’s terribly hard to identify where the problem lies.

So I’d like to request that we get more reports from players when they experience any kind of crash/freeze/desync. It’s very important that the report contains as much information as possible, to list some requirements:

  • Replay ID
  • Game log
  • Time of crash
  • Kind of crash (Did the game freeze? Desync? Was there a core dump?)
  • What were you doing at the time of the crash?

Remember to post a report in the tech support section of the forum including at least these details, and preferably any other relevant information you may have!

This post on the wiki details how to get the game log before posting in the tech support forum.

 

Kind Regards,

Sheeo