Dark_samurai and lostclimate,

I don't think it's a unique case. Let's take some pretty typical numbers for an MMO:

Just as a hypothetical, say you have a modest-sized zone with 1,000 player characters. And like most MMOs, there are mobs of monsters that outnumber the players, perhaps 5,000 of them. And say each player is killing a monster every few seconds. Each time a monster is killed, it is removed from every client, and each time one respawns it is created on every client. The aggregate is that ent_create and ent_remove are being sent 1,000 / 3 = 333 times per second to 1,000 clients!

Our bandwidth tally per second is something like:
1,000 spawns * 1/3 seconds * 1,000 clients = 333,000 ent_creates
1,000 kills * 1/3 seconds * 1,000 clients = 333,000 ent_removes
6,000 entities * 3/second * 1,000 clients = 18,000,000 position updates

333,000 + 333,000 + 18,000,000 = 18,666,000 updates per second.

Now, I don't know the packet sizes offhand, but ent_create is considerably larger than a position update (because of player/monster statistics, etc.), but even if we take them as equal, making the entities invisible and limiting their position updates is only part of the battle.

If we limit entity updating like you suggested so that each client is only in range of 10 other players and 50 monsters, we get:
1,000 spawns * 1/3 seconds * 1,000 clients = 333,000 ent_creates
1,000 kills * 1/3 seconds * 1,000 clients = 333,000 ent_removes
60 entities * 3/second * 1,000 clients = 180,000 position updates

333,000 + 333,000 + 180,000 = 846,000 updates per second.

Which is a lot better. Though a connecting client still has to wait for 6,000 ent_creates to transfer. If ent_creates and ent_removes are sent only to clients in range, we get:

10 spawns * 1/3 seconds * 1,000 clients = 3,300 ent_creates
10 kills * 1/3 seconds * 1,000 clients = 3,300 ent_removes
60 entities * 3/second * 1,000 clients = 180,000 position updates

3,300 + 3,300 + 180,000 = 186,600 updates per second. And a connecting client only has to wait for 60 ent_creates to transfer.

From 846,000 to 186,600 is almost another magnitude reduction even assuming the packet sizes are equal. If server bandwidth is the limiting factor, that's another 10x as many clients that can connect, the difference between capping out at 500 or 5,000 clients per server. It's a huge difference in terms of 'lag.' So it's something that every large-scaled MMO has to do.

Yeah, it can be done with ent_createlocal, but these aren't really local entities. The server needs to create a unique pointer to reference them across all of the clients.