It’s been another crazy week of re-architecting the way multiplayer match-making works to handle the number of users.
Today we are pleased to announce the new update:
Here’s what’s new for this week:
- Additional connectivity optimizations and improvements
- Lord Erebus: Bite's Mana Cost increased, Damage decreased, Armor Reduction decreased
- Fix for looping audio track after leaving character select screens
- Fix for audio volumes not being reset on restart
- Adding /skipintro command line to bypass intro movies
- Players will remain connected to facilitator if they fail to connect to other players, provided they can connect to the host. The host ultimately can kick people with problematic connections to others.
- Favor Items fixes, but still some assorted issues that should be addressed in the next update.
- Major optimizations to audio on low fidelity settings
- Fixed bug that occurred if you used an ability after issuing an attack command. This is the "won't chase the demigod I clicked" bug.
- Sending deltas for partially completed achievements.
- Each player now saves their own achievements and favor items
- Fixed partial Achievement saves bug.
- Fixed a bug that occurred if you accomplished an achievement in game.
- Fixed a bug in disconnect dialog that would try to update it even if we had determined we did not want to show it
- Changed resample rate to 24k in Low settings
- Delayed FMOD initialization until audio LOD is set via options
- Disabled hitbox interference from announcer messages.
- Life's Child no longer removes Inner Grace (Sedna fix)
Now, that said, what’s NOT in this update?
- Robust multiple IP support. If you are talking to the Internet with more than 1 IP, you may have a harder time connecting. This is because you might connect to 1 player with 1 IP and to another player with a different IP. We have gotten new code from Raknet to address this but it will take time to integrate and test.
- Better NAT. We have a slew of improvements to the NAT thanks to the Raknet update we got this week but again, it will take time to integrate and test.
- Route through host. This works and we came “this” close to putting it in. The problem is, not all players are really in a position to be routed through. Now, my machine could do it. But we don’t have a way for Billy Bob with his DSL line from trying to host a game with 10 players.
- Route through dedicated proxy. This too works but we do not have the code in that lets it intelligently pick which proxy (i.e. someone in Japan is not going to want to use a proxy in Virginia).
And lastly, let’s talk about 5 on 5.
There have been other peer to peer games. But the connectivity complexity is C = D * N*(N-1) where N is the number of players and D is the raw data being exchanged. While Demigod supports 5 on 5 multiplayer in custom, LAN, and single player, I have to tell you, unless you know who you are playing with, you’re asking for trouble if you try to do this with strangers. Even if you manage to find 10 random people to play with online and they all manage to connect to each other, when you get in game, because the game is synced, you’re going to likely have a non-ideal experience.
Let’s work through the formula where let’s assume D = 10.
With a 3 on 3 game, which, according to what I’ve seen in Supreme Commander, is the typical largest game people get into, C = 300. On Battle.net with Starcraft, the max number of players is 8. C = 560. But when you go to 10 players, C = 900, nearly double the complexity of trying to do an 8 player game.
What our work has been these last 2 weeks has been to re-architect the system so that we can bring down that D multiplier. That’s the only part we can control.
When trying to connect players together, each player, based on their internet connection and PC performance has their own threshold of what variable C can reach before things fall apart.
In the beta, we were able to bring our variable D down by adding more servers. And most beta testers had high end connections and PCs so they had relatively high thresholds before variable C had problems.
But clearly, in release, that threshold turned out to be a lot less. The first inkling that our D variable was way too high was that the pirates who were pounding the server that first week were able to overwhelm our servers. To put things in perspective, Impulse typically gets around 300,000 users using it each day and it doesn’t even break a sweat. But a mere 140,000 connections that first week brought Demigod’s online experience to its knees.
We were able to get a reprieve that first week by shuffling users off to a new set of servers to get them away from the warez users. But as the game has continued to sell (and it looks like it’s going to break the 100k milestone shortly).
So the thing we continue to do is try to lower that D variable so that more and more people with marginal systems can get in. There will likely be lots more updates as we find new ways to squeeze it. In the meantime, your best hope is to try not to go nuts with the # of players unless you know them.
We will probably have another small update tomorrow as we continue to refine this.