Well last night we released an update to the general public and it was a cluster. After investigating it, it appears that much of it had to do with users with the beta and users with the release getting into each others games (the version numbers of the exe and dll were the same and that’s what the servers check on). We also found and fixed the issue where people were ending up with “Test” names which occurred mostly when people with the beta were joining games hosted by someone with the release. And lastly, we found a case where a debug statement could cause a lobby crash when someone exited.
Anyway, they’re copying up the new update now but due to the time of day, the interwebs, they be slow this time of day.
This update doesn’t have the new EXE we received from GPG. We wanted to get an update out quickly that took care of as much of the pain from last night as possible.
Meanwhile, the Raknet developer is here working with the Impulse team on the proxy updates that we hope will be up this week also. I want to double check with GPG to make sure the favor point stuff is really nailed down here.
For those of you having problems, I share your continued frustration. I apologize for the inconvenience. We have our top people working on this. I wish I could say “Oh, it’s a bug and here’s how to fix it” but it’s simply a lot more complex than that when it comes to putting together a P2P match making system that has to work with so many different setups.
One of the things we’re doing on our end is to come up with an internal proxy system that will let people connect to other people via people they can connect to (got that?).
Let me draw a picture.
Here’s how P2P works today:
Alice must be able to connect to Bill, Sally, and John.
When Demigod shipped (1.0) Alice would call a NAT facilitator that would give Alice the IP address and port number to connect with Bill, Sally, and John. The problem with that is that if Alice failed to connect to anyone, she couldn’t get into the lobby and NAT facilitation is slow.
With today’s update, Alice will first try to directly connect to Bill, Sally, and John on port 6112. If those people have that port open and forwarded to their PC, it will connect quickly. If that fails, it will resort back to the slow NAT. If they connect to at least the host in a custom game, they enter the lobby and then begin trying to connect to everyone else in the lobby. Then, the host can at least pick and choose which people to keep and not keep if there’s someone with a poor net connection.
With the next update, it will work like this:
In the event Alice can’t connect directly to Sally but could to Bill and John, our system will route the traffic through Bill and John based on who has the best ping.
Now, if Bill and John both disconnected from the game, Alice would get zapped. But on the other hand, if Alice could only connect to 1 person (some people with Qwest have this problem) she could still play in a 10 person game because the other 8 people would be connected to her via the person she has a direct connection to. The good news is, we have this working internally right now. It’s not some theory but something we’re testing. The bad news is that it probably won’t come up until next week. But if this system works, it opens the door to all kinds of highly robust multiplayer scenarios. Now if only we had thought of this a month ago…