G-LiTe
21st Nov 04, 8:04 AM
Okay, I'd like to start off by not leaving the impression this game is entirely bad, because it in fact isn't, really. I'm probably one of the few people not complaining about all those minor balancing problems. Instead, all I really want to see is improved online play. Right now, it's simply horribly broken. If anything really requires an (emergency) patch here, it's the networking code.
DoW at the moment seems to mix concepts of server/client and ring networking for some reason. I don't know if this is all GameSpy's work or Relic's work or Whoever's work, but that's already pretty darn wrong if you ask me, especially when you look at the state of the internet these days.
To start off with, there's a host. Everyone connects to the host, and the host pretty much manages/controls the entire game. Top down it all looks very much like a regular server/client based game. Yet when you look at the console, we're directly connecting to every player in the game? For what purpose? Apparently player info, badges and banners are transfered that way.
Is this meant as bandwidth preserving? I honestly don't see a reason to do it. Player info should be managed by the host, as it's pretty much essential to the game anyways. Badges and banners are a total of about 50 KB average, which is done in seconds on high bandwidth connections, but can take a fair bit on 56 Kb/s connections. This adds up to 250 KB in a 6 player game, and do we really want to do this to a poor low bandwidth player?
Hosting as a modem player is already pretty much a no go; most of the time it's either a cable modem, DSL or university network player hosting the game. Wouldn't it make more sense to send the banners and badges once to that host, so he can upload them all once to every player in the game?
Then there's ofcourse the routing and firewall problem. "Did you forward your ports? Disable your firewall!" I have a nice story for all the people who think that is the obvious solution: University and corporate network system administrators will eat you alive, even if they are firmly against cannibalism, if you manage to forward ports on their routers without their permission. To get to that, you'd have to be a darn good hacker. They will merely slap you in the face for trying to get permission, though.
But that doesn't take away that for most firewalled players or players behind a router it is impossible to get these ports opened. And even if people could, these things usually have a security aspect to them aswell; you don't want to disable your firewall with moronic messenger spammers, worm writers and hackers out on the internet. This is clearly another reason why connecting to every player is insane. With a bunch of friends, there usually is a high bandwidth host with the ability to open his ports these days anyways, why should anyone else if they can connect to that host? Random internet games are hosted by these people aswell, because they simply can't otherwise: their game would get kicked by the masterserver. (This is from experience.)
As an example, I come from an Unreal community as you might have noticed from my forum signature. But we're generally a bunch of internet friends who have been hanging out online with eachother for multiple years. DoW is one of those games that really managed to grab our attention, an Unreal community's attention. That's a community mostly used to an entirely different genre of games, but you managed to convince even me to buy this game. And when we had such great plans for a 4 versus 4 match, with all the players there, it turned out some of us were pretty much mutually exclusive ingame: not being able to connect with a specific other player already in the game, random drops before the game even started, etc. The horribly broken networking simply ruined one of the best games we could've had for some time.
It's easy to conclude that these two major reasons combined should be more than enough incentive to rewrite your precious networking code, good Relic sirs. I really hope you're actually reading this. You've created such a great game besides all this, we really, really, really just want to play this with friends!
Relic, please consider fixing your networking code!
DoW at the moment seems to mix concepts of server/client and ring networking for some reason. I don't know if this is all GameSpy's work or Relic's work or Whoever's work, but that's already pretty darn wrong if you ask me, especially when you look at the state of the internet these days.
To start off with, there's a host. Everyone connects to the host, and the host pretty much manages/controls the entire game. Top down it all looks very much like a regular server/client based game. Yet when you look at the console, we're directly connecting to every player in the game? For what purpose? Apparently player info, badges and banners are transfered that way.
Is this meant as bandwidth preserving? I honestly don't see a reason to do it. Player info should be managed by the host, as it's pretty much essential to the game anyways. Badges and banners are a total of about 50 KB average, which is done in seconds on high bandwidth connections, but can take a fair bit on 56 Kb/s connections. This adds up to 250 KB in a 6 player game, and do we really want to do this to a poor low bandwidth player?
Hosting as a modem player is already pretty much a no go; most of the time it's either a cable modem, DSL or university network player hosting the game. Wouldn't it make more sense to send the banners and badges once to that host, so he can upload them all once to every player in the game?
Then there's ofcourse the routing and firewall problem. "Did you forward your ports? Disable your firewall!" I have a nice story for all the people who think that is the obvious solution: University and corporate network system administrators will eat you alive, even if they are firmly against cannibalism, if you manage to forward ports on their routers without their permission. To get to that, you'd have to be a darn good hacker. They will merely slap you in the face for trying to get permission, though.
But that doesn't take away that for most firewalled players or players behind a router it is impossible to get these ports opened. And even if people could, these things usually have a security aspect to them aswell; you don't want to disable your firewall with moronic messenger spammers, worm writers and hackers out on the internet. This is clearly another reason why connecting to every player is insane. With a bunch of friends, there usually is a high bandwidth host with the ability to open his ports these days anyways, why should anyone else if they can connect to that host? Random internet games are hosted by these people aswell, because they simply can't otherwise: their game would get kicked by the masterserver. (This is from experience.)
As an example, I come from an Unreal community as you might have noticed from my forum signature. But we're generally a bunch of internet friends who have been hanging out online with eachother for multiple years. DoW is one of those games that really managed to grab our attention, an Unreal community's attention. That's a community mostly used to an entirely different genre of games, but you managed to convince even me to buy this game. And when we had such great plans for a 4 versus 4 match, with all the players there, it turned out some of us were pretty much mutually exclusive ingame: not being able to connect with a specific other player already in the game, random drops before the game even started, etc. The horribly broken networking simply ruined one of the best games we could've had for some time.
It's easy to conclude that these two major reasons combined should be more than enough incentive to rewrite your precious networking code, good Relic sirs. I really hope you're actually reading this. You've created such a great game besides all this, we really, really, really just want to play this with friends!
Relic, please consider fixing your networking code!