Another thing I forgot to mention - I have a friend making an MMO that can handle over 500000 players off of a single server (Intel i7 CPU, 30mbps connection)... He does it by keeping most of the traffic peer-to-peer. Players discover who is nearby in the world, and then those players communicate directly without need for the server.
I believe even if the server allow and can sustain 3000 (1/10 of his claim) players in one area, I believe the players internet connection might not.
Let's say whenever you click, you send the server a structure describing that command - where in the world you clicked, what you clicked on, and what kind of click command you were giving (move/cast/shoot/etc):
struct PlayerInput
{
int32 clickPosX, clickPosY;
uint32 clickedObjectId;
uint16 commandType;
}; size = 14
A high level player might have something like 300 clicks per minute, which is 5 clicks per second, which makes 70Bytes/s or 0.56kbps player upload.
On the other end, if there's 30000 clients, that adds up to 16.8mbps of download on the server side.
Lets say that whenever the server gets a movement command, it starts moving that player towards the click location. It then sends every player in that local area an update, saying where that character is moving to, and when they will arrive.
This doesn't have to be sent to everyone in the world, just those players who can actually
see this character.
struct CharacterMovement
{
int32 posX, posY;
uint32 arrivalTime;
uint32 playerId;
}; size = 16
Lets say that even though there's 30k characters online, you can only see 20 of them at once. If every player is sending 5 movement clicks per second (everyone is spamming), and everyone can see 20 characters, then the server has to send to each client:
20 visible characters * 16 bytes per update * 5 updates per second = 1600Bytes/s = 12.8kbps
However, the server has to send that to 30000 clients, so the server upload = 45.7MB/s = 384mbps
From there you can tweak things -- lets say that the server ignores click-spamming, so only sends at most 1 position update per character per second. In that case, suddenly the client-side download is 2.6kbps and the server-side upload is 76.8mbps.
You still need extra bandwidth for sending player attribute updates (you lost 20HP!), spawning effects/items/projectiles, moving NPC's etc... But this scenario still sounds feasible for clients on 56k modems and a server with a 100mbps backbone!