The most common complaint about Guild Wars from people who don't like the game seems to be the extensive instancing. Everywhere you go outside of town gets a separate instance just for you (or rather, your party). I happen to like a lot of the consequences of that, such other players not interfering with my fights, and mobs staying dead when killed rather than respawning ten minutes later. But it is a very different experience without seeing a lot of other players fighting nearby.
But what annoys me about the complaints is that the people making it don't seem to recognize that nearly all games heavily instance their content. Suppose, for example, that you play WoW and stand in Ironforge, just outside the bank. Do you see everyone else in the game who happens to be standing just outside the bank in Ironforge? No, you most certainly do not. 99% of them are on other servers, and hence invisible to you. That is, they are in separate instances of Ironforge.
There are some exceptions to this, of course. The main ones are games with too small of a playerbase to overfill a single server--meaning the company would like to instance content, but can't. The only other exceptions I'm aware of are EVE, which has an enormous world to let players adequately spread out, and Puzzle Pirates, which has separate servers, but gives each a separate map, so that a player standing on Tinga must necessarily be in the Midnight Ocean, and other servers have no analogous geographical location.
I understand that EVE has some very devoted fans, and people who want that sort of non-instancing may well have a decent case. But apart from that, the question is not whether a company will instance content, but how. The fans of WoW, WAR, LotRO, EQ2, etc. who decry the instancing of Guild Wars often seem to not recognize that their own preferred game is extensively instanced via servers--on top of the Guild Wars-style instancing of a separate instance for each party in selected locations.
If the question is how a game is going to be instanced, then separate servers is a rather clumsy way to go about it. Suppose that you need a party of six players to clear a dungeon, and there are sixty players online at the time who would like to party for that particular dungeon. That sounds like it should work nicely: partition the players into ten groups of six each, and let each of the ten groups do the instance.
But instancing by separate servers says no, you can't do that. The sixty players who would like to do the instance are spread across twenty different servers. Only one of those servers actually has six players who want to do the instance. Those six can't form a party and go, either, because none of them is a healer.
I'm not against games requiring parties to do some content. What I am strongly against is games requiring parties to do content without providing the means for players to form such parties fairly easily. And the separate servers issue is worse still: it actually prevents players who would have liked to form a party and should have been able to do so from forming said party. That is catastrophically stupid.
But the separate servers solution to instancing doesn't work so well in the open-world content that many players think of as non-instanced, either. Suppose that there are two different zones of about the same size, and built to hold about the same number of players. For whatever reason, five times as many players wish to fight in zone A as in zone B. If each zone gets one instance per server, then either zone A will be overcrowded or zone B will be nearly empty--or both.
One might hope that a company rebalances the zones such that zone A and zone B will attract the same number of players, but that's impractical. The ratio of high level players to low level players tends to increase as a game ages. Even if the player density of both high and low level areas can be about right at some particular point in time, there will be too few high level players well before that time, and too few low level players well after it. Even for zones of the same level range, players will figure out that farming one is more effective than farming the other, and some players will spend a lot more time in the former zone.
Another problem is time of day dependence. Most players are more likely to play a game at 7 pm in their local time zone than at 5 am. Most games have their playerbase fairly concentrated in particular areas. Language barriers encourage this when a game has different servers for different languages. If a game has separate servers for separate geographical regions (so that some people don't get a dreadful ping time because the server is 10000 miles away), this is guaranteed to be the case.
This leads to a given server often having several times as many players online at one time of day as at another. Even if the company could distribute the playerbase among the various regions of the game as they wish, a given zone can easily be overcrowded at peak times and then nearly empty in the middle of the night.
The solution is to allow the number of instances of a given zone to vary. If zone A has enough players to fill 15 instances, while zone B can't have more than 5 without seeming underpopulated, then let zone A have fifteen instances and zone B have five. Don't insist on one per server. If the playerbase dwindles at off-peak times, then let zone A have six instances and zone B two at the times when that's all that the playerbase can fill. Let instances be created and closed dynamically as players enter and leave. In case a player wishes to party with a friend who is placed in a different instance of the same zone, let players switch from one instance of a zone to another while inside the zone (perhaps in selected safe areas, to avoid landing on top of some mobs).
This isn't a completely new idea. It's basically what Guild Wars does with towns already (and theoretically outposts and mission areas, though most rarely have enough players to force a second instance). The number of players in an instance of a town is far less important than in an area where fighting occurs, of course. I've also seen this done in Infantry, which as a purely PvP game, was highly dependent on the number of players in a zone in order to function properly. But it's possible to refine the system of either game to work better for open-world content.
The key is to keep the population relatively balanced among the instances. It is essential to quickly go from the players roughly evenly divided among three instances to pretty evenly divided among four instances, or vice versa. This can for the most part be done without obstructing players simply by setting up the default way of distributing players among instances intelligently. So long as players aren't placed into an overcrowded or nearly empty instance for extended periods of time, most will simply accept their default instance.
Suppose, for example, that the game designers think that a zone ought to have n players per instance. Suppose furthermore that at a given time, there are k instances open. The game should keep k instances open so long as the total number of players in the zone stays between (k-2/3)n and (k+2/3)n. So long as this happens, any new players entering the area should be placed in whichever instance has the fewest players.
If the number of players exceeds (k+2/3)n, then it's time to open a new instance. Create the instance and it will immediately be the lowest population instance. All players entering the zone will be put in this new instance by default for a while. Player turnover, as some players leave an area while others enter it, will fill up the new instance pretty quickly.
If the number of players falls below (k-2/3)n, then it's time to close an instance. This is a little harder. Pick an instance to close (e.g., the lowest population one), and stop putting new players into that instance by default. After several minutes, notify players in that instance that it is closing down, and let them switch to a higher population instance if they prefer, but don't kick them out just yet. Don't block players from manually switching to the closing instance immediately, either. Let the playerbase in the closing instance dwindle for a while, but don't close it until all players leave, or perhaps kick out the last few stragglers after an hour or so.
This can be kind of rough when trying to go from one instance to two or vice versa. But even there, it's a far superior approach to having separate servers. It really only breaks down entirely when there aren't nearly enough players to fill one instance--in which case, the system would break down no matter how you distribute players among servers or instances. The transition will be very smooth when there is a larger number of instances, such as going from four instances to five or vice versa.
This would allow all players to play in an instance with the appropriate player density at nearly all times. More importantly, it would greatly facilitate grouping. If the playerbase is spread across 20 different servers, then on average, only 1/20 of the players who show up wishing to do the same quest as you will be allowed to group with you. With separate instances and an easy way for players looking for groups to communicate with those in other instances, every single player who wishes to do the same quest as you is eligible for the group. That means a new potential group-mate shows up 20 times as often, so you're not stuck waiting half an hour hoping that someone else will come along.
And most importantly, that can often be the difference between content that requires a group being viable or not. I don't have much objection to taking a couple minutes to get a group together. I object much more strongly to taking half an hour to get a group, especially if I'm only going to be on for 45 minutes in total. That would not only mean that more of the players who wish to do a given group quest will be eligible to group with you, but also that more players will come along wishing to do that group quest. Thus, the game would have more fun and less frustration. Unless, of course, you really, really hate PUGs.